Impianto di irrigazione con Raspberry Pi: piGardenWeb, il pannello web di amministrazione (settima parte)

pigardenweb dashboard

Dopo molti mesi finalmente sono riuscito a rilasciare l’interfaccia web di gestione della centralina del nostro impianto di irrigazione basato su Raspberry Pi.

Il pannello di amministrazione ci permetterà di comandare tramite browser da pc o smartphone, le diverse zone del nostro impianto di irrigazione, di programmarne le schedulazioni e di tenere sotto controllo le condizioni atmosferiche rilevate dal servizio online Wunderground.

L’applicazione web è basata sul framework Laravel 5.2 ed alcuni componenti di Backpack for Laravel. Gira sia su apache che nginx ed ha bisogno di un database per gestire le credenziali di accesso al pannello.

Per motivi di leggerezza in questo post verrà indicato come installarlo su nginx utilizzando sqlite come base dati.

PiGardenWeb comunica con piGarden, grazie al socket server implementato dalla versione 0.2 di quest’ultimo.

Installazione

Per funzionare piGardenWeb necessita di alcuni pacchetti tra cui php 5.5.9 o superiore. Se sul vostro Raspberry avete installato Raspbian 9 stretch, sul sistema sarà presente php 7. Di seguito sono riportate le istruzioni sia per Raspbian 9 stretch che per più vecchio Raspbian 8 jessie con php 5.

L’installazione può essere eseguita come segue:

# Per raspbian 8 jessie (php5)
sudo apt-get install nginx php5-fpm php5-cli php5-mcrypt php5-sqlite git
 
# Per raspbian 9 stretch (php7)
sudo apt install nginx php-fpm php-cli php-mcrypt php-sqlite3 git

Una volta installato i pacchetti php è necessario fare alcune modifiche al file /etc/php5/fpm/php.ini. Se avete Raspbian 9 con php7, il file da modificare è /etc/php/7.0/fpm/php.ini. Variate il file in modo da decommentare la linea relativa a cgi.fix_pathinfo al quale andrà assegnato il valore zero, come segue:

cgi.fix_pathinfo=0

Dobbiamo abilitare i moduli php sqlite e mcrypt:

# Per raspbian 8 jessie (php5)
sudo php5enmod mcrypt
sudo php5enmod sqlite3
 
# Per raspbian 9 stretch (php7)
sudo phpenmod mcrypt
sudo phpenmod sqlite3

A questo punto scarichiamo con git piGardenWeb nella propria home:

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

Configuriamo nginx prendendo il file di configurazione presente in piGardenWeb e personalizzandolo se necessario:

# Per raspbian 8 jessie (php5)
cd
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.original
sudo cp piGardenWeb/virtualhost/nginx/default /etc/nginx/sites-available/default
 
# Per raspbian 9 stretch (php7)
cd
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.original
sudo cp piGardenWeb/virtualhost/nginx/default-php7 /etc/nginx/sites-available/default

Creiamo adesso il file di configurazione di piGarden, creiamo e inizializiamo il database, generiamo l’application key (necessaria per laravel) e impostiamo i giusti permessi ai file:

cd 
cd piGardenWeb
cp .env.example .env
touch database/piGarden.sqlite
./artisan key:generate
./artisan migrate
sudo chown -R pi:www-data /home/pi/piGardenWeb/
sudo chmod -R g+w storage database database/piGarden.sqlite

Facciamo partire il server web nginx:

sudo service nginx restart

Adesso se non lo avete già fatto installiamo piGarden, lo script bash di gestione della centralina ed avviamo il socket server per farlo comunicare con piGardenWeb. Per maggiori sull’installazione e configurazione piGarden vi invito a leggere il post Impianto di irrigazione con Raspberry Pi: piGarden, lo script di gestione (quinta parte):

cd
git clone https://github.com/lejubila/piGarden.git
cd piGarden
./piGarden.sh start_socket_server force

A questo punto aprendo il browser e puntando a su http://indirizzo_ip_del_tuo_raspberry_pi dovresti visualizzare la home page di piGardenWeb:

Home - piGardenWeb

Cliccando sul link Registrati posto in alto a destra è possibile creare l’utente con cui loggarsi successivamente al pannello di amministrazione:

Registrazione - piGardenWeb

Creato il primo utente è possibile quindi loggarsi dall’apposita pagina di login:

Login - piGardenWeb

Una volta loggati ci troveremo sulla dashboard di piGardenWeb da dove potremo aprire e chiudere l’elettrovalvole delle varie zone, controllare lo stato dell’ultima pioggia e le attuali condizioni meteorologiche:

Dashboard - piGardenWeb

Una volta arrivati alla dashboard, dobbiamo eseguire il setup iniziale in modo che vengano creati i crontab necessari per l’inizializzazione della centralina all’avvio del sistema, per l’avvio automatico del socket server e per il monitoring delle condizioni meteorologiche. Per fare questo dovrete raggiungere il menu SETUP / Setup Iniziale e cliccare sul pulsante Esegui il setup (nel caso abbiate già installato piGarden in precedenza, prima di eseguire il setup iniziale dovrete rimuovere dal crontab tutte le eventuali schedulazioni già create relative alla centralina).

Setup iniziale - piGardenWeb

Una volta eseguito il setup iniziale potremo disabilitare la registrazione pubblica degli utenti andando a variare il file .env impostando la variabile REGISTRATION_OPEN con il valore false:

REGISTRATION_OPEN=true

Dal file .env sarà possibile anche variare i parametri smtp utilizzati per l’invio delle notifiche via mail e in particolare quelle per eseguire il reset della password:

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=465
MAIL_USERNAME=your_address@gmail.com
MAIL_PASSWORD=your_password
MAIL_ENCRYPTION=ssl
MAIL_FROM_ADDRESS=your_address@gmail.com
MAIL_FROM_NAME=piGardenWeb

Oltre a quanto visto sopra da piGardenWeb potremo anche forzare l’apertura delle varie elettrovalvole in caso di pioggia e di gestire le schedulazioni di apertura e chiusura di ogni elettrovalvola:

Zona - piGardenWeb

Schedulazione - piGardenWeb

Possiamo anche gestire, aggiungere o rimuovere gli utenti che potranno accedere al pannello di amministrazione:

 

Utenti - piGardenWeb

Bene, per ora è tutto.

Nel caso troviate difficoltà a configurare l’ambiente oppure problemi di funzionamento fatemi sapere nei commenti.

A presto.

