{"id":20048741,"url":"https://github.com/timotej979/automatic-virtual-meassurement-systems","last_synced_at":"2026-04-04T21:32:36.208Z","repository":{"id":109479438,"uuid":"608270225","full_name":"Timotej979/Automatic-virtual-meassurement-systems","owner":"Timotej979","description":"Full-stack application for real-time plant growth :seedling: monitoring using RPi","archived":false,"fork":false,"pushed_at":"2024-10-01T07:29:27.000Z","size":6748,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-01-12T20:42:01.646Z","etag":null,"topics":["asyncio","docker","docker-compose","go-fiber","golang","html5","nextjs","postgres","python","raspberry-pi","react","rest-api","tailscale-network","tailwindcss","typescript","website"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Timotej979.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-03-01T17:08:53.000Z","updated_at":"2024-10-08T11:21:28.000Z","dependencies_parsed_at":null,"dependency_job_id":"64f05c4d-11c0-464d-b2ec-0574e03dc70e","html_url":"https://github.com/Timotej979/Automatic-virtual-meassurement-systems","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Timotej979%2FAutomatic-virtual-meassurement-systems","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Timotej979%2FAutomatic-virtual-meassurement-systems/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Timotej979%2FAutomatic-virtual-meassurement-systems/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Timotej979%2FAutomatic-virtual-meassurement-systems/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Timotej979","download_url":"https://codeload.github.com/Timotej979/Automatic-virtual-meassurement-systems/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241478267,"owners_count":19969258,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["asyncio","docker","docker-compose","go-fiber","golang","html5","nextjs","postgres","python","raspberry-pi","react","rest-api","tailscale-network","tailwindcss","typescript","website"],"created_at":"2024-11-13T11:45:46.150Z","updated_at":"2025-12-30T19:14:38.058Z","avatar_url":"https://github.com/Timotej979.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003eAutomatic-virtual-meassurement-systems\u003c/h1\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"./docs/assets/logo.png\" style=\"border-radius: 50%;\"\u003e\n\u003c/div\u003e\n\n\u003cp\u003eThis is a custom solution for monitoring plant growth using an analog soil moisture sensor, DHT22 air temperature and humidity sensor, and a relay module for controlling the water pump. The system is designed to run on a Raspberry Pi, with a Python asyncio API, and is deployed using Docker. The Raspberry Pi is connected to the server via Tailscale Zero Tier VPN, and on the server side, there is a middleware Golang API that forwards all data to a PostgreSQL database. Additionally, there is a NextJS frontend server written in React and Typescript that serves a real-time website of the sensors that are connected to the Raspberry Pi.\u003c/p\u003e\n\n\u003cp\u003eBoth the RPi API and Server are forwarded through nginx reverse proxy for aditional customization and security.\u003c/p\u003e\n\n\u003ch2\u003eGetting Started\u003c/h2\u003e\n\n\u003ch3\u003eHardware prerequsites\u003c/h3\u003e\n\u003cul\u003e\n  \u003cli\u003eRaspberryPi 3/4 (These were tested and work, should also work for others by editing the .env files in `/Raspberry-pi` folder)\u003c/li\u003e\n  \u003cli\u003eAnalog soil moisture sensor (Tested with the simple capacitive one that is readily available)\u003c/li\u003e\n  \u003cli\u003eDHT22 sensor\u003c/li\u003e\n  \u003cli\u003eRelay module to work with RPi\u003c/li\u003e\n  \u003cli\u003eAnalog-digital-converter MCP3008 for the soil moisture sensor (or any equivalent that is compatible with *CircuitPython* library)\u003c/li\u003e\n  \u003cli\u003eBreakout board (With correct pinout to the sensors and ADC)\u003c/li\u003e\n\u003c/ul\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"./docs/assets/circuit1.jpg\" style=\"width: 70%;\"\u003e\n\u003c/div\u003e\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"./docs/assets/circuit2.jpg\" style=\"width: 50%;\"\u003e\n  \u003cimg src=\"./docs/assets/circuit3.jpg\" style=\"width: 46%;\"\u003e\n\u003c/div\u003e\n\n\u003ch3\u003eSoftware prerequisites\u003c/h3\u003e\n\u003cul\u003e\n  \u003cli\u003eDocker and Docker compose\u003c/li\u003e\n  \u003cli\u003eTailscale VPN (or any other viable VPN that connects RPI with the server)\u003c/li\u003e\n  \u003cli\u003eOptional software for non-containerized development:\n    \u003cul\u003e\n      \u003cli\u003eNext.js\u003c/li\u003e\n      \u003cli\u003ePostgreSQL\u003c/li\u003e\n      \u003cli\u003eNginx\u003c/li\u003e\n    \u003c/ul\u003e\n  \u003c/li\u003e\n\u003c/ul\u003e\n\n\u003ch3\u003eInstalling and running the code\u003c/h3\u003e\n\u003col\u003e\n  \u003cli\u003eClone this repository:\n    \u003cpre\u003e\n      git clone https://github.com/Timotej979/Automatic-virtual-meassurement-systems.git\n      cd Automatic-virtual-meassurement-systems\n    \u003c/pre\u003e\n  \u003c/li\u003e\n  \u003cli\u003eSet up Tailscale and make sure the Raspberry Pi and Server are connected to the same Tailscale network.\u003c/li\u003e\n  \u003cli\u003eBuild and run the Docker containers in respective folders (/Raspberry-pi and /Server):\n    \u003cpre\u003e\n      docker compose build\n      docker-compose up\n    \u003c/pre\u003e\n  \u003c/li\u003e\n  \u003cli\u003eNavigate to the frontend website that is proxied through nginx: \u003ca href=\"http://localhost:5001/dashboard\"\u003ehttp://localhost:5001/dashboard\u003c/a\u003e\u003c/li\u003e\n\u003c/ol\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"./docs/assets/dashboard.png\" style=\"border-radius: 50%;\"\u003e\n\u003c/div\u003e\n\n\u003ch2\u003eUsage\u003c/h2\u003e\n\n\u003cp\u003eOnce the system is set up and running, the sensors connected to the Raspberry Pi will begin sending data to the Python asyncio API, which will forward the data to the middleware Golang API on the server. The middleware API will then store the data in the PostgreSQL database. The frontend website will display the real-time data from the sensors, allowing you to monitor the plant growth and control the water pump using the relay module.\u003c/p\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"./docs/assets/arch.png\" style=\"border-radius: 50%;\"\u003e\n\u003c/div\u003e\n\nMore in-detail documentation is available in the PDF report in **/docs** folder currently in Slovene language.\n\nCode for server-side/raspberry-side is available in the respective folders **/raspberry-pi** and **/server**.\n\n\n\u003ch2\u003eContributing\u003c/h2\u003e\n\n\u003cp\u003eContributions are welcome! To contribute to this project, fork this repository and make your changes. Once you're ready to submit your changes, create a pull request.\u003c/p\u003e\n\n\u003ch2\u003eLicense\u003c/h2\u003e\n\n\u003cp\u003eThis project is licensed under the BSD-3-Clause License. See the LICENSE file for details.\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftimotej979%2Fautomatic-virtual-meassurement-systems","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftimotej979%2Fautomatic-virtual-meassurement-systems","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftimotej979%2Fautomatic-virtual-meassurement-systems/lists"}