One February day @piercirocaliandro and @giulio-sido asked me if I wanted to be a part of the deed... a few months later piantagione was born. This blog post is a celebration of these months of hard work that hopefully will bring us some fresh strawberries. Huge shoutout to everyone involved including @dglenx :)
The Planning. Planning a whole plantation ("piantagione" in Italian) is certainly something not to be taken lightly. This subprocess was the longest, it took over 1 and half month, and the output was the following bill of material:
The Buying. Well, photographic evidence is given as proof of the hard work:
Until we realized that the slab was too wide to fit in Pierciro's car and we had to add a cutter to the BOM.txt
The Making. As counter-intuitive as it may sound it was the least spread-in-time subprocess of the three. It took about 2 to 3 weeks and it involved building the enclosure, cabling the "nodes" (the loads and the pi), flashing every smart component with the appropriate code and writing the code itself.
Making the enclosure. I will let this picture speak for itself.
Making the code. Aaaand then there is me, @g0mb4ck. I'm the code, cables and electricity manager (lol). The whole code is available here.
More on the setup. The setup runs on a Raspberry Pi that acts as the main controller, coordinating several ESP microcontrollers that each handle different jobs around the farm. I've built separate modules for different functions:
The main software (piantagione-os) ties everything together and keeps all the components working in sync. The system continuously monitors the important stuff like temperature and humidity. When plants need water, it automatically triggers the irrigation system. If environmental conditions need adjustment, it handles that too. It is also season-aware, meaning it behaves differently in summer or in winter. It turns off the lights when it is night. I've set up a Grafana dashboard that shows all the farm data in real-time with charts and graphs. This lets me see patterns over time and spot potential issues before they become problems. I'm still actively working on improving the system - you can see regular updates across all the code repositories. The project uses different programming languages depending on what each part needs to do: Python for the main coordination logic, C++ for the microcontroller programming, and other languages as needed. Moreover, a telegram bot handles features like taking pictures remotely of the insides of the greenhouse, turning off every load as an emergency stop or turning everthing back on. Nonetheless, you can query the sensors through the telegram bot and get sensors data effectively.
More on piantagione-os. As I said before, it is the core orchestration system. It’s the main software running on the Raspberry Pi, acting as the “brain” of the setup. This repo handles communication with all the microcontroller nodes, schedules tasks (like irrigation), aggregates sensor readings, and manages data logging. It coordinates everything so the system operates as a cohesive unit and pushes data to the Grafana dashboard for visualization.
More on piantagione-esp01-relay-server. It is the relay controller firmware for an ESP-01 module. This microcontroller is wired to relays that can switch pumps, lights, or fans on and off. The code creates a simple server — a web API — so the central Pi can send commands to actuate devices. It ensures physical components are controlled safely based on farm logic defined in piantagione-os. Relays respond to ON/OFF commands, and also report their load type (lights, fan, etc...).
More on piantagione-esp8266-sensors. It is the sensor node firmware, specifically designed for ESP8266 boards. This code reads environmental data from sensors (temperature, humidity). It sends real-time readings over WiFi to the core system. The sensor node is designed to be power-efficient and reliable, reporting data at scheduled intervals or when thresholds are crossed.
More on piantagione-esp32-cam. Visual monitoring. Runs on an ESP32 with a camera module. The firmware sets up a basic web server or streams images/video that the main system can access. This allows for remote visual inspection of plant conditions, checking for anomalies, and assessing growth. It integrates visual feedback into the data dashboard.
More on piantagione-esp32-touchscreen. Local human-machine interface. This is for a touchscreen display wired to an ESP32-WROOM module (cheap yellow display). Its code manages rendering live status info, system alerts, and perhaps allows direct user controls (start/stop watering, view latest sensor readings, acknowledge system warnings). It offers a hands-on way to interact with the automation without needing remote login, making field-side operation easy.
More on the single repos very soon...