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 git://git.drogon.net/wiringPi
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:

# Definisce l'api key e il luogo per recuperare lo stato meteo online
WUNDERGROUND_KEY=""
WUNDERGROUND_LOCATION="IY/Monsummano"   # 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 servizio online offerto da wunderground.com oppure, se l’abbiamo integrato nella centralina, tramite sensore hardware.

Se decidiamo di utilizzare il servizio di wunderground.com dobbiamo creare un nostro account in modo da avere una nostra api key da inserire nella variabile WUNDERGROUND_KEY. Per eseguire la registrazione e creare la vostra api key potete fare riferimento al post sopra menzionato.

Bene ora che abbiamo la nostra api key e l’abbiamo definita nel file di configurazione, dobbiamo indicare la posizione geografica in cui ci troviamo ed inserirla in WUNDERGROUND_LOCATION. La stringa da inserire dovrà contenere l’identificativo della nazione (IY per l’Italia) e la località geografica in cui vi trovate. Nel file di configurazione di esempio è riportata la città italiana Monsummano Terme. Per verificare che il nome della città che indicherete nella stringa di configurazione abbia un esito corretto, potete fare dei test con un browser inserendo l’url http://api.wunderground.com/api/TUA_API_KEY/conditions/q/IY/Monsummano.json (sostituendo TUA_API_KEY con la propria api key e IY/Monsummano con la località geografica in cui vi trovate). Se la stringa indicata sarà corretta, nella pagina del browser comparirà un json contenente le informazioni meteorologiche della vostra località.

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 🙂

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

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

    Grazie.
    Ciao

  2. @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 ?

  3. @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

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

  5. @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

  6. @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

  7. @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

  8. 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.

  9. 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.

  10. 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

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

Lascia un commento

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