Skip to content

Latest commit

 

History

13 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LaboratorioDiMaking

README - Progetto Serra Intelligente Descrizione del Sistema

Questo progetto riguarda una serra intelligente che gestisce irrigazione, illuminazione e monitoraggio ambientale. I vari componenti del sistema comunicano tra loro tramite MQTT, un protocollo di messaggistica leggero. Il sistema è composto da:

Raspberry Pi: Gestisce la logica centrale, interagisce con Arduino e Node-RED.

Arduino (ESP32): Raccoglie dati dai sensori (umidità del suolo, livello dell'acqua, bilancia) e riceve comandi per attivare la pompa, il LED e il motore.

Node-RED: Gestisce i flussi di dati, fornisce interfacce di controllo e visualizzazione, invia comandi MQTT ad Arduino.

MQTT Broker: Facilita la comunicazione tra i vari componenti.

Architettura

Raspberry Pi esegue vari script Python e gestisce la logica tramite cron.

Arduino ESP32 legge i sensori e risponde a comandi MQTT (illuminazione, irrigazione, motore).

Node-RED collega i vari dispositivi, permettendo il monitoraggio in tempo reale e la gestione della serra.

Struttura dei File File Cron su Raspberry Pi

Il sistema si basa su cron per eseguire periodicamente alcuni script. I cron job sono configurati in /etc/cron.d/, /etc/crontab e via crontab -l.

Ecco i cron job principali:

autotune_once.py: Regola automaticamente i parametri in base ai dati storici.

weather_forecast_once.py: Aggiorna le previsioni meteo.

irrig_once.py: Gestisce l'irrigazione, attiva la pompa in base a vari parametri.

plan_once_v2.py: Pianifica l'uso delle luci e dell'irrigazione.

policy_once.py: Gestisce le politiche per irrigazione e illuminazione in base alle condizioni ambientali.

Configurazione di MQTT Configurazione di Arduino (ESP32)

L'ESP32 comunica con il Raspberry Pi via MQTT per ricevere comandi e inviare telemetria. Il codice Arduino (ESP32) si occupa di leggere i sensori e inviare i dati a Raspberry Pi. Inoltre, risponde a comandi per controllare la pompa, il LED e il motore.

L'ESP32 utilizza i seguenti topic MQTT:

Comandi:

serra/cmd/{bed}/relay/led per il controllo delle luci

serra/cmd/{bed}/relay/pump per il controllo della pompa

serra/cmd/{bed}/motor per il controllo del motore

Telemetria:

serra/telemetry/{bed} per inviare dati di telemetria

Node-RED

Node-RED è utilizzato per orchestrare i flussi tra i vari dispositivi. Alcuni flussi importanti:

Flusso di Irrigazione: Invia comandi a Arduino per attivare la pompa in base ai dati di umidità.

Flusso di Telemetria: Riceve i dati da Arduino e li pubblica su un dashboard o li registra nel database.

Flusso di Pianificazione: Gestisce i comandi per le luci e l'irrigazione tramite pianificazione oraria.

Il flusso di Node-RED si collega tramite MQTT al broker MQTT e ai dispositivi (Arduino, Raspberry Pi). Ogni flusso ha un nodo che invia comandi a uno dei dispositivi tramite un topic MQTT.

Comandi Cron e Loro Funzioni

I cron job eseguono vari script Python a intervalli regolari per automatizzare il funzionamento del sistema:

/etc/crontab e /etc/cron.d/ contengono le configurazioni cron.

autotune_once.py: Eseguito ogni ora, regola i parametri di irrigazione e luci.

weather_forecast_once.py: Scarica e aggiorna i dati meteo.

irrig_once.py: Eseguito ogni minuto per gestire l'irrigazione.

plan_once_v2.py: Gestisce le pianificazioni per l'illuminazione e l'irrigazione.

policy_once.py: Applica le politiche di gestione dell'irrigazione e dell'illuminazione.

Requisiti del Sistema

Hardware:

Raspberry Pi (connesso alla rete locale).

ESP32 (Arduino) con sensori e attuatori connessi.

Sensori: YL-69 (umidità suolo), bilancia HX711, NFC.

Attuatori: Pompa, LED, Motore (TB6600).

Software:

Raspberry Pi:

Mosquitto MQTT Broker

Python 3

Node-RED

Crontab configurato

Arduino (ESP32):

Firmware basato su Arduino IDE con librerie per MQTT, sensori e attuatori.

Node-RED:

Flussi configurati per ricevere dati MQTT e inviare comandi.

Installazione

Configurazione del Raspberry Pi:

Installare Mosquitto: sudo apt install mosquitto mosquitto-clients

Configurare cron job e assicurarsi che i file Python siano eseguibili.

Eseguire gli script di configurazione e pianificazione.

Configurazione di Node-RED:

Installare Node-RED: npm install -g --unsafe-perm node-red

Importare il file flows.json in Node-RED per configurare i flussi.

Configurazione di Arduino (ESP32):

Flashare il codice fornito su un modulo ESP32 utilizzando l'IDE Arduino.

Configurare correttamente il WiFi e i parametri di connessione MQTT.

Esecuzione

Raspberry Pi:

Il Raspberry Pi eseguirà automaticamente i cron job pianificati. È possibile monitorare i log in /var/log/serra-*.log.

Node-RED:

I flussi di Node-RED si avvieranno automaticamente al boot. È possibile monitorarli e modificarli tramite l'interfaccia web di Node-RED.

Arduino (ESP32):

Arduino invia telemetria al Raspberry Pi tramite MQTT e riceve comandi per l'irrigazione, il controllo delle luci, il motore e la pompa.

Debug e Monitoraggio

Logs Cron:

Monitorare i log per gli script Python in /var/log/serra-*.

Monitoraggio Node-RED:

Monitorare i flussi attraverso l'interfaccia web di Node-RED (di solito disponibile su http://<raspberry_ip>:1880).

Monitoraggio MQTT:

Usare mosquitto_sub per ascoltare i messaggi MQTT: mosquitto_sub -t "serra/telemetry/#"

Monitoraggio Arduino:

Monitorare la comunicazione seriale tramite il monitor seriale dell'IDE Arduino.

About

Progettazione e realizzazione di una serra intelligente autonoma

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages