Impianto di irrigazione con Raspberry Pi: piGarden, lo script di gestione (quinta parte)

Eccoci giunti alla quinta parte di questa serie di post in cui ho descritto come realizzare una centralina di irrigazione costruita attorno ad un Raspberry Pi.

Oggi vi presento lo script bash di gestione della centralina che ho realizzato. Con questo viene gestito l’apertura e chiusura delle elettrovalvole, il rilevamento della pioggia e l’eventuale interruzione di irrigamento in base alla condizione meteorologica.

Lo script molto fantasiosamente l’ho chiamato piGarden ed possibile scaricarlo da github https://github.com/lejubila/PiGarden.

Qui di seguito descrivo come installarlo sul nostro Raspberry Pi (Raspbian Jessie).

Innanzitutto occorre collegarsi via ssh sul Raspberry. Una volta giunti sulla propria home (/home/pi) è necessario installare git, del quale ci serviremo per scaricare lo script da github e le altre librerie da cui dipende:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install git

bene, una volta installato git procediamo scaricando piGarden:

cd
git clone https://github.com/lejubila/piGarden.git

in questo modo verrà creata la cartella piGarden che conterrà lo script piGarden.sh ed altre varie sottocartelle di cui vi parlerò più avanti.

Ora procediamo con l’installazione delle librerie e pacchetti necessari per fare funzionare piGarden: wiringPi, curl, gzip, jq.

Curl, Gzip, Grep, Sed, Ucspi-tcp:

cd
sudo apt-get install curl gzip grep sed ucspi-tcp

Jq:

cd 
sudo apt-get install flex -y 
sudo apt-get install bison -y 
sudo apt-get install gcc -y 
sudo apt-get install make -y 
sudo apt-get install libtool autoconf automake gettext autotools-dev -y 
sudo apt-get install dh-autoreconf -y 
wget https://github.com/stedolan/jq/releases/download/jq-1.5/jq-1.5.tar.gz
tar xfvz jq-1.5.tar.gz
cd jq-1.5
 
# Con questo comando verranno presentati diversi errori, non ci fare caso e procedi avanti tranquillamente
autoreconf -i    
 
./configure --disable-maintainer-mode
make
sudo make install

WiringPi:

cd
git clone https://github.com/WiringPi/WiringPi.git
cd WiringPi
git pull origin 
./build

Configurazione

Bene, adesso che abbiamo installato tutto il necessario possiamo provvedere a configurare piGarden. Per fare questo dobbiamo copiare in /etc il file di configurazione di esempio:

cd
sudo cp piGarden/conf/piGarden.conf.example /etc/piGarden.conf

Apriamo adesso il file di configurazione appena creato ed andiamo a modificare i parametri di configurazione come più ci fa comodo.

Innanzi tutto definiamo la tipologia di elettrovalvole che abbiamo utilizzato nel nostro impianto, bi-stabili o mono-stabili. Per fare questo scorriamo il file fintanto che non troviamo la definizione relativa a EV_MONOSTABLE. Impostando il valore ad uno imposteremo il supporto per le elettrovalvole mono-stabili, se invece imposteremo il valore zero, verrà impostato il supporto per le elettrovalvole bi-stabili:

# Elettrovalvole mono-stabili
EV_MONOSTABLE=1
 
# Elettrovalvole bi-stabili
EV_MONOSTABLE=0

Scorrendo ancora nel file di configurazione troveremo le seguenti definizioni:

# Numero totale di elettrovalvole
EV_TOTAL=6
 
# Definizione delle elettrovalvole
EV1_ALIAS="1" #
EV1_GPIO=17
EV1_NORAIN=1
 
EV2_ALIAS="2" #
EV2_GPIO=27
 
EV3_ALIAS="3" #
EV3_GPIO=22
 
EV4_ALIAS="4" #
EV4_GPIO=18
 
EV5_ALIAS="5" #
EV5_GPIO=23
 
EV6_ALIAS="6" #
EV6_GPIO=24

questa configurazione è già pronta per fare gestire sei zone (elettrovalvole) e per poter funzionare su di un Raspberry Pi B collegato ai vari moduli hardware come descritto nei precedenti post. Rimane soltanto da variare i nomi delle zone (alias) se quelli impostati di default non vi soddisfano. I nomi vanno assegnati alle variabili EV1_ALIAS, EV2_ALIAS, EV3_ALIAS, ecc.. e non devono contenere spazi.

Se invece volete diminuire o aumentare le zone gestite, dovete intervenire sulla variabile EV_TOTAL assegnandovi il numero totale delle elettrovalvole presenti nell’impianto, poi per ognuna di esse definite altre due variabili in cui indicare il nome della zona (alias) e la porta gpio dove è collegata l’elettrovalvola. La coppia di variabili dovrà rispettare la seguente nomenclatura, dove x indica il numero della zona che viene definita:

EVx_ALIAS=”Nome_zona”
EVx_GPIO=17
EVx_NORAIN=1

nella prima variabile viene definito il nome della zona, che dovrà contenere una stringa alfanumerica senza spazi, mentre la seconda indica la porta gpio su cui è collegata l’elettrovalvola della zona. La terza definizione indica che la zona non sarà soggetta a interruzione di irrigazione in caso di pioggia, se la definizione non viene inserita, la zona sarà soggetta alle condizioni meteo.

Nel caso in cui l’elettrovalvola venga gestita da una scheda di terze parti invece di essere collegata direttamente su un gpio del raspberry, nel parametro EVx_GPIO andrà inserito il nome dell’apposito driver più i parametri che questi richiede. Per maggiori informazioni su questo aspetto fare riferimenti al post “piGarden: gestione driver“.

Scorrendo ancora più in basso nel file di configurazione troviamo le seguenti definizioni:

# Definisci il servizio online da utilizzare per il controllo delle condizioni meteo, puoi scegliere openweathermap oppure wunderground
WEATHER_SERVICE="openweathermap"
 
# Parametri di openweathermap, definisce l'api key e il luogo per recuperare lo stato meteo online
OPENWEATHERMAP_KEY=""
OPENWEATHERMAP_LOCATION="q=Pieve%20a%20Nievole,it" # https://openweathermap.org/current
OPENWEATHERMAP_TZ="Europe/Rome" # Time zone
 
# Parametri di wunderground, definisce l'api key e il luogo per recuperare lo stato meteo online
WUNDERGROUND_KEY=""
WUNDERGROUND_LOCATION="IT/Pieve%20a%20Nievole" # http://www.wunderground.com/weather/api/d/docs?d=resources/country-to-iso-matching&MR=1
# 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 pioviuto viene bloccata l'irrigazione. Inserendo il valore zero nonviene eseguito nessun controllo.
NOT_IRRIGATE_IF_RAIN_ONLINE=86400
 
# 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 nonviene eseguito nessun controllo.
NOT_IRRIGATE_IF_RAIN_SENSOR=86400

Con i parametri sopra riportati possiamo configurare il controllo sulle condizioni meteorologiche per far in modo che venga evitata l’irrigazione in caso di pioggia. Come avevo spiegato nel post Impianto di irrigazione con Raspberry Pi: il sistema di rilevamento pioggia (terza parte) abbiamo a disposizione due tipi di controllo meteo: tramite le api di alcuni servizi online oppure, se l’abbiamo integrato nella centralina, tramite sensore hardware.

Nel file di configurazione è presente la variabile RAIN_GPIO che indica la porta gpio dovè verrà collegato il sensore hardware di rilevamento pioggia e naturalmente siete liberi di variarlo a vostro piacimento. Se non avete integrato il sensore hardware nella vostra installazione, dovrete impostata la variabile RAIN_GPIO senza valore per evitare rilevazioni errate da parte di piGarden, lo fate impostando la variabile in questo modo:

# Id del gpio usato per collegare il sensore di rilevamento pioggia
RAIN_GPIO=

Se decidiamo di utilizzare un servizio online, potremo scegliere tra OpenWeatherMap (gratuito) e Wunderground (a pagamento). Fatta questa scelta dovremo indicare il nome del servizio nella variabile WEATHER_SERVICE inserendo il valore openweathermap oppure wunderground.

Per completare la configurazione dovremo recuperare l’api key, che uno dei due servizi ci ha assegnato, e inserirla nell’apposita variabile di configurazione (OPENWEATHERMAP_KEY o WUNDERGROUND_KEY). Dovremo anche indicare la località di rifermento per la quale dobbiamo recuperare le condizioni meteo definendole in OPENWEATHERMAP_LOCATION o WUNDERGROUND_LOCATION. Nel file di configurazione di esempio è definita la località Pieve a Nievole. Per costruire la stringa che identifica la vostra località, sia OpenWeatherMap che Wunderground vi vengono in aiuto con appositi strumenti online.

Come ultima cosa dobbiamo indicare nella variabile NOT_IRRIGATE_IF_RAIN_ONLINE quanti secondi dovranno trascorrere dall’ultima pioggia per fare si che l’impianto di irrigazione riprenda ad irrigare in modo regolare. Il valore inserito di default è 86400 secondi, ovvero 24 ore. In questo modo se nelle ultime 24 ha piovuto la centralina interromperà l’irrigazione se in esecuzione oppure eviterà che questa si avvi se impartiremo il comando di apertura di una elettrovalvola.

Nel caso abbiate scelto di installare un sensore hardware (fate sempre riferimento al post Impianto di irrigazione con Raspberry Pi: il sistema di rilevamento pioggia (terza parte) per l’installazione e maggiori informazioni), similmente a come indicato prima, abbiamo a disposizione la variabile NOT_IRRIGATE_IF_RAIN_SENSOR nella quale dobbiamo indicare sempre il numero di secondi che dovranno passare dall’ultima pioggia che il sensore a rilevato, per far si che la centralina riprenda ad irrigare in modo regolare. Anche in questo caso il valore di default è di 24 ore.

Nel caso non volessimo eseguire nessun controllo sulle condizioni meteorologiche basterà assegnare il valore zero alle due variabili NOT_IRRIGATE_IF_RAIN_ONLINENOT_IRRIGATE_IF_RAIN_SENSOR.

Come già indicato più in alto è inoltre possibile escludere alcune zone dal controllo delle condizioni meteo in modo da non interrompere l’irrigazione in caso di pioggia. Un classico utilizzo potrebbe essere per l’irrigazione di zona al coperto. Per eseguire questa impostazione basterà definire il parametro EVx_NORAIN=1 dove x sarà il numero dell’elettrovalvola interessata.

Seguendo con la configurazioni troviamo i parametri relativi al socket server che espone le api per il controllo di piGarden via rete. Il socket server è utilizzato come canale di comunicazione con piGardenWeb, l’interfaccia web di controllo. Le variabili di configurazioni interessate sono le seguenti:

# Indirizzo ip sul quale il socket server rimane in ascolto. E' possibile impostare il valore 0 perché rimanga in ascolto su tutti gli indirizzi ip del sistema
TCPSERVER_IP="127.0.0.1"
 
# Porta tcp su cui il socket server rimane in ascolto
TCPSERVER_PORT="8084"
 
# Utente e password che i client devono utilizzare per stabilire una connessione tramite socket server
TCPSERVER_USER=""
TCPSERVER_PWD=""

Se avete intenzione di installare piGardenWeb e piGarden sullo stesso Raspberry potete lasciare tranquillamente i parametri sopra elencati con i valori di default. Se invece avete intenzione di installare piGardenWeb su un’altro hardware oppure di esporre le api del socket server in rete, consiglio di impostare un utente e password in TCPSERVER_USER e TCPSERVER_PWD. Per approfondire questo argomento consiglio di consultare i post piGarden 0.2 – Easter egg e piGarden v 0.4.0 e piGardenWeb v 0.3.0: novità relative alla sicurezza, schedulazioni, statistiche.

Altri due parametri che possono interessare sono LOG_FILELOG_FILE_MAX_SIZE che indicano rispettivamente la posizione del file di log che lo script genera e la dimensione massima che questo potrà avere. Una volta raggiunta questa dimensione il file di log verrà compresso e rinominato dando così spazio ad un nuovo file di log.

Le altre variabili STATUS_DIR, GPIO, JQ, CURL, WC, GZIP, MV, TR, CUT, TCPSERVER, CRONTAB, GREP, SED, READLINK, STAT contengono percorsi e nomi dei comandi di sistema utilizzati dallo script.

In fine sono presenti un altro insieme di variabili utilizzate per definire le porte gpio e gli stati da utilizzare per la gestione dell’alimentazione del elettrovalvole e per la connessione del sensore meteo.

Utilizzo dello script

Vediamo adesso come utilizzare lo script per gestire l’impianto di irrigazione.

Inizializzazione centralina

Prima di potere eseguire qualsiasi operazione la centralina deve essere inizializzata. Questa operazione configura nella giusta modalità le porte gpio ed eseguire la chiusura di tutte le elettrovalvole. L’inizializzazione avviene digitando il seguente comando:

/home/pi/piGarden/piGarden.sh init

Il mio consiglio è quello di inserire il comando nel crontab utente in modo che venga eseguito all’avvio del Raspberry Pi. Potete farlo fare direttamente a piGarden con il seguente comando:

/home/pi/piGarden/piGarden.sh set_cron_init

oppure manualmente digitando il comando crontab -e in modo da aprire il file di configurazione di crontab e inserite la seguente linea:

@reboot 	/home/pi/piGarden/piGarden.sh init

Apertura e chiusura delle elettrovalvole

L’apertura e la chiusura delle elettrovalvole avviene passando a piGarden.sh l’argomento open o close seguito dall’alias della zona come definito nel file di configurazione. Esempio:

/home/pi/piGarden/piGarden.sh open giardino_posteriore
/home/pi/piGarden/piGarden.sh close giardino_posteriore

in questo modo viene prima aperta e poi chiusa l’elettrovalvola relativa alla zona definita con il nome giardino_posteriore.

Se vogliamo schedulare l’apertura e la chiusura di questa zona, possiamo inserire i due comandi nel crontab utente similmente a come segue (digitate crontab -e per aprire il crontab)

10 21 * 6-9 * 	/home/pi/piGarden/piGarden.sh open giardino_posteriore
40 21 * 6-9 * 	/home/pi/piGarden/piGarden.sh close giardino_posteriore

in questo modo nella zona giardino_posteriore verrà avviata l’irrigazione alle ore 21:10 di tutti i giorni dal mese di giugno al mese di settembre e verrà fermata alle ore 21:40 dello stesso periodo.

Se non volete editare manualmente il crontab potete delegare a piGarden l’inserimento delle schedulazioni di avvio e chiusura utilizzando i seguenti comandi:

# Imposta una schedulazione crontab per l'apertura di zona alla data e ora specificata
/home/pi/piGarden/piGarden.sh add_cron_open alias m h dom mon dow
 
# Imposta una schedulazione crontab per la chiusura di zona alla data e ora specificata
/home/pi/piGarden/piGarden.sh add_cron_close alias m h dom mon dow

Per una maggiore approfondimento la gestione delle schedulazioni da linea di comando potete consultare il post piGarden 0.2 – Easter egg.

Controllo condizioni meteorologiche

Per fare si che venga gestito il ritardo e l’interruzione dell’irrigazione in caso di pioggia lo script deve interrogare costantemente il servizio online e/o il sensore hardware. Per fare questo andranno utilizzati uno o entrambi i seguenti comandi a seconda del sistema scelto:

/home/pi/piGarden/piGarden.sh check_rain_online  # Controllo pioggia online
/home/pi/piGarden/piGarden.sh check_rain_sensor  # Controllo pioggia da sensore

nel momento in cui invochiamo i due comandi qui sopra, questi in caso di pioggia scriveranno il timestamp corrente rispettivamente in /home/pi/piGarden/state/last_rain_online e in /home/pi/piGarden/state/last_rain_sensor. In questo modo lo script saprà la data e ora dell’ultima pioggia e gestirà l’apertura delle elettrovalvole nel modo opportuno.

Per fare si che lo script sia costantemente aggiornato sulle condizioni meteo dovremo schedulare nel crontab utente i due comandi visti sopra in questo modo:

*/3 * * * * /home/pi/piGarden/piGarden.sh check_rain_online 2> /tmp/check_rain_online.err
* * * * * /home/pi/piGarden/piGarden.sh check_rain_sensor 2> /tmp/check_rain_sensor.err

Anche qui se non volete definire manualmente i crontab, potete farlo fare direttamente a piGarden con i seguenti due comandi

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

Come ultimo passo, se vogliamo che un’irrigazione attualmente in corso venga interrotta in caso di pioggia, dobbiamo schedulare nel crontab utente questo ulteriore comando:

*/5 * * * * /home/pi/piGarden/piGarden.sh close_all_for_rain 2> /tmp/close_all_for_rain.err 1> /dev/null

oppure come segue per farlo inserire direttamente a piGarden:

/home/pi/piGarden/piGarden.sh set_cron_close_all_for_rain

Altri comandi

Lo script oltre a quelli già visti sopra, prevede altri parametri. Riporto qui sotto l’elenco completo:

# Inizializza le porte gpio, il sistema di alimentazione e chiude tutte le elettrovalvole
piGarden.sh init
 
# Apre un'elettrovalvola, se passato l'ulteriore parametro "force" forza l'apertura anche in caso di pioggia
piGarden.sh open alias [force]
 
# Apre un'elettrovalvola in modalità ritardata: 
# - minute_start indica dopo quanti minuti dovrà partire l’irrigazione; se viene indicato il valore 0 (zero), l’irrigazione partirà immediatamente
# - minute_stop indica quanti minuti dovrà durare l’irrigazione una volta avviata
# - force che è opzionale, se specificato, forza l’irrigazione anche in caso di pioggia
piGarden.sh open_in minute_start minute_stop alias [force]
 
# Chiude un'elettrovalvola
piGarden.sh close alias
 
# Visualizza l'elenco degli alias (nomi zone) configurati
piGarden.sh list_alias
 
# Visualizza lo stato di una elettrovalvola (1=aperta, 0=chiusa)
piGarden.sh ev_status alias
 
# Visualizza lo stato di tutte le elettrovalvole
piGarden.sh ev_status_all
 
# Visualizza un json contenente lo stato di tutte le elettrovalvole e altre informazioni di sistema
piGarden.sh json_status
 
# Controlla lo stato meteo dal servizio online e memorizza il timestamp se piove
piGarden.sh check_rain_online
 
# Controlla lo stato meteo dal sensore hardware e memorizza il timestamp se piove
piGarden.sh check_rain_sensor
 
# Chiude tutte le elettrovalvole se attualmente piove
piGarden.sh close_all_for_rain
 
# Chiude tutte le elettrovalvole, se viene passato anche il parametro "force" forza la chiusura anche delle elettrovalvole risultano già chiuse
piGarden.sh close_all [force]
 
# Avvia e ferma il socket server che espone le api di piGarden per essere comandato da terze parti
# Il soket_server viene utilizzato dall'interfaccia web piGardenWeb per interagire con piGarden
# Il parametro "force" forza la chiusura del socket server se già attivo
piGarden.sh start_socket_server [force]
piGarden.sh stop_socket_server
 
# Gestione schedulazione di apertura/chiusura delle varie zone
# per maggior informazioni consulta il relativo post
piGarden.sh add_cron_open alias m h dom mon dow [disbled]
piGarden.sh del_cron_open alias
piGarden.sh get_cron_open alias
piGarden.sh del_cron_open_in alias
piGarden.sh add_cron_close alias m h dom mon dow [disabled]
piGarden.sh del_cron_close alias
piGarden.sh get_cron_close alias

Conclusioni

Bene, siamo arrivati alla fine. Con questo concludo per adesso l’argomento. Per il futuro ho in progetto di realizzare un pannello web per la gestione dell’impianto, ma dato il poco tempo libero, prevedo che non riuscirò a rilasciarlo in tempi brevi.

Per qualsiasi dubbio o domanda sono a disposizione ……. alla prossima 🙂

124 pensieri su “Impianto di irrigazione con Raspberry Pi: piGarden, lo script di gestione (quinta parte)

  1. Ciao lejubila, complimenti per il tuo lavoro e sopratutto per la chiarissima spiegazione.
    Anche io ho un vecchio Raspberry PI B che sta facendo polvere in un cassetto.
    Sto finendo di ristrutturare casa e stavo pensando a come poter sfruttare il Raspberry.
    Avevo in mente una soluzione molto simile alla tua ma la differenza sostanziale è che io vorrei comandare (magari anche da remoto) i termostati ambiente dell’impianto di riscaldamento delle zone della mia abitazione.
    Ho visto altri progetti di termostati con sensori di temperature attaccati al raspberry e/o accensione e spegnimento della caldaia (nessuno di questi mi ha convinto); ho visto che in commercio vendono anche cronotermostati wifi a prezzi però secondo me folli.
    Vorrei creare comunque una cosa semplice: installare i classici termostati nelle varie zone dell’abitazione (impostati ai gradi desiderati) e poi poter dare tensione o staccare gli stessi termostati ambiente che comandano le elettrovalvole (elettrovalvole con micro a 220V) magari come dicevo da remoto o meglio ancora con una app sul cellulare.
    Gran parte del tuo lavoro mi sembra possa combaciare. Ho visto che per i moduli relè per le mie 7 zone di casa c’è anche questo articolo in amazon

    http://www.amazon.it/COLEMETER-Modulo-Canali-Arduino-Elettronica/dp/B00E370JAC/ref=pd_sim_147_2?ie=UTF8&dpID=51a1%2BrIC2tL&dpSrc=sims&preST=_AC_UL160_SR160%2C160_&refRID=01JW4HYESPRTGWVNNDFZ

    Il relè n. 8 potrei magari utilizzarlo per accendere o spegnere la luce fuori di casa (magari sempre da remoto).
    Ti volevo chiedere se secondo te il progetto è fattibile e volevo magari qualche consiglio sulla programmazione del Rpi (io non ne so proprio niente purtroppo di programmazione). Le elettrovalvole nel mio caso dovranno essere sempre in tensione o sempre staccato come pure la luce fuori casa (relè n. 8).
    Grazie. Ciao.
    Mirco

  2. Ciao Mirko,
    del tuo progetto non ben capito il raspberry pi cosa dovrebbe comandare: itermostati o le elettrovalvole ?
    Il linea di massima comunque penso non ci siano problemi di realizzazione se non riuscire a stendere tutti i cavi che collegheranno i termostati/elettrovalvole con i relè comandati dal raspberry.
    Il modulo dei relè dovrebbe andare bene, anche io avrei optato per un modello simile ma ormai ne avevo già acquistati 2 da 4.
    Per il resto se vuoi un aiuto per la programmazione ti do una mano volentieri.
    Ciao.

  3. Quando lancio il comando
    sudo apt-get install autotools -y
    ottengo
    E: Impossibile trovare il pacchetto autotools

    Sai come risolvere?
    Ciao e grazie. Ivano

  4. Ciao Ivano hai ragione il raspberry non ha il pacchetto autotool.
    Prova a sostituire il comando con questo

    sudo apt-get install libtool autoconf automake gettext

    fammi sapere se così funziona.
    David.

  5. L’installazione dei pacchetti indicati è riuscita, anche perchè c’erano già …
    Io per prova, prima di scriverti avevo installato autotools-dev (non so se c’entra …).
    Comunque alla fine ottengo sempre un errore facendo make (a proposito i 2 comandi che hai scritto su una sola riga “make sudo make install” vanno separati):
    src/builtin.c:1375:23: fatal error: builtin.inc: No such file or directory
    compilation terminated. …. e altro …

  6. Allora, ho rieseguito l’installazione di jq su un raspberry dove ancora non l’avevo fatto.
    I comandi giusti dovrebbero essere i seguenti:

    cd
    sudo apt-get install flex -y
    sudo apt-get install bison -y
    sudo apt-get install gcc -y
    sudo apt-get install make -y
    sudo apt-get install dh-autoreconf -y
    wget https://github.com/stedolan/jq/releases/download/jq-1.5/jq-1.5.tar.gz
    tar xfvz jq-1.5.tar.gz
    cd jq-1.5
    autoreconf -i
    ./configure –disable-maintainer-mode
    make
    sudo make install

    Fammi sapere se funziona.
    David.

  7. Mi ha dato qualche warning ma sembra funzionare …
    Ho dovuto correggere però il file di configurazione:
    # Posizione js
    JQ=”/usr/local/bin/jq”
    va aggiunto /jq e diventa
    # Posizione js
    JQ=”/usr/local/bin/jq/jq”

    Ti ringrazio e ti auguro buon anno!
    Ivano

  8. Ciao Ivano,
    ho corretto nel post le istruzioni di installazione di JQ. Comunque sia a me il path di installazione risulta corretto /usr/local/bin/jq

    Grazie e buon anno anche a te!
    David.

  9. A me l’installazione ha creato in /usr/local/bin una directory di nome jq contenente poi l’eseguibile jq.
    Dato che nel piGarden.conf la variabile $JQ indica il percorso dell’eseguibile (completo del comando) ho dovuto aggiungere come detto un ulteriore /jq.
    Così funziona, altrimenti da l’errore :
    -bash: /usr/local/bin/jq: E’ una directory

    Ciao. Ivano

  10. Ciao. Ho ordinato il relè (evviva – spero mi arrivi presto).
    Volevo chiederti una cosa. Ho letto che nel tuo progetto hai usato elettrovalvole bistabili per non lasciarle sotto tensione come le elettrovalvole monostabili. Quindi quando dai il comando di apertura e chiusura il relè fa chiudere il circuito per pochi secondi e poi ripassa nella posizione di circuito aperto?
    Funziona come un pulsante di un campanello o dell’apertura del cancelletto pedonale di casa tanto per capirci? (avevo in mente qualche altra autorizzazione in casa).
    Ciao.

  11. Si Mirco funziona come hai detto te, il comando di apertura fa chiudere il relè per mezzo secondo dopo di che viene riaperto. Il comando di chiusura funziona allo stesso modo solo che prima di chiedere il relè eseguo un’inversione di polarità della tensione applicata all’elettrovalvola.

  12. Ciao Lejubila, complimenti per questo progetto.
    Innanzitutto volevo sapere se posso contattarti in privato (mail) perchè ho molte domande da farti, sono uno studente universitario ed è sempre un piacere avere la possibilità di confrontarsi con persone più esperte. Come posso contattarti se possibile?
    Grazie in anticipo.

  13. Ciao Paolo,
    se vuoi chiedere qualcosa inerente a questo progetto qui é il posto giusto. Può usare i commenti del blog in modo che anche altre persone possano leggere.
    Comunque sia ti scrivo anche in privato in modo che possiamo contattarci direttamente.

  14. Ciao, scusami il disturbo ma ho visto che l’ultimo commento è del 30 gennaio, spero tu non abbia abbandonato questo bellissimo progetto che data la sua praticità e chiarezza nella guida mi ha spinto a provare a realizzarlo (è il mio primo “progetto elettronico”).
    Ti volevo chiedere se esiste una pagina riassuntiva o un pdf ancor meglio con tutte le guide fin ora realizzate e soprattutto chiederti se avevi avuto tempo in questi mesi di realizzare il pannello web per la gestione dell’impianto.
    Grazie di aver condiviso!
    Luca

  15. Ciao Luca,
    non ho assolutamente abbandonato il progetto. Purtroppo l’interfaccia web non è ancora pronta. Purtroppo a causa di mancanza di tempo non sono ancora riuscito a portarla a termine.
    Mi dispiace deluderti ma non esiste nessun post riassuntivo o pdf del progetto.

  16. Ci vorrebbero più ferie e tempo libero per tutti, questo è il problema 🙂
    Non mi è chiaro però come sono stati collegati i fili alle elettrovalvole e quindi al tuo sistema di irrigazione. Non dal punto di vista connessione (che è spiegato chiaramente sul tuo schema elettrico) ma proprio dal punto di vista pratico (i fili che escono dalla scatola dentro un tubo sono “volanti” prima di arrivare alle elettrovalvole?). Riesci cortesemente a fare una foto e postarla sul blog ad uso e informazione di tutti? Altrimenti anche inviarla alla mia email, come ti è più comodo.
    Grazie ancora della disponibilità a supporto di noi noob!
    Luca

  17. Ciao! Certo che sono interessato, sto provando a creare il tutto appena ho un pò di tempo!
    Grazie del nuovo upload (il link è alla quinta parte però), lo guardo subito.
    Luca

  18. Ciao,
    complimenti ottimo progetto. Se ti serve una mano sulla parte web possiamo vederla insieme.

    Francesco

  19. #Francesco,
    grazie per l’offerta. Attualmente sono quasi a termine dello sviluppo della dashboard. Una volta sistemata questa parte penso di pubblicare una prima versione.

  20. ciao lejubula,
    normale che quando lancio il comando:
    pi@raspberrypi:~/jq-1.5 $ autoreconf -i
    ottengo l’errore
    fatal: Not a git repository (or any of the parent directories): .git ?
    grazie
    Claudio

  21. Ciao @Claudio,
    ho riprovato anche io e anche a me da diversi messaggi come quello che hai indicato ma se vai avanti con le istruzioni indicate, la compilazione va a avanti senza problemi.
    Per terminale la compilazione di jq ci vorranno diversi minuti.

    Se continui ad avere problemi fammi sapere.

  22. Ciao,
    in effetti sembra funzionare tutto alla grande. Mi manca di recuperare l’hw necessario per eseguire definitivamente tutti i test. Ci aggiorniamo tra qualche giorno. Buona settimana

  23. Ciao lejubila,complimenti per il bel progetto. Sto seguendo la tua guida e vorrei sostituire il sensore di pioggia con un sensore di umidità del terreno poichè nel mio caso le piante sono al coperto. Vorrei fare in modo che il raspberry prima di far partire l’elettrovalvola controlli se il sensore è a valore 0 o 1 quindi se è umido il terreno non interviene viceversa irriga.
    Come posso fare per modificare il codice?
    Grazie mille

  24. Ciao #Arcangelo,
    penso che tu possa collegare il sensore di umidità al posto di quello del rilevamento pioggia e utilizzare piGarden così come è senza alcuna modifica. In questo modo piGarden penserà che sia piovuto invece che ci sia abbastanza umidità ma in realtà il risultato non cambia perché staccherà o non farà partire l’irrigazione.
    Se hai dubbi fammi sapere.

  25. Ciao ho provato ma purtroppo così facendo l’irrigazione partirebbe lo stesso all’orario impostato e si spegnerebbe in corso di irrigazione. Altrimenti pensandoci ci sarebbe il modo da crontab di fare un if else? Tipo se la variabile del sensore memorizzata ad un certo orario è 1 allora salta il comando di irrigazione se invece è 0 irriga?

    Grazie

  26. Ciao @Arcangelo,
    quello che dici tu è già previsto.
    Nel crontab deve essere inserito un comando che esegue il check del sensore ogni minuto. In questo modo memorizza lo stato del sensore e all’avvio dell’irrigazione prima di partire viene controllato questo stato e di conseguenza vene bloccata l’irrigazione se necessario.
    Per inserire il comando nel cron puoi farlo manualmente come indicato qui oppure puoi farlo con impartendo il seguente comando:
    ./piGarden.sh set_cron_check_rain_sensor

    Ci sono anche altri comandi che automatizzano l’inserimento dei cron. Li puoi vedere facendo partire lo script piGarden.sh senza parametri.

    Spero di esserti stato di aiuto.
    Se hai bisogno fammi sapere.

  27. Ciao, ho risolto con i problemi di installazione dello script!!tutto funziona!!
    Leggendo qui sopra fai riferimento allo stop in caso di pioggia come deve essere!!
    Ti ricordi che poco tempo fa ti avevo chiesto di poter spegner l’irrigazione se la pompa di calore è accesa?
    Si può sfruttare una cosa simile per fare quello che si diceva? cioè controllo lo stato di un pin ogni x secondi se il pin è chiuso la pompa è accesa di conseguenza sospende l’irrigazione parte il timer per x secondi (settabili), finiti riparte l’irrigazione!!
    Ciao
    Marco

  28. Ciao @Marco,
    come ti avevo risposto nei precedenti commenti mettere in pausa l’irrigazione per poi farla riprendere dal punto in cui era rimasta, non è possibile. Il motivo è perché piGarden sia per le schedulazioni e che per la funzione di avvio ritardato, si basa sui cron di sistema linux, ovvero un cron per l’apertura ed uno per la chiusura dell’elettrovalvola. Implementare una funziona di pausa in mezzo ai due cron diventa difficilmente realizzabile.
    Se invece ti basta fare in modo che l’irrigazione venga interrotta secondo me hai due possibilità:
    1. utilizzare l’attuale sistema di rilevamento pioggia che interrompe o non fa partire l’irrigazione per un periodo di tempo settabile a piacere; in questo modo dovresti sostituire il sensore di rilevamento e al suo posto collegare il contatto della tua pompa (o eventualmente collegarli in parallelo).
    2. se hai elettrovalvole monostabili potresti collegare il contatto della pompa ad un gpio in ingresso, inserire un relè a monte dell’alimentazione delle elettrovalvole. Con uno script che rimane in esecuzione controllarne lo stato della pompa e in base a questo aprire o chiudere il relè.

    Se hai valvole monostabili personalmente preferirei la seconda soluzione, almeno rimarrebbe inalterata la funzione di rilevamento pioggia.

    Spero di esserti stato utile.

  29. ciao al comando autoreconf -i
    sono apparsi degli errori:
    fatal: Not a git repository (or any of the parent directories): .git

    come mai?

  30. Ciao se provo a editare le zone e per esempio inserisco la dicitura
    zona 1
    zona 2 ecc

    il sistema va in errore. anche se scrivo “zona uno”
    va in errore, come mai?

  31. @Tiziano,
    se stai cercando di variare in nomi delle zone nelle variabili EV1_ALIAS, EV2_ALIAS, EV3_ALIAS, ecc…
    i nomi non devono contenere spazi.
    Per esempio, invece di “zona 1” puoi inserire “zona_1” in questo modo:
    EV1_ALIAS=zona_1

  32. Bene funziona.

    mi sono registrato sul sito e generato l’api.
    ho provato anche l’url ma nell’url mi appaiono i dati di tre città differenti, incluso il mio, è corretto?
    il problema è che sul mio web non appare nessun meteo, c’è scritto ultima pioggia online e sotto la scritta sconosciuto secondo te perchè?
    ho provato anche a mettere roma IY/Roma, e anche così’ non funziona.

    guarda se ho fato bene:

    # Definisce l’api key e il luogo per recuperare lo stato meteo online
    WUNDERGROUND_KEY=”QUI OVVIAMENTE CI SONO LE LE MIE API”
    WUNDERGROUND_LOCATION=”IY/Roma” # http://www.wunderground.com/weather/api/d/docs?d=resources/country-to-iso-matching&MR=1

    # 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=86400

    # 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

    # Indirizzo ip e porta di ascolto del socket server

    TCPSERVER_IP=”0″ #”192.168.1.245″ #”127.0.0.1″
    TCPSERVER_PORT=”8084″

    # Utente e password che i clients devono utilizzare per stabilire una connessione tramite socket server
    TCPSERVER_USER=””
    TCPSERVER_PWD=””

    # Con impostato il valore 1 non invia l’identificativi per statistiche di utilizzo
    NO_SEND_IDENTIFIER=0

  33. Ma per far funzionare l’interruzione dell’irrigazione con l’ausilio online non devo are nessun comando giusto?

    /home/pi/piGarden/piGarden.sh check_rain_online # Controllo pioggia online
    /home/pi/piGarden/piGarden.sh check_rain_sensor # Controllo pioggia da sensore

    ???

  34. @Tiziano
    per fare funzionare l’interruzione dell’irrigazione, nel crontab oltre ai comandi che già hai citato tu deve essere inserito anche quello relativo a close_all_for_rain:

    * * * * * /home/pi/piGarden/piGarden.sh check_rain_sensor 2> /tmp/check_rain_sensor.err
    */3 * * * * /home/pi/piGarden/piGarden.sh check_rain_online 2> /tmp/check_rain_online.err
    */5 * * * * /home/pi/piGarden/piGarden.sh close_all_for_rain 2> /tmp/close_all_for_rain.err 1> /dev/null

    Se non vuoi creare i cron manualmente puoi farlo in automatico dal piGardenWeb andando nel menu “Setup Iniziale” e cliccare sul pulsante “Esegui il setup”. In questo modo oltre ai cron appena indicati vengono creati anche quelli relativi all’inizializzazione della centralina e dell’avvio del soket server in fase di boot del raspberry.

  35. Ma in futuro potrebbe esserci l’implementazione di un bel pulsante rosso OFF?
    Una cosa che ho notato e che al riavvio del raspberry i rele’ si chiudono e poi riaprono per qualche secondo? è normale?

  36. Ciao @Tiziano,
    come ti dicevo nella precedente risposta, esiste già la possibilità di disabilitare le schedulazioni senza eliminarle quindi per ora, inserire un’ulteriore pulsante per disabilitarle/abilitarle mi sembra un doppione. Niente vieta che in futuro non possa implementarlo.
    In fase di avvio viene lanciata l’inizializzazione dei gpio e vengono chiuse tutte le elettrovalvole, questo per prevenire gpio che per default sono aperti e quindi lascerebbero aperte le zone lanciando l’irrigazione.

  37. ciao,
    Secondo me non sarebbe un doppione, perché il pulsante off che intendo io spegnerebbe tutte le valvole in un colpo solo, senza dover entrare in ogni zona.
    si potrebbe aggiungere un pulsante hardware con un. led rosso che se acceso indica che il gruppo relè non è alimentato?

  38. Ciao, volevo chiederti se si può sostituire il servizio meteo con un altro, mi spiego: io sono iscritto ad “openweathermap.org” ed ho la mia chiave, posso inserire nello script questo servizio al posto di quello indicato da te? i dati sono sempre in formato json, pensi debba fare altre modifiche?
    Grazie in anticipo

  39. Ciao @paolo,
    purtroppo al momento l’unico servizio meteo supportato è quello di Wundrground.
    Avevo comunque già pensato di generalizzare il codice in modo da supportare anche altri servizi.
    Non so però quando potrò implementare questa funzionalità.

  40. Ok, grazie per la risposta così rapida; mi iscriverò anche al servizio wunder, il tuo programma mi piace un mondo 🙂

  41. Ciao, ho visto questo tuo progetto e mi sono innamorato, ho già progettato ed acquistato tutte le componenti idrauliche ed elettriche, però cominciando a leggere della configurazione mi è sorto un dubbio.
    Nella configurazione definisci il tempo minimo (24h) dopo il quale le valvole riprendono la loro programmazione dopo aver piovuto, ma se volessi avere una valvola non regolata dalla pioggia e una si, avendo un giardino al esterno e uno coperto, come si potrebbe fare?
    Grazie anticipatamente

  42. Ciao @Roberto,
    attualmente quello che chiedi non può essere fatto. Posso però implementare questa nuova funzione per la prossima release. Darò modo di definire delle elettrovalvole non soggette alle condizioni meteo.

  43. @lejubila ti segnalo un’anomalia che sto riscontrando al boot del mio raspberry in merito alla entry “/home/pi/piGarden/piGarden.sh start_socket_server force” inserita nel cron tramite piGardenWeb–>init.

    Contenuto del crontab
    pi@raspberrypi:~/piGarden/log $ crontab -e
    # START cron init
    @reboot /home/pi/piGarden/piGarden.sh init
    # END cron init

    # START cron start_socket_server
    @reboot /home/pi/piGarden/piGarden.sh start_socket_server force
    # END cron start_socket_server

    dopo il boot
    pi@raspberrypi:~/piGarden/log $ sudo netstat -ntpl
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
    tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 876/mysqld
    tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 563/sshd
    tcp6 0 0 :::80 :::* LISTEN 832/apache2
    tcp6 0 0 :::22 :::* LISTEN 563/sshd

    il server piGarden non è presente, infatti, accedendo a piGardenWeb viene segnalato l’errore, eppure il file piGarden.log ha registrato
    Fri 27 Oct 19:07:55 CEST 2017 start socket server with pid 599
    Fri 27 Oct 19:07:55 CEST 2017 Run initialize
    Fri 27 Oct 19:07:56 CEST 2017 Solenoid ‘Zona_1’ close
    Fri 27 Oct 19:07:56 CEST 2017 Solenoid ‘Zona_2’ close
    Fri 27 Oct 19:07:56 CEST 2017 Solenoid ‘Zona_3’ close
    Fri 27 Oct 19:07:56 CEST 2017 Solenoid ‘Zona_4’ close
    Fri 27 Oct 19:07:56 CEST 2017 Solenoid ‘Siepe’ close
    Fri 27 Oct 19:07:56 CEST 2017 Rain sensor initialized
    Fri 27 Oct 19:07:56 CEST 2017 End initialize

    ed eseguendo il comando a mano ottengo
    pi@raspberrypi:~/piGarden $ ./piGarden.sh start_socket_server force
    Daemon is already running, use “./piGarden.sh stop_socket_server” to stop the service
    Daemon is started widh pid 1139

    e subito dopo
    pi@raspberrypi:~/piGarden $ sudo netstat -ntpl
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
    tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 876/mysqld
    tcp 0 0 192.168.0.223:8084 0.0.0.0:* LISTEN 1152/tcpserver
    tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 563/sshd
    tcp6 0 0 :::80 :::* LISTEN 832/apache2
    tcp6 0 0 :::22 :::* LISTEN 563/sshd

    adesso il server piGarden è presente e piGardenWeb funziona regolarmente.

    Ho provato più volte, il comportamento è sistematico.

    Da cosa pensi possa essere dovuto?

    Grazie.

    Ciao

  44. Ciao @Ivano,
    ho ricontrollato il codice e l’unica cosa che mi è saltato all’occhio è il commando nohup alla linea 875 di piGarden.sh ( https://github.com/lejubila/piGarden/blob/c048337056d6f85691fde77a1c951d34d80b8923/piGarden.sh#L875 ).
    Questo essendo inserito senza path potrebbe non venire trovato nel crontab in fase di boot. Potresti provare a modificare piGarden.sh inserendo il comando completo di path.
    Prova a fare questa modifica e fammi sapere se funziona.

  45. @lejubila ho modificato piGarden.sh sostituendo nohup con /usr/bin/nohup alla riga 875.
    Il risultato non è cambiato, per cui nel log piGarden.log il processo risulta essere avviato e se lo riavvio a mano effettivamente mi viene segnalato che il processo era già stato avviato, ma la home page di piGardenWeb segnala l’errore e nella lista ottenuta con il comando sudo netstat -ntpl non è presente.
    Grazie.
    Ciao

  46. @Ivano,
    ho verificato sul mio raspberry con raspbian jessie e ha me il problema non si verifica.
    Dovrei fare un po’ di debug ma senza riuscire a riprodurre l’anomalia mi risulta difficile capire dove sta il problema.
    Da una prima impressione sembra che non venga eseguita linea 875.
    Potresti provare variare la linea da così
    nohup $0 start_socket_server_daemon > /dev/null 2>&1 &
    a così
    nohup $0 start_socket_server_daemon > /tmp/pigarden-debug.txt &

    in questo modo l’output del comando dovrebbe venire redirezionato in /tmp/pigarden-debug.txt.
    Una volta fatto il boot controlla se in questo file trovi qualche messaggio di errore e fammi sapere.

    Grazie.

  47. @lejubila, fatto purtroppo il file in tmp viene creato, ma è vuoto.

    Grazie.
    Ciao

  48. @Ivano, mi spiace ma così non so come procedere. Quando ho un po di tempo posso provare tirare su un raspberry con la tua stessa configurazione e vedere se anche a me di presenta il problema.
    Chi os hai installato e quale versione ?

  49. @lejubila

    pi@raspberrypi:~/piGarden $ lsb_release -a
    No LSB modules are available.
    Distributor ID: Raspbian
    Description: Raspbian GNU/Linux 9.1 (stretch)
    Release: 9.1
    Codename: stretch

    pi@raspberrypi:~/piGarden $ cat /proc/version
    Linux version 4.9.41-v7+ (dc4@dc4-XPS13-9333) (gcc version 4.9.3 (crosstool-NG crosstool-ng-1.22.0-88-g8460611) ) #1023 SMP Tue Aug 8 16:00:15 BST 2017

    pi@raspberrynord:~/piGarden $ cat /etc/*-release
    PRETTY_NAME=”Raspbian GNU/Linux 9 (stretch)”
    NAME=”Raspbian GNU/Linux”
    VERSION_ID=”9″
    VERSION=”9 (stretch)”
    ID=raspbian
    ID_LIKE=debian
    HOME_URL=”http://www.raspbian.org/”
    SUPPORT_URL=”http://www.raspbian.org/RaspbianForums”
    BUG_REPORT_URL=”http://www.raspbian.org/RaspbianBugs”

    Nel frattempo cerco anche io di capire.

    Grazie.

    Ciao

  50. Ciao, si potrebbe avere le istruzioni aggiornate per l’installazione su RASPBIAN STRETCH

  51. @lejubila,

    ho modificato la linea 875 di piGarden.sh come segue:
    nohup $0 start_socket_server_daemon > /tmp/piGardenTest.log 2>&1 </dev/null &

    dopo l'avvio il contenuto del file /tmp/piGardenTest.log è:
    tcpserver: fatal: unable to bind: address not available

    Io credo che possa dipendere dal fatto che in questa versione (Strech) è stato ritardato, rispetto alla precedente (Jessie), l'avvio dei servizi di network.

    Ho provato anche a creare una unit di systemd, ma il risultato non cambia.

    Grazie.

    Ciao

  52. @lejubila,
    ti aggiorno sullo stato delle mie analisi.
    Premetto che, forse non ero stato sufficientemente chiaro, la mia configurazione prevede piGarden e piGardenWeb su due diversi raspberry sulla stessa LAN, per cui il valore del parametro TCPSERVER_IP, nel file piGarden.conf di piGarden, corrisponde all’indirizzo IP dell’interfaccia eth0 del raspberry su cui gira piGarden, corretto?
    Preciso che impostando l’indirizzo della loopback (127.0.0.1) tutto funziona regolarmente.
    A seguito delle verifiche svolte e dalla lettura del codice, credo che il problema non sia dovuto al comando “nohup” (linea 875 di piGarden.sh), ma dal comando “$TCPSERVER -v -RHl0 $TCPSERVER_IP $TCPSERVER_PORT $0 socket_server_command” (linea 8 di socket.include.sh), infatti, quando questo viene eseguito l’indirizzo IP della eth0 non è ancora disponibile per cui fallisce.
    Ho modificato socket.include.sh, aggiungendo il seguente codice subito prima del comando sopra indicato:

    count=1
    ipaddr=$(ip a s | grep -w inet | awk ‘{ print $2;}’)
    while [[ ${ipaddr} != *${TCPSERVER_IP}* ]] && [ $count -lt 10 ];
    do
    sleep 1
    (( count++ ))
    ipaddr=$(ip a s | grep -w inet | awk ‘{ print $2;}’)
    done

    L’utilizzo di count è per evitare di rimanere in un loop infinito, p.e. nel caso che il parametro TCPSERVER_IP fosse inizializzato con un valore errato.

    Dalle prove effettuate sembra che tale intervento risolva il problema.

    Ti chiederei di verificare la correttezza della mia analisi e dell’intervento effettuato (anche nella sintassi) e di apportare tutte le modifiche che ritieni necessarie.

    Grazie.

    Ciao

  53. @Andrea,
    di seguito le operazioni che ho eseguito io.

    – Ambiente:
    Raspberry Pi 3 model B con Debian Strech (ultimo s.o. rilasciato), Apache, MySql (MariaDB) e PHP7.

    – Installazioni:
    piGarden
    ———–
    – git clone https://github.com/lejubila/piGarden.git
    – sudo apt-get install ucspi-tcp
    – sudo apt-get install jq
    – modifiche nel file /etc/piGarden.conf
    –> GPIO=”/usr/bin/gpio”
    –> JQ=”/usr/bin/jq”
    –> valori degli altri parametri come indicato nella guida.

    piGardenWeb
    —————
    – git clone https://github.com/lejubila/piGardenWeb.git
    – sudo apt-get install php7.0-fpm php7.0-cli php7.0-mcrypt
    – modifica del file /etc/php/7.0/fpm/php.ini come indicato nella guida
    – definizione utente (piGarden) e database (piGarden) in MySql (MariaDB)
    – modifica del file /home/pi/piGardenWeb/.env come indicato nella guida
    – cd /home/pi/piGardenWeb
    –> sudo ./artisan key:generate
    –> sudo ./artisan migrate
    – sudo chown -R pi:www-data /home/pi/piGardenWeb/
    – cd /home/pi/piGardenWeb/
    –> sudo chmod -R g+w storage database
    – sudo cp /home/pi/virtualhost/apache/piGarden.conf /etc/apache2/sites-available/000-default.conf (nel mio caso è stato possibile in quanto al momento non erano presenti altri siti, altrimenti è necessario eseguire operazioni diverse)
    – sudo a2enmod rewrite
    – sudo systemctl restart apache2

    P.S. ovunque ho modificato il contenuto di un file ho sempre fatto una copia della versione originale aggiungendo l’estensione “.ori”.

    Ciao

  54. Ciao @Andrea,
    non ho ancora testato piGarden su Raspbian Stretch ma non dovrebbero esserci grossi problemi.
    In attesa di di istruzioni ufficiali puoi prendere spunto dalle note che gentilmente Ivano a inserito qui nei commenti.

  55. Ciao @Ivano,
    grazie per la tua analisi e il tuo feedback. Nella prossima versione (0.5.2) prenderò spunto dal tuo codice per correggere il problema.

  56. Grazie @ Ivano ho seguito le tue istruzioni e funziona
    io, utilizzando nginx ho dovuto modificare
    /etc/nginx/sites-available/default
    alla riga
    fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
    in quanto la versione di php da me installata è la 7.
    Grazie

  57. @lejubila
    Grazie anche a te per questo meraviglioso progetto.
    Con cosa modifichi le pagine web dell’interfaccia?

  58. Ciao lejubila trovo il tuo progetto veramente innovativo,premetto che sono solo un neofita,avrei intenzione di copiare letteralmente il tuo piGarden ma di utilizzare un sensore di umidità del suolo per attivare l’elettrovalvola…potresti aiutarmi?
    Ti ringrazio in anticipo
    Ernesto

  59. Ciao @Ernesto,
    attualmente il progetto non prevede l’utilizzo di sensori di umidità. Puoi però creare un tuo script che interroghi il sensore di umidità e di conseguenza fare partire o fermare l’irrigazione a tuo piacimento. Potresti utilizzare anche la gestione degli eventi di piGarden per impedire l’apertura di una o più elettrovalvole in vaso di troppa umidità.
    Spero di averti dato uno spunto per proseguire il tuo progetto.
    Se hai bisogno di chiarimenti non esitare a chiedere, vedrò come posso aiutarti.

  60. Ciao, prima di tutto ti faccio i complimenti per il programma che hai realizzato e che sto inizziando ad utilizzare; vorrei utilizzare il rilevamento pioggia ma purtroppo mi sembra di avere capito che Wundrground non fornisca più dati gratuitamente.
    Ci sono alternative? (oltre chiaramente al sensore)

  61. Ciao @Luca,
    effettivamente hai ragione, da poco tempo non è più possibile utilizzare le api di Wundrground gratuitamente.
    Ho in programma di implementare il supporto per openweathermap le quali, a differenza di Wundrground, possono essere utilizzate liberamente.

  62. ciao.. ho installato tutto come da tua guida
    dopo aver lanciato l init i led della scheda che prima erano un po accesi rossi.. si sono spenti.
    peccato che poi quando lancio l open 1 oppure close 1 non fa niente

    dove sbaglio?

  63. devo comandare 8 elettrovalvole monostabili, quindi posso utilizzare altri 2 GPIO per attivare gli altri 2 rele..
    ho provato però ad utilizzare sia il GPIo” sia GPIO3 oppure GPIO14 o GPIO15
    ma non funzionano..
    che devo fare?

  64. Ciao @gio,
    devi semplicemente definire le ulteriori zone nel file di configurazione similmente a come segue:

    EV7_ALIAS=”7″ #
    EV7_GPIO=14

    EV8_ALIAS=”8″ #
    EV8_GPIO=15

    Tieni presente che i gpio indicati nelle variabili corrispondono ad una posizionamento fisico diverso. Puoi utilizzare il seguente comando per vedere la corrispondenza
    gpio readall
    la colonna BCM indica i codici da inserire nel file di configurazione mentre la colonna Physical ti indica la posizione fisica sul raspberry del pin.

    Ricordati di indicare sempre nel file di configurazione il totale delle elettrovalvole nella variabile EV_TOTAL, che nel tuo caso sarà 8.
    Come ultima cosa, una volta completato la modifica del file di configurazione, riesegui l’inizializzazione delle zone con il seguente comando:
    /home/pi/piGarden/piGarden.sh init

    Spero che tutto funzioni per il meglio,
    fammi sapere.

  65. ciao grazie mille
    funiziona tutto dovevo modifcare anche la EV_TOTAL

    aspetto l aggiornameto del meteo che hai detto che stai implementando

    ottimo lavoro

  66. Devi registrarti su openweathermap e quindi recuperare la tua api key.
    Poi modifica il file di configurazione inserendo le seguenti righe e riempiendo i parametri di configurazione con la tua api key e la stringa corrispondente alla tua località.

    # Definisci il servizio online da utilizzare per il controllo delle condizioni meteo, puoi scegliere openweathermap oppure wunderground
    WEATHER_SERVICE=”openweathermap”

    # Parametri di openweathermap, definisce l’api key e il luogo per recuperare lo stato meteo online
    OPENWEATHERMAP_KEY=””
    OPENWEATHERMAP_LOCATION=”q=Pieve%20a%20Nievole,it” # https://openweathermap.org/current
    OPENWEATHERMAP_TZ=”Europe/Rome” # Time zone

  67. Ciao, intanto complimenti per il programma e per averlo messo a disposizione.. Avrei una domanda (forse stupida) per un problema che non riesco a risolvere: ho seguito la procedura, solo che ho provato ad accedere all’indirizzo Ip da un altro pc di casa ma mi appare il seguente errore :
    PiGarden server error

    stdClass Object
    (
    [description] => stream_socket_client(): unable to connect to tcp://localhost:8084 (Connection refused) at line 34 of file /home/pi/piGardenWeb/app/PiGardenSocketClient.php
    [code] => 0
    )

    Cosa potrebbe essere??
    Grazie mille
    Ciao
    Mirko

  68. Ciao @Mirko,
    questo errore si verifica quando piGardenWeb non riesce a connettersi al socket server gestito dallo script piGarden.
    Per lanciare il socket server puoi impartire il seguente comando:
    /home/pi/piGarden/piGarden.sh start_socket_server force

    per fare si che ad ogni avvio del raspberri venga eseguito il socket server pui inserire la schedulazione nel crontab impartendo il seguente coando:
    /home/pi/piGarden/piGarden.sh set_cron_start_socket_server

  69. Ciao, grazie per la rapida risposta, ecco dove è il problema allora… quando lancio quel comando mi da un errore, stasera appena arrivo a casa guardò il messaggio di errore e ricontrollo i passaggi precedenti.
    Un ultima cosa per il momento, come indirizzo TCP server, lascio 127.0.0.1 se voglio accedere da altri PC Windows?
    Grazie mille ancora?

  70. Ok, adesso grazie al tuo consiglio i messaggi si errore sono spariti e vedo la dashboard, solo che tutte le impostazioni che avevo modificato bel file conf.example non le vedo (nomi EV, servizio meteo etc)
    Dopo questa prometto che non ti rompo piu…
    Grazie ancora
    Ciao
    Mirko

  71. @mirko,
    tranquillo …. se posso aiutarti è un piacere.

    L’indirizzo del tcp server 127.0.0.1 serve per fare comunicare l’interfaccia web con lo script. Se entrambi i componenti sono sullo steso raspberry devi lasciare 127.0.0.1. Questo non c’entra niente con l’utilizzo dell’interfaccia web da altri pc. Quindi non devi cambiare assolutamente niente. Potrai accedere da qualsiasi pc a piGardenWeb puntando il browser all’indirizzo ip del tuo raspberry.

    Il file conf.example è solo un file di esempio. Come indicato nell’articolo, devi copiare quel file in /etc/piGarden.conf e modificare quest’ultimo.

  72. Ciao e grazie ancora, il passaggio mi è chiaro (spero) , il problema che quando lancio il comando:
    cd
    sudo cp piGarden/conf/piGarden.conf.example /etc/piGarden.conf
    Nella cartella ECT non trovo nessun file. Eppure quando lancio il comando non da nessun errore….

  73. OK, ho rifatto tutto dall’inizio.
    Adeso il file copiato ce l’ho nella cartella etc, solo che, dopo averlo modificato, non me lo fa salvare perchè dice”impossibile aprire il file per la scrittura”…..

  74. Probabilmente ti sei dimenticato di inserire il “sudo” davanti al comando per editare il file di configurazione.

  75. Grazie, ieri sera ho ricominciato nuovamente da capo, solo che adesso mi è devisamente tutto piu chiaro, in questi giorni ci ho smanettato un po e ora ho capito la logica….. Ultimsto tutto e tutto funzionante servizimeteo inclusi.. Ora che ho preso il via, voglio provare se ri riesce da smartphone (non sotto la rete wifi)
    Per il momento grazie mille e complimenti per il lavoro e supporto.
    Ciao
    Mirko

  76. oggi ho collegato il modulo rele … e non succede niente 🙁
    ho avuto questo errore “/home/pi/piGarden/piGarden.sh init
    /home/pi/piGarden/include/drv.include.sh: riga 86: /usr/local/bin/gpio: File o directory non esistente “

  77. @stefano,
    dal messaggio che viene visualizzato è chiaro che lo script non riesce a trovare il comando gpio.
    Questo comando è contenuto nel paccheto wiringPi, se non ll’hai installato fallo seguendo le istruzioni riportate nell’articolo.
    Se invece hai già installato wiringPi, probabilmente gpio si trova in un percorso diverso da quello riportato nel file di configurazione di piGarde. Ti basterà quindi modificare /etc/piGarden.conf con inserendo il percorso corretto nella variabile GPIO.

  78. avevo installato wiringPi ma per sicurezza l’ho rifatto, gpio si trova nel percorso specificato in piGarden.conf cosi come jq, wc, mv. cut, ecc ma continua a darmi errore con tutti i comandi piGarden.sh.
    continua anche a non aggiornarmi il file di log !

  79. ho dovuto reinstallare da capo pigarde e pigardeweb perchè si era sputtanata la sd
    mi ero salvato prima il file piGarden.conf

    dopo aver installato tutto quardo al dasboard di piGardenWeb e non mi mostra il meteo di openweathermap
    eppure la configurazione è giusta e come prima

  80. Ciao,
    ho installato tutto come da te riportato ma ora mi ritrovo con questo errore:
    pigarden.stream_socket_client(): unable to connect to tcp://localhost:8084 (Connection refused) at line 34 of file /home/pi/piGardenWeb/app/PiGardenSocketClient.php
    che cosa devo fare?
    grazie mille per il tuo aiuto
    Ciao

  81. Ciao, questa fase di inizializzazione però, sulle sole Elettrovalvole bistabili, le lascia aperte perché inizialmente sono chiuse, da un impulso di un sec aprendole, e le lascia così….

  82. Ciao lejubila
    Innanzitutto complimenti per il programma, volevo dirti che quando cerco di scrivere cd
    sudo cp piGarden/conf/piGarden.conf.example /etc/piGarden.conf
    non funziona sarei grato se mi rispondessi

  83. Ciao @Giorgio,
    se hai eseguito l’installazione correttamente deve funzionare.
    Di scrivere i comandi rispettando esattamente gli invii a capo:

    cd
    cp piGarden/conf/piGarden.conf.example /etc/piGarden.conf

    Comunque si tratta semplicemente di copiare nella cartella /etc il file piGarden.conf.example che si trova dentro piGarden/conf e di nominarlo piGarden.conf

    Se hai ancora problemi fammi sapere e indicami l’errore che ti compare dopo che impartisci i comandi.

  84. Scusa, i comandi corretti sono i seguenti

    cd
    sudo cp piGarden/conf/piGarden.conf.example /etc/piGarden.conf

    Ti verrà richiesta la password del tuo utente, naturalmente la dovrai inserire per potere concedere i privilegi tramite “sudo” per poter scrivere in /etc

  85. Ciao Lejubila,

    complimenti per il progetto, spero che mi possa risolvere il problema irrigazione nell’orto.

    Ho messo in piedi il sistema con un’elettrovalvola per fare i test, ma non riesco a far uscire l’acqua (il sistema non è in pressione). apro e chiudo le valvole senza errori ma niente.

    vorrei controllare se arriva corrente all’elettrovalvola ma non so di preciso cosa testare (nel caso posso mandare una foto)

    grazie mille
    Luca

  86. Ciao, lanciando il comando “git clone git://git.drogon.net/wiringPi”, esce fuori questo errore :
    “pi@piGarden:~ $ git clone git://git.drogon.net/wiringPi
    Cloning into ‘wiringPi’…
    fatal: unable to connect to git.drogon.net:
    git.drogon.net[0: 188.246.205.22]: errno=Connection refused
    git.drogon.net[1: 2a03:9800:10:7b::2]: errno=Network is unreachable”

    andando su git.drogon.net esce fuori questo errore : git.drogon.net is temporarily unavailable. Please look for alternatives for wiringPi, etc. -Gordon

    probabilmente il server non è raggiungibile.

    grazie

  87. Ciao @leonardo
    effettivamente il repository sembra essere giu.
    In alternativa installando il pacchetto di wiringPi contenuto su raspbian non dovrebbero esrci problema.
    Lo puoi fare con il seguente comando:

    sudo apt install wiringpi

  88. ciao, purtroppo con sudo apt install wiringpi a me non funziona. Chi mi può aiutare a risolvere il problema?
    Grazie

  89. Ciao @Federico,
    prova con i seguenti comandi:
    git clone https://github.com/WiringPi/WiringPi.git
    cd WiringPi
    git pull origin
    ./build

    Fammi sapere se funziona

  90. Ciao, grazie 1000, funziona benissimo, ora finalmente il sistema è installato e funzionante. avrei 2 domande:
    1- come faccio a vedere la versione installata ed essere sicuro che sia l’ultima?
    2- L’interfaccia web mi dice piGardenWeb v. 0.4.4 ma nonostante abbia configurato OpenWeatherMap non escono le previsioni come nel tuo screenshot. Forse devono attivare ancora le API key?

  91. Ciao @Federico
    1- per vedere che versione hai di piGarden ti basta eseguire lo script senza nessun parametro, in output insiema ad altre informazioni hai anche il numero di versione. Per sapere se hai l’ultime versione purtroppo l’unico modo è quello di controllare manualmente sule repository di github https://github.com/lejubila/piGarden/releases
    2- per fare visualizzare le condizioni meteo devi attivare le api key di OpenWeatherMap, è tutto spiegato qui https://www.lejubila.net/2015/12/impianto-di-irrigazione-con-raspberry-pi-pigarden-lo-script-di-gestione-quinta-parte/

  92. Per il meteo ho fatto tuoo e attivato le api seguendo il tuo articolo ieri, ma ad oggi nulla è cambiato , non esce nulla purtroppo.
    Mi diresti che script?
    Grazie

  93. Lo script è
    /home/pi/piGarden/piGarden.sh

    Perchè le condizioni meteo vengano visualizzate deve essere presente la schedulazione relativa al controllo delle condizioni meteo online.
    Per controllare se hai la schedulazione digita i comando
    crontab -l
    e controlla se sono riportate le seguenti righe

    # START cron check_rain_online
    */3 * * * * /home/pi/piGarden/piGarden.sh check_rain_online 2> /tmp/check_rain_online.err
    # END cron check_rain_online

    Eventalmente se mi fai avere il tuo file di configurazione di piGarden vedo di capire se c’è qualcosa che non funziona.

  94. Ciao, ora qualcosa è apparso ma non è corretto direi….
    Condizioni meteo (, 01/01/1970 01:00)
    Temperatura C°
    Percepita come — C°
    Direzione del vento Nord
    Raffiche — km/h
    Pressione hPa
    Umidità %
    Punto di rugiada — C°

  95. Guardando il file di configurazione che mi hai mandato ho trovato l’errore.
    Questa definizione è sbagliata:
    OPENWEATHERMAP_LOCATION="3167530"

    devi invece impostarla così:
    OPENWEATHERMAP_LOCATION="id=3167530"

    fatto questo devi attendere il che venga attivato il cron relatico al check delle condizioni meteo online (ogni 3 minuti).
    Se non vuoi attendere puoi lanciare il check manualmente con il seguente comando:
    /home/pi/piGarden/piGarden.sh check_rain_online

    Fatto questo dovresti vedere comparire le condizioni meteo e la zona di residenza sull’intefaccia web.

  96. Buonasera,
    sto testando la gestione eventi.
    Ho letto il blog, ma non ho trovato risposta al problema, peraltro in apparenza facilmente gestibile, ma …
    In /events/ev_open_after, creo uno script bash in cui scrivo un file.
    echo “test” > wrtTest.txt
    Cambio i privilegi. chmod 0755 wrtTest.txt e verifico che il propritario sia pi.
    Lo eseguo da console ed effettivamente ritrovo il file di testo.
    Lo elimino ed in dashboard apro e chiudo una valvola (sono valvole monostabili).
    Non succede nulla.
    Dove sbaglio? Ho anche provato a cambiare owner da ‘pi’ a ‘root’, ma non ottengo alcun risultato.
    Qualche consglio?
    L’idea è quella di inviare un msg su Twitter con uno script python, già funzionante.

    Grazie.
    Paolo.

  97. Ciao @Paolo,
    ho provato a fare il tuo stesso test e me funziona benissimo anche da interfaccia web.
    Il problema potrebbe risiedere nell’utente che esegue il processo “bin/bash ./piGarden.sh start_socket_server_daemon” che non ha i permessi per scrivere il file nella directory di piGarden.
    Oltre a questo ti consiglio di controllare i log piGarden per vedere cosa succede.

    Fammi sapere se riesci a risolvere.

  98. Grazie per la risposta.

    Ho provato a cambiare owner allo script piGarden.sh.

    Con owner ‘pi’, il log è questo:

    gio 23 apr 2020, 18.03.37, CEST socket connection from: 127.0.0.1 – command: status
    gio 23 apr 2020, 18.03.41, CEST socket connection from: 127.0.0.1 – command: open Orto_1
    gio 23 apr 2020, 18.03.41, CEST Solenoid ‘Orto_1’ open
    gio 23 apr 2020, 18.03.46, CEST socket connection from: 127.0.0.1 – command: close Orto_1
    gio 23 apr 2020, 18.03.46, CEST Solenoid ‘Orto_1’ close

    > Con owner ‘root’, il log è questo:
    gio 23 apr 2020, 18.04.17, CEST socket connection from: 127.0.0.1 – command: status
    gio 23 apr 2020, 18.04.38, CEST socket connection from: 127.0.0.1 – command: status
    gio 23 apr 2020, 18.04.57, CEST socket connection from: 127.0.0.1 – command: status
    gio 23 apr 2020, 18.05.02, CEST check_rain_sensor – now it’s raining (1587657902)
    gio 23 apr 2020, 18.05.18, CEST socket connection from: 127.0.0.1 – command: status
    gio 23 apr 2020, 18.05.32, CEST socket connection from: 127.0.0.1 – command: open Orto_2
    gio 23 apr 2020, 18.05.33, CEST Solenoid ‘Orto_2’ open
    gio 23 apr 2020, 18.05.36, CEST socket connection from: 127.0.0.1 – command: close Orto_2
    gio 23 apr 2020, 18.05.37, CEST Solenoid ‘Orto_2’ close

    gio 23 apr 2020, 18.05.38, CEST socket connection from: 127.0.0.1 – command: status

    Ho anche provato a cambiare l’owner dello script .sh con cui cerco di scrivere il file di testo, ma il risultato non cambia.

    Peraltro, l’owner di TUTTA la cartella sia di piGarden che di piGardenWeb, è ‘pi’. E questo credo sia corretto. Ma quando lancio piGarden.sh init, mi ritrovo i file ev1 … evn in /state con owner ‘root’.

    In questa condizione, piGardenWeb apre la valvola, ma non la richiude. Devo ripristinare l’owner ‘pi’ per far funzionare nuovamente tutto.

    Comincio pensare di dover reinstallare tutto quanto, partendo da un SD vergine.

    Per il momento ti ringrazio per la disponibilità.

    Paolo.

  99. Buongiorno a voi tutti! QUalcuno mi sa dire se si possono usare valvole monostabili e bistabili insieme?
    Grazie .
    Paolo.

  100. Ciao @paolo,
    si è possibile utilizzare elettrovalvole bistabili e monostabili insieme.
    Per le elettrovalvole mono stabili dovrai definire nel config il parametro EVx_MONOSTABLE=1

    Per esempio se l’elettrovalvola numero 3 è monostabile definirsi il parametro
    EV3_MONOSTABLE=1

    Tutte le elettrovalvole che non avranno questo parametro definito saranno considerate come bistabili.

  101. Ciao Lejubila,
    da qualche tempo uso con soddisfazione il tuo software per il mio piccolo giardino.
    Adesso, siccome sul Raspi 3 B girano anche 123solar e metern, volendo aggiornare tutto il sistema mi sto configurando un secondo Raspi che avevo di scorta.
    Sto partendo da un’immagine preconfigurata (rif. Flanesi) con os Raspbian Buster, per poi installare il tuo software, seguendo le indicazioni dalla presente pagina.
    Siccome l’articolo risale al 2015, non sono sicuro se usare le versioni indicate o gli aggiornamenti…
    per es. il pacchetto jq che indichi tu è la versione 1.5, mentre sul sito è presente la 1.6
    Cosa conviene fare? Ci sono dipendenze della versione 1.6 che non sono soddisfatte col resto del software indicato?

  102. Ciao @Salvatore,
    la guida anche se è del 2015 cerco di aggiornarla sempre ad all’uscita di ogni nuovare release.
    Puoi utilizzare questa guida per eseguire l’installazione, se poi devi attivate qualche funzione specifica consulta il rispettivo post.
    Personalmente non ho provato ma per quanto riguarda la versione di jq penso vada benissimo anche la 1.6.

  103. Ciao Lejubila
    Ho un quesito di porre, quando configuro le schedulazioni di apertura e chiusura ho un problema di programmazione, cioè mi spiego meglio.
    Programmo schedulazione di apertura, tempo di irrigazione, ora, giorni, mesi ect , poi programmo schedulazione di chiusura con gli stessi parametri della programmazione di apertura.
    Impostando il tempo di irrigazione a 10 minuti per entrambe le schedulazioni, l’impianto parte dopo 10 minuti e non si ferma più, l’altra notte e andato per tutta la notte.
    Dove sto sbagliando?

  104. @giorgio,
    sinceramente non ho capito bene la domanda.
    Per ogni elettrovalvola puoi programmare l’orario di apertura e l’orario di chiusura andando ad agire sulle schdeulazioni. Se vuoi fare durare l’irrigazione 10 minuti, devi programmare l’orario di chiusura 10 minuto dopo quello dell’apertura.

    Se invece vuoi avviare un’elettrovalvola una-tantum puoi intervenrire direttamente sul pulsante dell’elettrovalvola indicando fra quanto aprirla e la durata. Questa funzione però ti gestirà una sola irrigazione senza andarla a ripetere nel tempo.

    Spero di averti chiarito le idee.

  105. Quindi se ho capito bene…..schedulazione di apertura al ora X e schedulazione di chiusura al ora in cui voglio finisca l’irrigazione.
    Ma il mio problema è che all’ora in cui decido di farlo partire, l’irrigazione non parte, e mi parte invece all’orario della schedulazione di chiusura, e fin che non intervengo manualmente, l’irrigazione non si ferma.

  106. Ciao lejubila, sto provando a installare pigarden su raspberry p4 model B. Completo la procedura ma i comandi close e open che comandano i pin delle elettrovalvole non funzionano. Eseguendo
    init mi trovo correttamente le porte come out a 1, ma dando il comando di chiusura o apertura il loro stato non cambia. Solo nel caso in cui porto a zero una porta con gpio toggle riesco a riportarla a 1 con pigarden. Hai idea di dove sia il problema? Per fare pigarden hai utilizzato un ambiente di sviluppo o un semplice editor? Grazie Andrea

  107. Ho risolto, non essendoci collegato il sensore pioggia non mi azzerava il pin perchè risultava pioggia

  108. @giorgio, secondo me devi controllare i valore di eccitazione del relè per l’apertura e per la chiusura.
    Questi i parametri in piGarden.conf:
    # Stato di ingresso da assegnare al gpio per chiudere il rele
    RELE_GPIO_CLOSE=0

    # Stato di ingresso da assegnare al gpio per aprire il rele
    RELE_GPIO_OPEN=1
    Prova a vedere come sono i tuoi, e prova ad invertirli.
    ciao
    A

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.