piGarden 0.5.5: driver “remote” per implementare un’architettura master/slave: controllare più piGarden remoti tramite un’installazione principale

Con la versione 0.5.5 di piGarden è stato aggiunto il nuovo driver “remote”. L’utilizzo di questo driver permette di implementare una configurazione master/slave, dove avremo una installazione piGarden master che controllerà le zone configurate su altre installazioni piGarden slave.

Per esempio potremo avere da gestire due giardini disposti a diversi metri l’uno da l’altro. In questa situazione potrebbe diventare difficile utilizzare un unico Raspberry Pi su cui collegare tutte le elettrovalvole, magari proprio per la distanza dei due giardini, oppure perché le elettrovalvole da gestire sono troppe.

Una soluzione può essere quella di utilizzare un Raspberry per ogni giardino. Su ognuno vi sarà la propria installazione di piGarden per gestisce le proprie zone. Queste saranno due installazioni slave e verranno comandate da una terza installazione considerata master.

Per controllare le elettrovalvole delle installazioni slave, in quella master sarà necessario configurare le zone utilizzando il driver “remote”.

Consideriamo di avere i due giardini disposti nel seguente modo.

Giardino Anteriore:

  • Zona Destra
  • Zona Centrale
  • Zona Sinistra

 

Giardino Posteriore:

  • Zona Orto
  • Zona Serra
  • Zona Destra
  • Zona Sinistra

 

Per il Giardino Anteriore avremo un Raspberry con indirizzo ip 192.168.1.51 con il socket server piGarden in ascolto sulla porta 8084. La configurazione delle elettrovalvole sarà come segue:

EV1_ALIAS="Zona_Destra"
EV1_GPIO=17
 
EV2_ALIAS="Zona_Centrale"
EV2_GPIO=27
 
EV3_ALIAS="Zona_Sinistra"
EV3_GPIO=22

Per il Giardino Posteriore avremo un Raspberry con indirizzo ip 192.168.1.52 con il socket server piGarden in ascolto sempre sulla porta 8084. La configurazione delle elettrovalvole sarà come segue:

EV1_ALIAS="Orto"
EV1_GPIO=17
 
EV2_ALIAS="Serra"
EV2_GPIO=27
 
EV3_ALIAS="Zona_Destra"
EV3_GPIO=22
 
EV4_ALIAS="Zona_Sinistra"
EV4_GPIO=18

L’installazione master di piGarden controllerà tutte le zone delle due installazioni slave grazie alla seguente configurazione:

EV1_ALIAS="Giardono_Anteriore_Zona_Destra"
EV1_GPIO="drv:remote:REMOTE_ANTERIORE:Zona_Destra"
 
EV2_ALIAS="Giardino_Anteriore_Zona_Centrale"
EV2_GPIO="drv:remote:REMOTE_ANTERIORE:Zona_Centrale"
 
EV3_ALIAS="Giardino_Anteriore_Zona_Sinistra"
EV3_GPIO="drv:remote:REMOTE_ANTERIORE:Zona_Sinistra"
 
EV4_ALIAS="Giardino_Posteriore_Orto"
EV4_GPIO="drv:remote:REMOTE_POSTERIORE:Orto"
 
EV5_ALIAS="Giardino_Posteriore_Serra"
EV5_GPIO="drv:remote:REMOTE_POSTERIORE:Serra"
 
EV6_ALIAS="Giardino_Posteriore_Zona_Destra"
EV6_GPIO="drv:remote:REMOTE_POSTERIORE:Zona_Destra"
 
EV7_ALIAS="Giardino_Posteriore_Zona_Sinistra"
EV7_GPIO="drv:remote:REMOTE_POSTERIORE:Zona_Sinistra"

Come visto sopra le variabili EVx_GPIO dell’installazione master non riportano l’identificativi del gpio ma bensì una stringa che identifica l’installazione slave remota e l’alias della zona da controllare di quest’ultima.

Prendiamo la seguente definizione:

EV7_GPIO=”drv:remote:REMOTE_POSTERIORE:Zona_Sinistra

questa è composta dalle seguenti parti:

  • drv: indica che non viene utilizzato un gpio per pilotare l’elettrovalvola ma bensì un driver
  • remote: identifica il tipo di driver utilizzato che in questo caso è il driver nominato “remote
  • REMOTE_POSTERIORE: identificativo dell’installazione piGarden remota (slave)
  • Zona_Sinistra: alias della zona definita nell’installazione remota di piGarden da gestire

Oltre alla definizioni delle zone, nell’installazione master, dovremo definire anche i parametri di accesso al socket server delle installazioni slave. Lo faremo impostando una serie di parametri la cui nomenclatura dovrà iniziare con l’identificativo dell’installazione  remota utilizzato nelle definizioni delle zone remote (EVx_GPIO):

REMOTE_ANTERIORE_IP="192.168.1.51"
REMOTE_ANTERIORE_PORT="8084"
REMOTE_ANTERIORE_USER=""
REMOTE_ANTERIORE_PWD=""
 
REMOTE_POSTERIORE_IP="192.168.1.52"
REMOTE_POSTERIORE_PORT="8084"
REMOTE_POSTERIORE_USER=""
REMOTE_POSTERIORE_PWD=""

Una considerazione a parte va fatta per la gestione delle condizioni meteo. Queste dovranno essere attivate soltanto sull’installazione master, mentre su quelle slave dovranno essere disabilitate. Procediamo quindi a impostare i seguenti parametri nei Raspberry slave:

# Id del gpio usato per collegare il sensore della pioggia
RAIN_GPIO=
 
# Blocca l'irrigazione se l'ultima pioggia rilevata online è avvenuta nell'ultima quantità di tempo inserita.
# Il tempo è espresso in secondi. Quindi inserendo 86400, se nelle ultime 24 ore ha piovuto viene bloccata l'irrigazione. Inserendo il valore zero non viene eseguito nessun controllo.
NOT_IRRIGATE_IF_RAIN_ONLINE=0
 
# Il parametro è simile a quello precedente, il controllo però anziché essere fatto attingendo a wunderground, viene eseguito direttamente sul sensore se installato. Inserendo il valore zero non viene eseguito nessun controllo.
NOT_IRRIGATE_IF_RAIN_SENSOR=0

In oltre in fase di configurazione dei raspberry slave non sarà necessario abilitare i cron per il controllo della pioggia che solitamente vengono inseriti nel seguente modo:

/home/pi/piGarden/piGarden.sh set_cron_check_rain_online
/home/pi/piGarden/piGarden.sh set_cron_check_rain_sensor
/home/pi/piGarden/piGarden.sh set_cron_close_all_for_rain

Bene, spero che questa nuova funzione sia utile. Per ora è tutto. Se avete dubbi non esitate a chiedere chiarimenti commentando questo post.

8 pensieri su “piGarden 0.5.5: driver “remote” per implementare un’architettura master/slave: controllare più piGarden remoti tramite un’installazione principale

  1. Ciao Lejubila
    ho aggiornato il sistema all’ultima versione pur utilizzando una configurazione standard. Mi capita una cosa strana: quando accedo al sistema via web sia attraverso smartphone che pc, l’orario dell’ultima pioggia rilevata dal sensore della pioggia è il medesimo in cui ho eseguito l’accesso al sistema. ES: se accedo alle ore 12.01 del 16/06, il sensore della pioggia mi indica che l’ultima pioggia è stata alle 12.01 del 16/06. Cosa può essere?
    grazie
    Claudio

  2. Ciao @Claudio,
    il sensore hardware per il rilevamento della pioggia viene interrogato una volta al minuto (grazie al crontab). Puoi verificare dai log di piGarden ( in /home/piGarden/log/piGarden.log) se effettivamente il sensore rileva la pioggia. Se così fosse la causa potrebbe essere dovuta a varie cause: guasto del sensore, errato collegamento o configurazione.
    Fammi sapere cosa riesci a scoprire ….

  3. ciao
    leggo nell’articolo un errore di digitazione.
    Si parla del driver remoTe, ma è scritto diverse volte remoRe.
    ciao
    A

  4. Ciao Lejubila,
    ho provato a configurare un raspberry master e uno slave ma quando da piGardenWeb voglio far avviare un elettrovalvola mi restituisce questo errore: “pigarden.Remote rele close error:” mi daresti qualche idea per risolvere il problema?
    grazie molte. Alberto

  5. Ciao @Alberto,
    ti da questi errore perché l’installazione master non riesce a comunicare con quella slave.
    Sullo slave hai lanciato il socket server?
    Il socket server dello slave è impostato che accetti connessioni dalla scheda di rete?
    Lo imposti mettendo nel file di configurazione dello slave il parametro
    TCPSERVER_IP=”0″
    In questo modo il socket server rimane in ascolto sia su localhost che su tutte le schede di rete.

    Se continui ad avere problemi puoi farmi avere i file di configurazione di entrambe le installazioni.

    Fammi sapere.

  6. Grazie mille per la risposta,
    ho seguito le tue istruzioni e ho messo TCPSERVER_IP=”0″ cosa che prima non era tuttavia il problema permane.
    come posso farti avere i file di configurazione?
    Grazie ancora
    Alberto

  7. @Alberto,
    una volta cambiato il parametro TCPSERVER_IP devi riavviare il socket server con il comando
    /home/pi/piGarden/piGarden.sh start_socket_server force

    Se anche così non ti funziona ti scrivo in privato per farmi avere i file di configurazione.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.