86 pensieri su “Impianto di irrigazione con Raspberry Pi: piGardenWeb, il pannello web di amministrazione (settima parte)

  1. Ciao ancora non ho installato il tuo programma, ma sembra molto promettente,e conto di installarlo domani ,io attualmente sto usando un’altro programma “rpirrigate” per irrigare con il raspberry,un ottimo lavoro anche quello,unica pecca e credo manchi anche al tuo lavoro la possibilità di effettuare una irrigazione d’emergenza,la possibilità di lanciare un ciclo di irrigazione al volo senza dover settare tutte le zone con orario/data di inizio e fine,possibilità che danno certe centraline ahimè troppo costose,ma che rimane a mio avviso, molto utile in caso di estati asciutte e troppo calde.
    Grazie per il tuo lavoro

  2. Ciao @stafano e grazie per il tuo interessamento.
    Relativamente alla tua richiesta volevo capire cosa intendevi riguardo all’irrigazione di “emergenza”. Se intendi (ma non penso) potere avviare manualmente le varie zone, con piGarden questo si può fare. Se invece intendevi che l’impianto possa attivarsi in autonomia in base al clima circostante, questo purtroppo non è attualmente previsto.
    Non è detta però che non si possa fare magari in futuro.
    Volevo inoltre farti presente che il mio progetto funziona con elettrovalvole bistabili. A quanto ho potuto notare, rpirrigate gestisce un altro tipo di elettrovalvole. Ne consegue che piGaden potrebbe non essere compatibile con il tuo impianto.

  3. Ciao!

    Ho installato tutto da capo (ammetto che ero in fremente attesa di questo aggiornamento).

    Tutto liscio fino alla fase di registrazione dove mi restituice 2 errori SQL:
    1- PDOException in Connection.php line 457: SQLSTATE[HY000]: General error: 14 unable to open database file

    2-QueryException in Connection.php line 729: SQLSTATE[HY000]: General error: 14 unable to open database file (SQL: insert into “users” (“name”, “email”, “password”, “updated_at”, “created_at”) values (Marco, marco.xxxxxxxx@gmail.com, y$.pm9TrwOCwyMQ5.N44WcDOr6JbWBQkPd.jbBGnt85Uj0gbPUxSotK, 2017-04-24 18:24:00, 2017-04-24 18:24:00))

    Parrebbe che non riesca ad accedere al file DB ma i comandi per cambiare i permessi li ho lanciati e sono andati a buon fine.

    lanciando “ls -al” questo è il risultato:

    -rw-rw-r– 1 pi www-data 21504 Apr 24 18:16 piGarden.sqlite

    quindi penso che siano corretti. Cosa Può essere secondo te?

    Grazie in anticipo

  4. Ho risolto. In pratica bisogna dare gli stessi permessi del file anche alla cartella; in sostanza i comandi sono 2:

    sudo chmod -R g+w storage database/piGarden.sqlite
    sudo chmod -R g+w database

    Grazie ancora!!
    Marco

  5. Ciao @lejubila, grazie per la risposta,non ho la piu pallida idea quale sia la differenza tra le valvole bistabili oppure le altre valvole,per quello che ho capito il tuo programma e rpirrigate usano i gpio del raspberry per inviare un impulso ad un rele che apre e chiude le valvole,spero possa funzionare anche con le mie”non ho idea di che tipo siano,tornando al discorso principale per emergenza intendo il poter far partire al volo un ciclo di irrigazione su tutti i settori senza dover impostare,ora date e durata,in pratica sono sul prato vedo che un po di acqua non ci starebbe male,imposto la durata per ogni settore premo un pulsante e il ciclo parte una tantum,magari poi tra 3/4 giorni vedo la stessa cosa e lo ripeto,un irrigazione extra da poter lanciare velocemente.
    Spero di esser stato un po piu chiaro spiegarmi per iscritto non e il mio forte

  6. Ciao @Marco,
    sono contento che hai risolto il problema sui permessi del db.
    Correggerò le istruzioni indicando il comando mancante.

  7. Ciao @stefano,
    le valvole bistabili non necessitano di un’alimentazione continua per potere restare aperte, bensì basta che siano sottoposte ad una tensione per breve lasso di tempo perché possano assumere lo stato aperto o chiuso (a seconda della polarità impartita). Se ti interessa approfondire l’argomento ti invito a leggere il secondo di questa serie di post che tratta appunto l’argomento dell’elettrovalvola: https://www.lejubila.net/2015/10/impianto-di-irrigazione-con-raspberry-pi-l-elettrovalvola-seconda-parte/

    Per quanto riguarda invece l’irrigazione ad “emergenza” è una buona idea e pensandoci bene potrei provare ad implementarla nella prossima versione di piGarden e piGardenWeb.

    Se hai qualche altra idea o suggerimento fammi sapere.

  8. Rieccomi…credo di aver problemi riguardanti il cron, spiego: il serio iniziale lo fa “strano” nel senso che mi aspettavo di vedere qualcosa di diverso dalla homepage, ed effettivamente quando seleziono una zona mi carica un pezzo di pagina e poi restituisce questo messaggio:

    Whoops, looks like something went wrong.

    1/1
    FatalErrorException in 5652850bbf962319b8dd17613e9d46c2fbef81e9.php line 121:
    Class ‘app\CronHelper’ not found

    Ho dimenticato di installare qualcosa?

    Grazie come sempre

  9. Ciao Marco
    Puoi verificare che il file /home/pi/piGardenWeb/app/CronHelper.php abbia i permessi in lettura.
    Fammi sapere.

  10. rieccomi. nada. i permessi li avevo, ho perfino eseguito il chmod 777 su quel file ma non ho risolto.

  11. il problema potrebbe risiedere nel namespace indicato per la classe CronHelper:
    app\CronHelper
    anziché
    App\CronHelper

    ho fatto questa correzione.

    Per aggiornare fai così:

    cd
    cd piGardenWeb
    git pull

    In questo modo dovresti avere la versione più aggiornata.
    Spero che così si risolva il problema.

  12. Ciao @lejubila, ho provato ad installare piGardenWeb ma quando provo ad entrare mi da questo errore
    PiGarden server error

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

  13. Ciao @stefano,
    sembra che piGardenWeb non riesca a comunicare con piGarden.
    Hai aggiornato lo script piGarden all’ultima versione e avviato il socket server come indicavo nelle istruzioni ? Te le riporto qui di seguito:

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

    Fammi sapere.
    David.

  14. @stefano,
    dimenticavo…

    se avevi una versione più vecchia di piGarden e poi hai fatto l’aggiornamento all’ultima versione, prima di fare partire il socket server, ricordati di aggiornare il file di configurazione /etc/piGarden.conf con quello presente in /pi/piGarden/conf/piGarden.conf.example

  15. Ho fatto tutto come descritto nell’articolo, l’unica differenza dal tuo articolo qui sopra é che ho installato lo script come descritto nella sezione numero 5, perché se facevo come descritto qui sopra mi dava errore, non trovava il file. Conf, ho un dubbio le 2 installazioni vanno fatte in directory separate oppure nella stessa directory?

  16. Le installazioni devono essere eseguite tutte e due nella home dell’utente.
    In pratica in /home/pi (o del tuo utente) dovresti avere la cartella piGarden e piGardenWeb.
    Comunque il problema sembra essere che il socket server non parte. La versione di piGareden che lo implementa ha bisogno di grep, tcpserver e sed presenti nel sistema per funzionare.
    Se non l’hai fatto installali con il seguente comando:
    sudo apt-get install grep sed ucspi-tcp

    Devi anche aggiornare il file di configurazione come segue aggiungendo le righe relative al socket server:

    # Indirizzo ip e porta di ascolto del socket server
    TCPSERVER_IP=”0″ #”192.168.50.247″ #”127.0.0.1″
    TCPSERVER_PORT=”8084″

    Devi anche aggiungere le definizioni dei percorsi, come segue, se nel tuo sistema sono diversi variali come necessario:

    # Posizione gpio
    GPIO=”/usr/local/bin/gpio”

    # Posizione js
    JQ=”/usr/local/bin/jq”

    # Percorso curl
    CURL=”/usr/bin/curl”

    # Percors wc
    WC=”/usr/bin/wc”

    # Percorso gzip
    GZIP=”/bin/gzip”

    # Percors mv
    MV=”/bin/mv”

    # Percorso di tr
    TR=”/usr/bin/tr”

    # Percorso di cut
    CUT=”/usr/bin/cut”

    # Percorso tcpserver
    TCPSERVER=”/usr/bin/tcpserver”

    # Percorso cron
    CRONTAB=”/usr/bin/crontab”

    # Percorso grep
    GREP=”/bin/grep”

    # Percorsp sed
    SED=”/bin/sed”

    # Percorso readlink
    READLINK=”/bin/readlink”

  17. Ciao @lejubila, innanzitutto complimenti per il tuo lavoro.
    Purtroppo per me l’ho scoperto un po’ troppo tardi: (mi ricollego a quanto detto qui nei commenti con Stefano) mio padre ha gia’ acquistato le elettrovalvole e sono a 24v (non bistabili), ci sono possibilita’ che il tuo sistema funzioni comunque e/o sia adattabile in qualche modo?

  18. Ciao @Francesco,
    adattare lo script piGarden per funzionare con elettrovalvole non “bistabili” dovrebbe essere relativamente semplice. Il problema è che io non ho l’hardware su cui lavorare e verificare il funzionamento, in più è da tenere presente che gli schemi di collegamento presentati nei post precedenti sarebbero in parte diversi.
    Comunque sia se hai voglia di sperimentare, dato che te hai l’hardware, io sono disposto a collaborare per adattare il progetto.
    Fammi sapere.

  19. Ciao che bello se adatti lo script, per il test se ti serve ci sono anche io, ma non credo sia necessario avere le valvole per poter testare il funzionamento, basta che colleghi il raspberry ad un relè e verifichi sul relè la corretta apertura e chiusura, tanto sala lui che poi gestisce la valvola. Ciao

  20. Ciao, quando lancio il comando ./piGarden start_socket_server force mi dice -bash: ./piGarden: No such file or directory ovviamente dalla cartella piGraden come descritto nella guida!!
    Ciao

  21. Ciao, grazie per la risposta!!
    Inserendo la riga come da te riportata mi ritorna l’errore: config file not found in /etc/piGarden.conf
    Ciao e grazie

  22. Ciao @marco,
    come indicato sul post devi installare correttamente lo script piGarden per fare funzionare piGardenWeb. In questo post trovi le istruzioni.
    Comunque per il problema specifico devi copiare il file di configurazione /home/pi/piGarden/conf/piGarden.conf.sample in /etc/piGarden.conf

  23. Ciao grazie per la dritta!! Non mi sono accorto di quella parte ops!!
    Ora mi trovo davanti un altro problema!! Sto installando lo script e sono arrivato alla riga cd jq-1.5 poi autoreconf -i e mi restituisce fatal: not a git repository ( or any of the parent directories): .git
    Grazie

  24. Quando dai il comando “autoreconf -i” assicurati di essere dentro la directory jq-1.5
    Il problema dovrebbe essere quello.

  25. ho provato un update di Pigardenweb e come per magia è apparsa la località nel meteo!

    grazie!

  26. Ciao inanzitutto complimenti per l’ottimo lavoro svolto volevo chiederti io utilizzo solo 3 gpio perchè nel piGardenWeb me ne escono 4 (l’ultimo è senza nome e sempre in funzione),poi altro problema non riesco a visualizzare il meteo online(altra domandone come faccio ad inserire gli spazi nello scrivere il nome del mio paese )
    ultima domanda dove tro il file .env impostando la variabile REGISTRATION_OPEN
    grazie

  27. Ciao @giuseppe,
    per alcuni dei tuoi dubbi ti consiglio di leggere questo post, è un po vecchio ma indicativamente viene spiegato come configurare piGarden.
    Comunque cerco di rispondere alle tue domande:
    – per definire il numero di elettrovalvole gestite devi cambiare valore alla variabile EV_TOTAL che trovi in /etc/piGarden.conf
    – per fare visualizzare il meteo online devi registrarti al servizio web wunderground e configurare piGarden per la gestione del meteo online, trovi tutto spiegato qui e qui
    – gli spazi nel nome del paese nella variabile WUNDERGROUND_LOCATION li fai con %20, per esempio Pieve a Nievole andrà inserita Pieve%20a%20Nievole
    – il file .env lo trovi in /home/pi/piGardenWeb, ricordati che i file che iniziano con un punto sotto linux sono file nascosti quindi può essere che ti sia sfuggito per questo motivi

    Se hai altri dubbi fammi sapere.

  28. Mi aggiungo alla lunga lista di complimenti meritatissimi per il lavoro fatto. Davvero incredibile. Mi accingo ad acquistare tutto il necessario per “provare” sul campo il tuo lavoro e ti faccio un paio di domande: in caso di 10 o più zone da irrigare ci sarebbero problemi? Serve una versione di raspberry con più gpio? Utilizzando EV monostabili potrei sfruttare i due relè non più usati per l’inversione della polarità in modo da comandare 8 zone?

    Grazie ancora!

  29. Ciao @acitre,
    ti ringrazio per i complimenti.
    Relativamente alla tua installazione, con un raspberry pi 2 o 3 hai abbastanza gpio per gestire le dieci zone.
    Di seguito ti riporto lo schema dei gpio del mio raspberry pi 3 ottenuto con il comando “gpio readall” di wiringPI.

    Gpio RPi 3

    Comunque sia, come hai già detto tu, puoi anche utilizzare elettrovalvole monostabili in modo da recuperare due gpio.

    Per qualsiasi problema scrivi pure.

  30. Quindi nel tuo programma non c’è un limite di zone a livello software. Il limite è puramente hardware dettato dal numero di porte gpio. Basta mappare tutto correttamente nel file di configurazione ovviamente.

    Grazie mille anche per la disponibilità!

  31. Ho installato e configurato tutto… Che dire uno spettacolo! Mi rimane solo un dubbio: assegnando un indirizzo ip statico al raspberry accedo alla dashboard di piGarden dal PC collegato ovviamente allo stesso router ma non capisco perché se provo ad accedere a quell’indirizzo ip dallo smartphone (ovviamente sempre sotto la stessa rete) il browser mi restituisce un errore (“impossibile raggiungere il sito” con chrome) … Sarebbe comodo non dover accendere ogni volta il PC! … Da cosa può dipendere? Quell’interfaccia web non è compatibile con gli smartphone? … Anche perché il passo successivo che vorrei fare è passare per un servizio tipo opendns per accedere a piGardenWeb da internet!!! Con lo smartphone ovviamente! 😀

  32. Come non detto, sono stato stupido io… Il problema era l’extender Powerline. Il raspberry era collegato da una parte, il telefono al wifi dell’altra e per qualche motivo “non si vedevano”. Mi sono spostato sulla rete wifi del Powerline dove era collegato anche il raspberry e tutto risolto.

  33. Messo tutto online con servizio no-ip. Grazie ancora per il lavoro che hai fatto! Impagabile! … Ora non mi resta che cominciare a scavare per passare i tubi! XD

  34. Ciao, sto cercando di installare sul raspberry pi 3 mod.b la gestione via web, mentre per quanto rigurada l’installazione di piGarden, e’ andato tutto a buon fine, con questa sto avendo dei problemi dopo la generazione delle chiavi, probabilmente il cambio di directory e’ dovuto al fatto che ho installato il tutto dando il comando “sudo -s” durante sia la fase di installaizone di piGarden che la versione Web;

    col comando “artisan migrate” da il seguente errore
    [InvalidArgumentException]
    Database (/home/pi/piGardenWeb/database/piGarden.sqlite) does not exist.
    infatti non dovrebbe puntare li ma sotto /root/piGardenWeb/database/piGarden.sqlite solo che non so dove andare a cambiare questo parametro.

  35. Ciao @Gianluca,
    il percorso del database è definito nel file
    /root/piGardenWeb/.env

    Fammi sapere se così risolvi.

  36. @lejubila di fatto avendo spostato la directory da “home/pi/~~~” a “root/”
    ho il problema che tutte le volte che va a scrivere il file log sbaglia la directory, la conseguenza e’ il seguente errore : “./piGarden.sh: line 259: /home/pi/piGarden/log/piGarden.log: No such file or directory”
    non so se sia piu’ conveniente rifare tutta l’installazione o cambiare su piGarden.sh “echo -e “`date`\t\t$1″ >> $LOG_FILE” e poi di conseguenza anche eventuali altri riferimenti che portano allo stesso nome della directory, a fronte poi anche di un eventuale update del programma, che mi riporterebbe allo stesso problema.

    l’altro problema che mi trovo nella versione web e’ nel server:
    se mi collego all’ip del raspberry mi dice “404 Not Found” “nginx/1.10.3”, se mi collego su “localhost” ho lo stesso errore, mentre su “localhost:8084” mi da come risposta “This page isn’t working”.
    Potrebbe essere un problema di permessi o sempre di directory ?

  37. Ciao @Gianluca,
    per i log di piGarden, il percorso del file è definito in /etc/piGarden.conf nel parametro LOG_FILE. Quindi lo puoi cambiare a tuo piacimento. Sempre nello stesso file devi cambiare anche il percorso definito in STATUS_DIR.

    Per l’interfaccia web devi cambiare il percorso della document root nel file /etc/nginx/sites-available/default. Trovi la riga che contiene
    root /home/pi/piGardenWeb/public;
    la dovrai cambiare con in modo che contenga il percorso corretto, che immagino nel tuo caso sia
    root /root/piGardenWeb/public;

    Una volta fatto questa correzione riavvia nginx con
    sudo service nginx restart

    Riguardo la porta 8084 non è relativa al server web ma è riservata al socket di comunicazione tra piGarden e piGardenWeb. Non va quindi usata.

    Penso che non ci siano altri cambiamenti da eseguite.
    Personalmente non ho mai fatto un’installazione con l’utente root quindi non ti so dire se ci possano essere altri problemi.

    David.

  38. Ciao, inanzitutto voglio complimentarmi per il lavoro svolto anche se ancora non l’ho installato.
    Ho appena acquistato il materiale necessario, quindi al più presto inizierò le prime prove.
    Avrei qualche richiesta, ho installato l’ultima versione del sistema operativo “Debian Stretch”, MySql, Apache e PHP7, per cui ti chiederei, se possibile, le istruzioni necessarie per installare e configurare in tale ambiente.
    Aggiungo, che per il mio impianto di irrigazione utilizzo delle elettrovalvole monostabili 24V (Claber 90814) e il sensore di pioggia Claber 90915, questo è un componente passivo che di fatto apre il circuito quando l’acqua raggiunge/supera il livello predefinito nella vaschetta di raccolta e lo richiude quando scende al di sotto, di fatto si comporta come un semplice termostato per un impianto di riscaldamento.
    In merito a questo scenario ritieni sia possibile adattare piGarden?
    Grazie

  39. Ciao @Ivano,
    personalmente non ho mai installato piGardenWeb su Debian Stretch ma non penso ci siano grossi problemi.
    Tutto è basato sul framework Laravel 5.2, che per funzionare sotto apache ha bisogno dei seguenti requisiti:
    – PHP >= 5.5.9
    – OpenSSL PHP Extension
    – PDO PHP Extension
    – Mbstring PHP Extension
    – Tokenizer PHP Extension

    Una volta scaricato piGardenWeb con git, puoi trovare il file di virtualhost per apache nella directory piGardenWeb/virtualhost/apache/ che puoi adattare alle tue esigenze.

    Se invece vuoi utilizzare mysql come db anziché sqlite ti basta modificare il file .env togliendo le attuali definizioni DB_CONNECTION e DB_DATABASE e inserire le seguenti:
    DB_CONNECTION=mysql
    DB_HOST=localhost
    DB_PORT=3306
    DB_DATABASE=piGarden
    DB_USERNAME=piGarden
    DB_PASSWORD=piGarden

    Naturalmente dovrai adattare i valori in base al tuo ambiente.

    Per quanto riguarda il sensore di pioggia della Claber per ora non è supportato direttamente. In passato mi era già stato chiesto una cosa del genere, puoi dare un’occhiata a questo commento e alle risposte successive. Potresti trarne spunto.

    Se riscontri problemi fammi sapere.

  40. @lejubila ti ringrazio per la risposta, ti terrò aggiornato.
    Circa il DB, ho un dubbio: il database piGarden deve essere creato o l’operazione viene effettuata dall’applicazione?
    Circa il sensore, credo che questo possa essere banalmente inserito in serie sul comune di alimentazione delle elettrovalvole mono-stabili in modo che sia trasparente al sistema, ovviamente non verrebbe utilizzata la parte di gestione del sensore pioggia, mi sbaglio?
    Grazie di nuovo.
    Ciao

  41. Il db lo devi creare tu manualmente. Lo stesso vale per l’utente MySQL. Poi modifichi il file
    .env come detto prima.
    Per quanto riguarda il sensore di pioggia claber, se il suo funzionamento è come mi avevi indicato, anche secondo me puoi metterlo in serie metterlo in serie alle elettrovalvole.

  42. @lejubila grazie di nuovo, sono cosciente che effettuando il collegamento come da me proposto, molto semplice e rapido, si perdono informazioni (non si sa se e quando il sensore è intervenuto) e funzionalità (non si può forzare l’irrigazione nel caso in cui il sensore abbia aperto il circuito).
    A proposito di PHP7, ho visto che di recente è stata rilasciata una nuova versione di Lavarel, la 5.5, che è compatibile con PHP7.
    Ciao

  43. @lejubila, ho terminato l’installazione seguendo le istruzioni fornite, spero di non aver dimenticato o sbagliato nulla, l’avvio del server piGarden non restituisce alcun errore ed correttamente registrato nel file di log, ma quando accedo al sito tramite il browser apache viene restituito il seguente errore:

    ErrorException in Filesystem.php line 111: file_put_contents(/home/pi/piGardenWeb/bootstrap/cache/services.php): failed to open stream: Permission denied

    Aggiungo che ho dato in permessi a www-data come indicato, inizialmente me ne ero dimenticato ed infatti veniva restituito un altro errore, di fatto non riusciva a scrivere il file di log nel folder piGardenWeb/storage/logs.
    Ciao

  44. Devi applicare i giusti permessi alle cartelle.
    Posizionati dentro la cartella piGardenWeb e impartisci i seguenti comandi:

    sudo chown -R pi:www-data /home/pi/piGardenWeb/
    sudo chmod -R g+w storage database database/piGarden.sqlite

    Fatto questo dovrebbe funzionare

  45. @lejubila operazione già eseguita, ti ricordo che io uso MySql( mariadb) per cui il file database/piGarden.sqlite non l’ho creato.
    Grazie.
    Ciao

  46. Posizionati nella cartelle piGardenWeb e prova impostare i permessi con i seguenti comandi

    sudo chown -R pi:www-data bootstrap/cache
    sudo chmod -R g+w bootstrap/cache

  47. @lejubila ti ringrazio per il supporto e mi scuso se torno a disturbarti.
    I comandi che mi hai suggerito hanno risolto il problema segnalato, quindi mi sono accorto di avere un problema sulla chiave di cifratura in qaunto mi ero dimenticato di eseguire i comandi “./artisan key:generate” e “./artisan migrate”.
    Finalmente sono arrivato alla home page, ma ora quando provo ad accedere alla pagine “Accedi” o “Registrati” mi voene restituito l’errore “Not Found” – “The requested URL /admin/register was not found on this server”.
    Ciao

  48. Ti ricordo che sto usando apache, per cui ho utilizzato il file da te predisposto disponibile in “/home/pi/piGardenWeb/virtualhost/apache/”
    Di nuovo

  49. Assicurati che esista il file
    /home/pi/piGardenWeb/public/.htaccess
    e che abbia i permessi di lettura per tutti gli utenti.
    Dopo di che verifica se il modulo rewrite è abilitato su apache, eventualmente abilitalo con
    sudo a2enmod rewrite
    e riavvia apache con
    sudo service apache2 restart

    Fammi sapere

  50. @lejubila ottimo, il modulo rewrite non era abilitato.
    Preciso solo che i servizi sono gestiti tramite systemd, per cui il comando che ho utilizzato è “sudo systemctl restart apache2”.
    Registrazione effettuata, sono state create 8 tabelle nel database MySql (MariaDB), molte di queste al momento sono vuote.
    Spero di aver risolto tutti i problemi di installazione e proseguire con il resto.

    Solo per promemoria (molto sintetico), magari può essere utile ad altri:
    Ambiente:
    Raspberry Pi 3 model B con Debian Strech (ultimo s.o. rilasciato), Apache, MySql (MariaDB), PHP7.

    Installazioni:
    piGarden
    ———–
    – git clone https://github.com/lejubila/piGarden.git
    – sudo apt-get install curl gzip grep sed ucspi-tcp #di fatto solo ucspi-tcp, gli altri già erano presenti
    – Jq come descritto nella guida (anche in questo caso alcuni moduli già erano presenti)
    – wiringPI è già installato di default (è necessario modificare il path nel file di configurazione di piGarden ==> GPIO=”/usr/bin/gpio”)

    piGardenWeb
    —————
    – git clone https://github.com/lejubila/piGardenWeb.git
    – sudo apt-get install php7.0-fpm php7.0-cli php7.0-mcrypt
    – sudo phpenmod mcrypt
    – modificato il file /etc/php/7.0/fpm/php.ini come indicato sulla 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 chown -R pi:www-data bootstrap/cache
    – sudo chmod -R g+w storage database bootstrap/cache
    – sudo a2enmod rewrite ==> sudo systemctl restart apache2
    – creato utente (piGarden) e database (piGarden) in MySql
    – sudo cp /home/pi/virtualhost/apache/piGarden.conf /etc/apache2/sites-available/000-default.conf (nel mio caso potevo farlo in quanto al momento non erano presenti altri siti, altrimenti si devono seguire modalità diverse)

    P.S. ovunque ho modificato il contenuto di un file ho sempre fatto una copia della versione originale.

    Grazie di nuovo.
    Ciao

  51. @lejubila a seguito delle prime prove ho notato quanto segue:
    – viene tentato l’accesso al foglio di stile “/vendor/adminlte/plugins/daterangepicker/daterangepicker-bs3.css”, ma questo non esiste per cui HTTP 404
    – avviando una zona, p.e. subito per un minuto, l’immagine “sprinkler-pause.gif” viene sostituita con l’immagine “sprinkler-play.gif”, ma al termine del periodo di irrigazione non avviene l’inverso a meno che non si forzi l’aggiornamento della pagina.

    Con l’occasione aggiungo che nel mio ambiente jq può essere semplicemente installato “sudo apt-get install jq”, per cui sembra non siano necessarie tutte le operazioni indicate nel caso dell’installazione manuale.

    Infine, vorrei sapere se quando vengono inviate delle email utilizzando i parametri indicati nel file di configurazione .env

    Grazie.

    Ciao

  52. Riguardo al mancato ripristino dell’icona quando l’irrigazione di una zona termina, è strano che non funzioni. Ogni 20 secondi viene eseguita una chiamata ajax che recupera lo stato delle zone è imposta le relative icone.
    Potresti verificare nella console del browser se si verificano errori proprio durante queste chiamate ajax.

    Fammi sapere

  53. @lejubila, si avevo già notato, infatti, avendo utilizzato Firefox funziona correttamente, mentre con IE 11 si verifica il problema segnalato.
    Di seguito l’output della console , credo che il problema sia dovuto al metodo ‘startsWith’
    HTML1300: Navigation occurred.
    192.168.0.222
    SCRIPT438: Object doesn’t support property or method ‘startsWith’
    dashboard (4690,11)
    SCRIPT1006: Expected ‘)’
    backend.js (7,42)

    Ciao

  54. @lejubila sto continuando ad esplorare il sistema, confermo i complimenti per l’ottimo lavoro.
    Ovviamente le sigenze personali sono diversificate, inoltre, anche i desiderata si differenziano, per cui provo a segnalare alcune proposte, ovviamente solo per un confronto di idee.
    – Schedulazione irrigazione:
    1) a mio avviso potrebbe essere semplificata l’operazione lasciando un unico pannello ed intrducendo la possibilità di definire la durata (in minuti, ore), in questo modo con un’unica impostazione il sistema può aggiungere le entry di open e close nel crontab
    2) allo stato, se non erro, non è possibile effettuare schedulazioni con frequenza fissa, mi spego meglio p.e. volendo schedulazione una irrigazione ogni 2 giorni (48 ore) mi sembra che le uniche possibilità siano di selezionare i giorni (lunedì, mercoledì, venerdì, domenica), ma in questo modo si avrebbe una ripetizione dopo 24 ore fra domenica e lunedì, o di selezionare i giorni del mese (1, 3, 5, ecc.), ma in questo modo l’operazione diventa piuttosto onerosa; se non erro crontab consente di definire auesto tipo di schedulazioni (step)
    – Invio email:
    dato che il sistema già gestisce l’invio di email, al momento mi sembra utilizzata per il reset della password, credo sarebbe utile avere la possibilità di configurare l’invio di email anche per altri eventi, p.e. avvio di una irrigazione, termine si una irrigazione, apertura del rain sensor, ecc.
    – Refresh tramite chiamata Ajax:
    potrebbe essere utile avere un parametro di configurazione (nel file .env) che consenta di impostare la frequenza in secondi o di disattivarla con il valore zero
    – Eventi del server piGarden
    al momento, se non erro, tutti gli eventi vengono registrati nel file di log piGarden.log, potrebbe essere utile a fini statistici, inserire alcuni di tali eventi (p.e. inizio e fine di una irrigazione, apertura e chiusura del rain sensor, ecc.) anche in una apposita tabella del database; questi dati potrebbero poi essere utilizzati per diversi scopi da che ne ha interesse
    – Interrogazione del rain sensor
    mi sembra di aver capito che impostando a zero i due parametri NOT_IRRIGATE_IF_RAIN_ONLINE e NOT_IRRIGATE_IF_RAIN_SENSOR viene disabilitata considerazione dello stato del rain sensor nella gestione delle irrigazioni , ma controllando il file piGarden.log vedo che il sistema comunque continua a controllarlo (“Rain sensor initialized”, “check_rain_sensor – now is not raining”).

    Ribadisco che, ovviamente, non c’è alcuna pretesa e alcuna volontà di “giudicare” il lavoro svolto, che ribadisco ancora una volta è ottimo, è solo un confronto di idee. Probabilmente hai già analizzato i temi elencati, ed il risultato ti ha portato a fare le tue scelte.

    Grazie.
    Ciao

  55. Ciao @Ivano,
    rispondo alle tue richieste.
    – Semplificazione schedulazioni: concordo con te che attualmente che fare inserire la durata dell’irrigazione al posto della schedulazione di chiusura semplificherebbe l’esperienza utente infatti ci avevo già pensato anche io. Il problema è che mantenendo l’attuale struttura (cron di avvio e cron di chiusura) non è semplice calcolare il cron di chiusura in base alla durata di irrigazione che verrebbe inserita. A meno di non cambiare sistema di chiusura mi diventa difficile implementare questa funzione. In futuro vedrò se riesco a inventarmi qualcosa per riuscire ad intraprendere questa strada.
    – Schedulazioni con frequenza fissa: cron nativamente permette di impostare degli step ma il problema rimane. Se definisco un cron tipo questo “0 22 * * 1/2”, indico di fare partire alle ore 22:00 del lunedì/mercoledì/venerdì/domenica. Come vedi anche con il parametro di step (1/2) il problema rimane. Per attenuare questo mal funzionamento è possibile impostare lo step nel campo dei giorni del mese anziché di quello della settimana: “* 22 1/2 * *”. Così parto il primo del mese poi passo al terzo giorno, al quinto e così via. In base al numero di giorni che il mese ha il problema persiste (spero di essermi spiegato).
    – Invio mail: l’invio delle mail sul reset password viene eseguito dall’interfaccia web, che teoricamente potrebbe stare anche su un’altro raspberry rispetto allo script che piGarden che fa da server (sono due componenti nettamente separati che comunicano tra loro tramite socket). L’invio delle mail in base a determinati eventi dovrebbe essere eseguita direttamente da piGarden. Sarà possibile eseguire questa funzione nella prossima versione che rilascerò nella quale sarò implementata appunto la gestione degli eventi, dove per ognuno di questi potranno essere lanciati degli script custom tra cui uno che preveda l’invio di una mail ( https://github.com/lejubila/piGarden/issues/2 ).
    – Refresh tramite ajax: me la segno, eventualmente la implemento in futuro.
    – Inserimento log eventi in un db: non sei il primo a chiedere questa cosa, il fatto è che piGarden era stato ideato per rimanere abbastanza leggero ed essendo uno script bash diventa un po difficile interagire un db. Sempre per lo stesso discorso di leggerezza ho impostato come predefinito un db sqlite per l’interfaccia web in modo da non appesantire troppo il raspberry con un server mysql sempre attivo. Vedrò in futuro cosa posso fare.
    – Controllo pioggia: impostando a zero i due parametri NOT_IRRIGATE_IF_RAIN_ONLINE e NOT_IRRIGATE_IF_RAIN_SENSOR non viene interrotta l’irrigazione in caso di pioggia ma il controllo su i sensori e/o il servizio meteo online viene eseguito comunque, da qui l’inserimento dei log. Se vuoi disabilitare completamente il check devi togliere le relative schedulazioni nel crontab. Lo puoi fare manualmente oppure con i seguenti comandi:
    ./piGarden.sh del_cron_check_rain_online
    ./piGarden.sh del_cron_check_rain_sensor
    ./piGarden.sh del_cron_close_all_for_rain

    Se hai altri suggerimenti per modifiche o nuove implementazioni puoi, per ognuna di queste, aprire una issue su github
    da qui per piGarden https://github.com/lejubila/piGarden/issues
    e da qui per piGardenWeb https://github.com/lejubila/piGardenWeb/issues

  56. @lejubila ti ringrazio per l’attenzione e la dettagliata risposta fornita, mi permetto solo qualche considerazione premettendo che, pur avendo un’esperienza piuttosto lunga, purtroppo le mie conoscenze nel mondo linux sono scarse per cui ciò che dico potrebbero essere “castronerie”, in tal caso non avere timore nel segnalarmelo.
    – Semplificazione schedulazioni: pur mantenendo l’attuale struttura, non chiedo di modificarla, ho l’impressione che non sia particolarmente complicato calcolare l’ora di chiusura partendo dall’ora di apertura e dalla durata dell’irrigazione, p.e. nel caso l’ora di apertura fosse 22:00 e la durata fosse 15 minuti si potrebbe utilizzare date -d “22:00 today + 15 minutes” +’%d/%m/%Y %H:%M’, ovviamente la stringa ‘today’ serve solo per determinare l’ora di chiusura è in un giorno successivo a quello di apertura
    – Schedulazioni con frequenza fissa: credo che volendo, per esempio, effettuare una irrigazione che parte alle ore 22:00 ogni due giorni si potrebbe definire un cron “0 22 */2 * *”, questo dovrebbe essere valido anche per gli altri parametri, p.e. esempio ogni due ore “0 */2 * * *”
    – Invio mail: sono coscente che piGraden e piGardenWeb sono due componenti separati, anche io, come te, li ho installati su due diversi raspberry, comunque mi sembra ottima la soluzione individuata
    – Inserimento log eventi in un db: fermo restando le difficoltà di cui parli, io utilizzo un Raspberry PI 3 model B con MySql piuttosto impegnato e non ho particolari problemi di performance, inoltre, sull’adeguatezza di avere un db su SD credo che questo potrebbe essere tranquillamente spostato su un disco esterno, comunque credo che queste sia tutte scelte (db, hd, ecc.) che potrebbero essere lasciate all’utente finale
    – Controllo pioggia: scusa avevo capito male, comunque avevo già provveduto a rimuovere le entry indicate dal cron, magari la funzione init potrebbe essere modificata in modo da individuare le schedulazione dei controlli tenendo conto delle impostazioni dei parametri nel file .env.

    Nel caso di necessità per il futuro, come giustamente mi hai indicato, utilizzerò github.

    Grazie.

    Ciao

  57. @lejubila Ciao ho dovuto reinstallare il sistema operativo nel mio Raspberry ed ovviamente la versione non e più la jessie come si presume sia per seguire la tua guida,alla installazioni dei pigarden e pigardenweb in particolare il php che non e più la versione 5 ma la 7 “la 5 non e nei repository “,quando provo a collegarmi all indirizzo del mio raspberry ricevo 502 bad gateway,Qualche suggerimento non oso immaginare un estate senza Pigarden :-(.
    ps perdonami gli accenti ma ho da poco una tastiera con layout US e non sono capace a fare gli accenti

  58. forse risolto andava modificata il percorso del php-fpm,ora riesco a collegarmi all interfaccia web ma non ho ancora risolto l’errore del comando sudo phpenmod mcrypt
    che da errore

  59. Ciao non so cosa sia successo,dopo aver letto la tua doanda ho acceso il raspberry rilanciato il comando sudo phpenmod mcrypt, per copiare l’ errore e l’errore e sparito,oggi mi dava un WARNING dicendo che il fali non era in una cartella, ma nn ricordo di preciso cmq ora sembra ok,cmq il tuotto sembrava funzionare anche con quel WARNING

  60. Ciao, in primis rinnovo i complimenti per lo sviluppo. Bel lavoro.
    Sto prendendo spunto dalla tua relazzazione, per farne una simile, e dall’idea di aggiungere un banale monitor LCD da 5 o 7 pollici, poco conta, per visuliazzare le informazioni a “bordo macchina”. L’architettura che pensavo è del tipo client / server e fatto in questo modo basterà aggiungere un monitor l’LCD a bordo e aprire il browser per visualizzare la pagina web. Così si evitano righe di codice per i display a righe e non si occupano GPIO che non sono mai abbastanza. Cosa ne dici?
    Volevo chiederti due pareri: 1. come hai collegato il raspberry alla tua rete? Wifi o cavo? 2. oggi si trovano i nuovi raspberry Pi3 B con nuovo OS a bordo, pensi ci sia da modificare/adattare qualcosa nella tua versione?

    Grazie in anticipo.

  61. Ciao @Carlo,
    non ho ben capito la relazione tra l’archiettura client/server e il monitor LCD. Comunque sia anche io ho utilizzato un’architettura simile, infatti la parte centrale che controlla l’impianto è lo script piGarden, questo poi si interfaccia con l’applicazione web (piGardenWeb) tramite socket e quindi, volendo, i due componenti possono risiedere macchine diverse. Ed proprio così che ho implementata la mia installazione: su un vecchio raspberry B collegato via wifi alla rete vi sono collegati i relè che comandano le elettrovalvole, il tutto gestito con lo script piGarden; su un altro raspberry 3 collegato via cavo è presente l’applicazione web.
    Per quanto riguarda il nuovo raspberry 3 B non penso ci siano particolari problemi.

  62. Ciao @lejubila,
    intanto grazie per la risposta.
    Provo a spiegarmi meglio.
    Se si facesse “girare” il tutto su un unico raspberry, sia piGarden che piGardenWeb, la comunicazione tra i due avverebbe su socket “interno” (come hai spiegato in un articolo) e quindi si averebbe un solo dispositivo che mi fa tutto.
    Teoricamete è un sistema cieco che, una volta eseguita la configurazione, non ha bisogno di nulla va avanti da se. Quindi, calandolo nell’architettura client/server, in questo caso il mio unico rasberry sarà il mio server.
    I client chi sarebbero? Gli n. dispositivi che si collegano via web al servizio che risiede sul server. Protrei avere n. client, teoricamento non c’è limite.
    E il monitor LCD? In una prima versione di una centralina che feci con Arduino misi un semplice display LCD 16×4 con dei tasti per la navigazione. Questo aveva comportato una onerosa gestione via codice e l’utilizzo di quasi tutto l’IO. Ora ci sono anche display con protocollo I2C che risolvono il problema di saturare gli IO ma comuque il codice va scritto.
    Il vantaggio di questa architettura è che:
    1. Non serve nessuna gestione per l’interfaccia utente in quanto si va ad operare via web.
    2. Ho un notevole vantaggio sull’utilizzo degli IO. Non ho pin occupati per il display.
    3. Il server stesso può funzionare anche da client. Infatti se si collega un monitor LCD al raspberry e si avvia un browser (es. localhost) si vedrebbero le pagine di piGardenWeb.
    4. potrei avere, in impianti più complessi, più stazioni operatore a costo zero.

    Un ulteriore vataggio, per come l’hai pensata e per come la stai utilizzando ora, è la possibilità di gestire un sito remoto, ovvero distante dalla postazione operatore, in quanto piGarden e piGardenWeb possono risiedere su due macchine differenti. Basterà che i due raspberry si vedano in rete.
    Scrivendo quest’ultima considerzione mi è venuta in mente una domanda. Potrei avere più piGarden con socket differente? Immagino di si. Ma come li gestisce piGardenWeb?

    Spero di essere stato chiaro.
    So che questa pensata è riferita solo a impianti ampi e complessi che difficiliemnte si trovano in abitazioni private.

    Ciao e grazie ancora.
    Carlo

  63. Ciao @Carlo,
    ho letto le tue considerazioni e sono d’accordo con te.
    Per quanto riguarda il fare controllare a piGardenWeb più impianti piGarden questo non è possibile. Però con l’ultima versione di piGarden che ho rilasciato questo fine settimana possiamo implementare un’architettura master/slave che si avvicina al risultato da te descritto. In particolare abbiamo un’installazione piGarden master che andrà a controllare le elettrovalvole gestite da altre installazioni piGarden (slave). Avremo quindi l’interfaccia web piGardenWeb che gestendo l’installazione master di piGarden potrà gestire le zone di tutte le slave.
    Fra qualche giorno dovrei pubblicare il post relativo a questa novità.

  64. Ciao @lejubila,
    ho letto ora il tuo commetto e direi che si avvicina a quello che intendevo. Bel lavoro, complimenti.
    In sostanza, se ho capito bene, è un’architettura di questo tipo:
    piGarden master che gestisce IO remoti più un eventuale, ma non necessario in quanto può risiedere su il piGarden master, raspberry per piGardenWeb. Quindi ho un solo master e tutti slave.
    La mia idea era di avere n. piGarden master con i suoi n. piGarden slave. In piGardenWeb si selezionava il piGarden (quindi il socket relativo ma da web l’alias) interessato per la sua gestione.
    Ora, sempre scrivendo :), mi è venuto in mente che probabilmente si riesce a fare. Anche senza pugnalate. La butto li, poi nel caso ci guardo; Io conosco il socket relativo al piGarden master (quindi anche degli n piGarden master) e in piGardenWeb se creerò una dropdownbox dove selezionerò il piGarden master. A questo punto si ricaricherà la pagina di piGardenWeb mostrando le info del piGarden master selezionato. Forse il problema sta nella pagina in quanto, se il codice non è tutto indicizzato (array che verranno grandi quanto il valore recuperato dal config), dovrò creare n pagine e quindi creare un limite. Ma questo lo sai meglio tu. 🙂
    Spero di essermi spiegato. Non ho ancora avuto la possibilità di metterci le mani per integrarlo nella bozza che stavo mettendo giù.

    Ciao e grazie.

  65. Ciao @lejubila,
    questa sera ho avuto un po’ di tempo e ho provato a buttare in toto il tuo progetto su un raspberry che ho qui. E’ nuovo, ha os stretch, php7 ecc… ho modificato i path da php5 al 7 e tutto quanto. Infatti aprendo sia in localhost che da pc in rete vedo tutto. Eseguo la registrazione per testare il DB ed è ok ecc… Ho provato a schedulare una irrigazione mettendo RAIN_SENSOR E ONLINE nel config a 0 e mi sono accorto che non funziona in quanto le icone non cambiavano. Ho provato a girare in lungo in largo ma non ho trovato nulla. Nemmeno nei log mi risulta un open solenoide o close. L’avvio manuale funziona. Inoltre ho notato che nel tasto azzurro di “forza apertura in caso di pioggia” compare la spunta se cliccato ma se cambio pagina per poi tornarci vedo la “x”. Mi sembra che manchi qualche privilegio da qualche parte ma non ho capito dove. In fine nemmeno il meteo funziona. Mi sono registrato al sito, inserito nel config le chiavi necessarie, controllato che nel config in etc fossero corrette, ma nulla. Se la stringa json la incollo nel browser vedo le info delle n città con quel nome. Le info complete, nel browser, le ho solo se metto IT al posto di IY. Che può essere secondo te?

    Grazie per il supporto

  66. Ciao @carlo
    per quanto il problema delle schedulazioni prova a verificare sul raspberry con il comando date se la data e l’ora sono corrette.
    Se l’orario fosse avanti o indietro di qualche ora va corretto il timezone del raspberry.
    Eventualmente controlla anche che una volta confermate le schedulazioni siano correttamente scritte nel cron del raspberry. Lo fai con il comando “cron -l”.
    Se non ha il sensore hardware della pioggia devi impostare la variabile RAIN_GPIO senza valore, in questo modo
    RAIN_GPIO=

    Per la url del servizio meteo se con IT ti ritorna i valori corretti della città lascialo così.
    Tieni conto che le informazioni meteo nell’interfaccia web vengono visualizzate solo se sono stati attivati i cron di gestione (lo fai andando nel menu “Setup Iniziale” di piGardenWeb)

    Dopo la modifica della configurazione eventualmente cancella tutto quello che dentro /home/pi/piGarden/state

    La “x” per forzare l’avvio in caso di pioggia è giusto che non venga memorizzata infatti quella funzione serve solo per eseguire l’avvio una tantum.

    Fammi sapere.

  67. Ciao @lejubila,
    ho verificato la data e nel terminale esce correttamente 29 Mar 23:26:07 CEST 2018. Mi sembra che CEST sia necessario. Ho controllato il timezone e chiaramente è Europa –> Roma.
    Ho messo “NULL” RAIN_CPIO come hai indicato
    controllato nel cron con cronotab -l ecco il risultato –>
    # START cron open 2
    #15 22 * * * /home/pi/piGarden/piGarden.sh open 2
    # END cron open 2

    # START cron close 2
    #25 22 * * * /home/pi/piGarden/piGarden.sh close 2
    # END cron close 2

    # 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

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

    # 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

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

    # START cron open Giardino_Posteriore_DX
    #1,58 22,23 * * * /home/pi/piGarden/piGarden.sh open Giardino_Posteriore_DX
    # END cron open Giardino_Posteriore_DX

    # START cron close Giardino_Posteriore_DX
    #1,59 22,23 * * * /home/pi/piGarden/piGarden.sh close Giardino_Posteriore_DX
    # END cron close Giardino_Posteriore_DX

    # START cron open prova1
    #1,11 23 * * * /home/pi/piGarden/piGarden.sh open prova1
    # END cron open prova1

    Riesce a scriverci (vedi i prova1)

    Ho cancellato i file che mi hai detto ma nulla. Tra l’altro non capisco perchè nel cron esca Giardino_Posteriore_DX. Se non ricordo male è una tua configurazione. Li recupera da il config remoto?

    Ad ogni modo ho fatto più volte il setup iniziale ma nulla.
    Sia le schedulazioni che meteo non appaiono.

    Vago un po’ per capire. Vediamo se trovo. Chiaramente se hai idee… tu sei il mentore..

    Grazie per l’aiuto.
    Carlo

  68. Allora il problema celle schedulazioni che non partono è semplicemente per il fatto che non le hai attivate 🙂
    Devi cliccare sul pulsante posto sopra il dettaglio della schedulazione e portarlo sullo stato (ON). Fatto questo riconferma la schedulazione

    Dovrebbe bastare così.
    Se hai ancora problemi fammi sapere.

  69. Ciao lejubila
    e’ un paio di giorni che sto lavorando su un raspberry pi3. Purtroppo in fase di installazione di PHP, non avendo più a disposizione la versione 5, con la 7 non riesco in nessun modo a far partire interfaccia Web. tutti i puntamenti del web server sono saltati. Hai modo di darmi qualche indicazione a riguardo

    Grazie Mille.

  70. devi cambiare il percorso di php=fpm, ma ora non ho il raspy sottomano e non ricordo dove devi cambiarlo.

  71. Già fatto nel file default del web server è presente la stringa di riferimento. Ma il risultato non cambia. Errore bag gateway. Cmq continuo a cercare

    Grazie

  72. @Grimo75,
    il problema è nel file di configurazione
    /etc/nginx/sites-available/default

    aprilo con un editor, elimina la seguente linea:

    fastcgi_pass unix:/var/run/php5-fpm.sock;

    e al suo posto inserisci questa:

    fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;

    a questo punto riavvia nginx con questo comando

    sudo systemctl restart nginx

    ora dovrebbe funzionare.

    Fammi sapere.

  73. Grazie Mille

    Tutto a posto.

    Ti tengo aggiornato sull’implementazione del pannello solare

    Ciaoo

Lascia un commento

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