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 Raspian 10 Duster, 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
 
# Per raspbian 10 duster (php7.1)
sudo apt install nginx php7.1-fpm php7.1-cli php7.1-mcrypt php7.1-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. Per Raspbian 10 con php7.1 andrà invece modificato il file /etc/php/7.1/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) e 10 duster (php7.1)
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
 
# Per raspbian 10 duster (php7.1)
cd
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.original
sudo cp piGardenWeb/virtualhost/nginx/default-php7.1 /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.

184 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

  74. Ciao,
    ma non esiste un immagine da caricare in una volta sola sul raspberry? con tutto settato?

  75. Buongiorno David
    sono ritornato ad installare questo programma per l’irrigazione, questa volota al contrario della scorsa ho mantenuto tutto uguale e seguito per filo e per segno l’intera installazione, pero’ mi e’ andata storta qualcosa ma non capisco cosa:

    piGardeWeb mi da il seguente 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

    se vado a corregge il file/etc/nginx/sites-available/default e defaut.original con i valori sotto:
    server {
    listen 8084 default_server;
    listen [::]:8084 default_server;
    rifacendo poi ripartire il server nginx

    l’errore che appare ora e’ il seguente
    pigarden.Invalid json socket client response at line 126 of file /home/pi/piGardenWeb/app/PiGardenSocketClient.php

    Quindi a questo punto non so proprio se mi conviene ripartire da capo per vedere se mi sono dimenticato qualche cosa oppure essendo stati aggiornati alcuni programmi nel frattempo siano cambiate anche alcune impostazioni, di cui pero’ non saprei dove mettere mano.
    Grazie in anticipo

  76. Ciao @gianluca
    il file di configurazione di ngnx lo devi lasciare inalterato. La porta 8084 viene usata dal socket sever gestito da piGarden per comunicare con piGardenWeb.
    Se tutto è installato correttamente devi prima avviare il socket server dalla tua home con il comando
    ./piGarden.sh start_socket_server Force

    Fatto questo dovresti riuscire ad aprire l’interfaccia web senza errori.

    Fammi sapere se hai ancora problemi.

  77. In effetti è partito regolarmente, in teoria però sarebbe dovuto partire col comando contrab, provo a rivedere se è veramente attivo.
    Grazie per ora non mi rimane che settare i vari orari e le zone per vedere il corretto funzionamento.

  78. Francamente non riesco a capire cosa sia successo, avevo settato tutto orari e quant’altro, non avevo ancora collegato il raspberry al resto dell’impianto, ora finalmente ho collegato il tutto ed ora mi e’ tornato l’errore
    PiGarden server error
    stdClass Object
    (
    [description] => Invalid json socket client response at line 126 of file /home/pi/piGardenWeb/app/PiGardenSocketClient.php
    [code] => 0
    )

    pero’ mi sono collegato a http://localhost/ perche’ se si collega a http://localhost:8084 la risposta del server e’
    La pagina non funziona
    localhost ha inviato una risposta non valida.
    ERR_INVALID_HTTP_RESPONS

    e se do il comando : ./piGarden.sh start_socket_server Force
    mi risponde :
    Daemon is already running, use “./piGarden.sh stop_socket_server” to stop the service

    dei cambi non ne ho fatti avevo riportato i due file /etc/nginx/sites-available/default e defaut.original sulla porta 80 come erano in origine
    e quello di configurazione alla porta 8084 di pigarden.

  79. @gianluca
    Se i nomi delle eletrrovalvole che hai definito contengono degli spazi, il problema potrebbe essere quello. Riscrivi i nomi senza spazi.

    Per quanto riguarda il comando

    ./piGarden.sh start_socket_server Force

    devi scrivere force tutto minuscolo altrimenti non funziona.

  80. Il file di configurazione non e’ in /etc/piGarden.conf ???
    effettivamente avevo lasciato gli spazi
    pero’ anche modificandolo da sempre lo stesso errore
    # Numero totale di elettrovalvole
    EV_TOTAL=5

    # Definizione delle elettrovalvole
    EV1_ALIAS=”1″ # Gocciolante-anteriore
    EV1_GPIO=3 # Physical 3 – wPi 1
    #EV1_NORAIN=1 # Non interrompe l’irrigazione di questa zona in caso di pioggia

    EV2_ALIAS=”2″ # Giardino-sx
    EV2_GPIO=5 # Physical 5 – wPi 2

    EV3_ALIAS=”3″ # Gocciolante-posteriore
    EV3_GPIO=7 # Physical 7 – wPi 3

    EV4_ALIAS=”4″ # Giardino-posteriore
    EV4_GPIO=29 # Physical 29 – wPi 4

    EV5_ALIAS=”5″ # Griardino-anteriore
    EV5_GPIO=31 # Physical 31 – wPi 5

    mentre il comando :
    sudo ./piGarden.sh start_socket_server force dato nella directory /piGarden/
    mi ha restituito

    Daemon is already running, use “./piGarden.sh stop_socket_server” to stop the service
    Daemon is started widh pid 2696

  81. Il messaggio di riavvio del socket server va bene così come ti compare

    Daemon is already running, use “./piGarden.sh stop_socket_server” to stop the service
    Daemon is started widh pid 2696

    Però non ho capito se adesso l’interfaccia web ti da ancora errore o no.

  82. Si l’interfaccia web mi da ancora errore.
    Da mercoledì dovrei avere un po più di tempo e quindi provo a ricontrollare anche i fili di collegamento ai relé, dato che fino alla scorsa settimana funzionava tutto ma non avevo ancora collegato la scheda relé all’alimentazione esterna, cioè c’era ma non era alimentata, e non vorrei che il tutto fosse causato proprio dall’alimentazione esterna.

  83. Niente da fare, e’ qualche giorno che provo e riprovo con i collegamenti, ho persino cambiato i collegamenti dal raspberry alla scheda rele’, con quelli che avevi usato tu.
    Purtroppo persisete l’errore, pur essendo attivo il servizio il messaggio e’ in un riquadro a dx in alto
    pigarden.Invalid json socket client response at line 126 of file /home/pi/piGardenWeb/app/PiGardenSocketClient.ph
    e nella Dashboard
    piGardenWeb Dashboard
    PiGarden server error
    stdClass Object
    (
    [description] => Invalid json socket client response at line 126 of file /home/pi/piGardenWeb/app/PiGardenSocketClient.php
    [code] => 0
    )
    che mi convenga disintallare e reinstallare il tutto ?

  84. Ciao,premettendo che sono nuovo del mondo raspberry e sopratutto di programmazione, avrei 2 problemi:
    1) quando tento di fare questo passaggio
    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:
    mi dice sempre che è impossibile modificare il file in quanto è in sola lettura.
    2) comunque ho finito tutta la procedure , e funziona tutto, ma dalla pagina web non mi vede i settaggi del file config, quindi i nomi delle varie “alias” e tutto il resto , ma forse è dovuto al punto 1 ?
    Grazie e Ciao

  85. Ciao, è possibile settare una valvola master?
    Volevo chiudere la linea che porta l’acqua agli irrigatori?
    Ciao e grazie mille

  86. Caio @giorgio,
    rispondo al tuo commento con un mega-ritardo, ma in questi giorni di ferie sono stato assente.
    Allora riguardo la prima domanda, dato che il file che tenti di modificare un file che non è di tua proprietà, devi anticipare il comando con sudo. Per esempio:
    sudo nano /etc/php/7.0/fpm/php.ini
    In questo caso ti verrà richiesta la password del proprio utente in modo da elevare i permessi come se fossi l’utente root.

    Per quanto riguarda la seconda, se ci fosse qualche problema di comunicazione tra piGarden e piGardenWeb, dovrebbe mostrarti dei messaggi di errore.
    Prova ad eseguire la prima modifica, riavvia il raspberry e vedi se il problema si risolve.
    Se hai ancora problemi fammi sapere, sarò felice di aiutarti.

  87. @Marco,
    spero di avere compreso la tua domanda.
    in piGarden non ci sono distinzioni tra le elettrovalvole, comunque puoi benissimo trattare una come se fosse una master e gestirla a tuo piacimento.
    Se hai dubbi fammi sapere.

  88. grazie, ho modificato il file come mi hai detto, ma ora mi da un altro problema…

    PiGarden server error
    stdClass Object
    (
    [description] => Invalid json socket client response at line 126 of file /home/pi/piGardenWeb/app/PiGardenSocketClient.php
    [code] => 0

    non capisco, fino all altro giorno andava… cosa è cambiato…
    grazie

  89. I nomi delle elettrovalvole nel file di configurazione non devono contenere spazi. Se è questo il tuo caso, togli gli spazi.
    In alternativa prova a cancellare tutto il contenuto della directory /home/pi/piGarden/state

    Fammi sapere se hai ancora problemi.

  90. @lejubila Ciao, ti confermo che la cancellazione dei contenuti della directory /home/pi/piGarden/state funziona per l’errore “… at line 126 …”, ti avviso nel caso di bugfix vari… grazie!

  91. Ciao David,
    anche i miei complimenti si associano a quelli di chi mi ha preceduto. Sono un neofita e ti prego di avere santa pazienza. Mi insegni a configurare le altre GPIO per arrivare a gestire 14 zone?
    Non so da che parte iniziare…
    Uso un PaspberryPi 3B ed il comando gpio readall mi restituisce tanti “IN” dove immagino sia necessario ci sia “OUT”, ma come faccio a farlo?

    Grazie molte in anticipo,

    Giulio

  92. Ciao @Giulio,
    per configurare altri gpio ti basta creare delle nuove zone nel file di configurazione di piGarden e assegnare l’identificativo del gpio (quello della colonna BCM che vedi con il comando “gpio readall”) alle variabili EVx_GPIO.
    Una volta fatto questo dovrai reinizializzare piGarden con il comand
    /home/pi/piGarden.sh init
    a questo punto se rieseguirai il comand gpio readall vedrai che i nuovi gpio che hai assegnato a piGarden sono nello stato OUT.

    Se hai altri problemi fammi sapere.

  93. Funziona perfettamente, anche se il percorso giusto è:

    /home/pi/piGarden/piGarden.sh init

    Grazie mille!

  94. Ciao , complimenti per il tuo progetto, lo sto seguendo con molto interesse , mi domandavo se hai mai pensato di renderlo integrabile con HomeAssistant , magari rilasciando un add-on

  95. Ciao #Daxda
    a dire la verità nel branch develop su github è già presente il supporto per il protocollo mqtt con il quale è possibile far dialogare piGarden con Home Assistent. Infatti tutt’ora l’ho configurato sulla mia installazione di Home Assistent. Quello che ho fatto non è un plugin ma bensì ho configurato vari sensori e switch di HA in modo che comandino piGarden via mqtt.
    A breve pubblicherò il supporto mqtt nella versione stabile insieme ai relativi post dove spieghero l’integrazione con HA

  96. Ciao,
    ho rifatto l’installazione e nonostante abbia ripetuto i vari passaggi mi da questo errore, una volta che tento di accedere alla dashbard tramite interfaccia web. Non trova le zone

    PiGarden server error

    stdClass Object
    (
    [description] => Invalid json socket client response at line 126 of file /home/pi/piGardenWeb/app/PiGardenSocketClient.php
    [code] => 0
    )

  97. @christian
    l’errore può essere dovuto a
    – nomi di elettrovalvole con spazi al loro interno
    – malformazione del json contenere i dati delle condizioni meteo

    Nel primo caso correggi il nome delle elettrovalvole.
    Nel secondo prova a cancellare il contenuto della directory state.

    Se non risolvi impartisci il comando
    /home/pi/piGarden/piGarden.sh json_status

    e riportarmi l’output emesso.

  98. Ciao,
    I nomi delle zone li legge correttamente, ma dopo un pochino da errore.
    L’output:
    Syntax error: “}” unexpected
    root@Garden1:/home/pi/piGarden# sh piGarden.sh json_status
    piGarden.sh: 11: piGarden.sh: function: not found
    piGarden.sh: 13: piGarden.sh: log_write: not found
    piGarden.sh: 15: piGarden.sh: unlock: not found
    piGarden.sh: 17: piGarden.sh: trigger_event: not found
    piGarden.sh: 24: piGarden.sh: cannot create : Directory nonexistent
    piGarden.sh: 28: piGarden.sh: drv_supply_bistable_init: not found
    piGarden.sh: 20: piGarden.sh: Bad substitution
    seq: operando mancante
    Try ‘seq –help’ for more information.
    seq: operando mancante
    Try ‘seq –help’ for more information.
    piGarden.sh: 55: piGarden.sh: log_write: not found
    piGarden.sh: 58: piGarden.sh: trigger_event: not found
    piGarden.sh: 59: piGarden.sh: log_write: not found
    piGarden.sh: 61: piGarden.sh: Syntax error: “}” unexpected

  99. Ciao, ho reinstallato 3 volte con installazione pulita ma da web server ho il questo 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
    )

    e nella popup appare :
    pigarden.stream_socket_client(): unable to connect to tcp://localhost:8084 (Connection refused) at line 34 of file /home/pi/piGardenWeb/app/PiGardenSocketClient.php

    ho letto che il problema è legato al comando ./piGarden.sh start_socket_server Force che va lanciato dalla home ma se lancio dalla home il comando
    ./piGarden.sh start_socket_server Force
    mi ritorna:
    bash: ./piGarden.sh: File o directory non esistente
    Se dalla home lancio:
    ./piGarden/piGarden.sh start_socket_server Force

    mi parte il programma ma ho l’errore di cui sopra
    ho un raspberry 3

  100. Ciao @Andrea,
    il problema per cui piGardenWeb non funziona è l’errore che si verifica quando avvii il socket server.

    Dovresti verificare se tutti i path definiti nelle variabili presenti dentro /etc/piGarden.conf sono corretti.
    Se non lo sono vuole dire o che non tutte le dipendenze sono installate oppure gli eseguibili sono in posizioni del filesystem diversi. Se è quest’ultimo il caso, modifica le variabili indicando il percorso giusto.

    Fammi sapere se riesci a risolvere il problema.

  101. Innanzitutto ti faccio i complimenti per l’ottimo lavoro , in secondo luogo ho risolto, avevo capito di dover sostituire inserire il mio ip nel file di configurazione:
    TCPSERVER_IP=”192.168.1.99″
    ho rimesso quello del default ed è andato tutto alla perfezione.
    Ti volevo chiedere solo un paio di cose, non so se ho configurato male qualcosa io ma quando avvio il raspberry i gpio utilizzati da piGarder sono preimpostati su ON poi quando attivo le valvole vanno su OFF, è possibile invertirle il procedimento per evitare che stiano sempre eccitati i relè ? Volevo sapere anche se fosse possibile usare insieme il sistema sia in modo monostabile che bistabile, grazie e complimenti ancora per bel progetto

  102. Ciao @Andrea.
    nella stessa installazione possono convivere sia elettrovalvole bistabili che monostabili.
    Per default tutte le elettrovalvole sono trattate di tipo bistabile. Per quelle monostabili indicarle impostando nel file di configurazione una variabile di questo tipo:
    EV2_MONOSTABLE=1

    In questo modo avrai indicato che l’elettrovalvola numero due è di tipo monostabile.

    Per quanto riguarda i gpio, così ad occhio, penso che dovresti spostare la connessione delle elettrovalvole sui contatti dei relè e collegarle si contatti del “comune” e “normalmente chiuso”, dopo di che nel file di configurazione dovresti invertire i valori dei parametri RELE_GPIO_CLOSE e RELE_GPIO_OPEN.

  103. Ciao, e tantissimi complimenti per il lavoro svolto!
    Io ho provato a seguire le indicazioni di Ivano per installare piGardenWeb su apache2 e MySql, ma quando provo a registrarmi mi compare il seguente errore: “PDOException in Connection.php line 333: SQLSTATE[42S02]: Base table or view not found: 1146 Table ‘piGarden.users’ doesn’t exist”.
    Evidentemente mi sono perso qualche pezzo per strada e non sono state create le tabelle nel Db. Quali istruzioni sarebbero necessarie per la creazione?

  104. Ciao @Paolo
    per il tuo problema devi creare manualmente il db su mysql, dopo di che editi il file .env inserendovi i parametri di connessione i questo modo:
    DB_CONNECTION=mysql
    DB_HOST=nome_host_o_ip
    DB_PORT=3306
    DB_DATABASE=nome_db
    DB_USERNAME=nome_utente
    DB_PASSWORD=password

    fatto questo, esegui la creazione delle tabelle così:
    cd /home/pi/piGardenWeb
    ./artisan migrate

    Fatto questo dovresti avere il database popolato delle tabelle necessarie per il funzionamento id piGardenWeb.

    Se riscontri altri problemi fammi sapere.

  105. Ciao @lejubila e grazie per il supporto, effettivamente mi mancava la generazione delle tabelle con l’istruzione ./artisan migrate. Ti faccio ancora tanti complimenti per il progetto, ora vedo di fare alcune prove e poi magari se mi viene in mente qualche suggerimento/richiesta ti ricontatto. Ciao!

  106. Ciao David
    Relativamente a questo tuo vecchio post in questa pagina:
    <>
    Io ho qualche idea di come creare uno script fatto così.
    se vuoi cooperiamo per modificare pigarden, ma mi serve una mano per pigardenweb che non saprei come modificare.
    ciao
    A

  107. il tuo post (sparito dal commento precedente) era:
    lejubila 25 ottobre 2017 22:51
    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.

  108. @Andrea,
    come dicevo nel precedente post io sono a disposizione, se trovi difficoltà in alcuni punti ti aiuto senza problemi.

  109. Ciao,
    sto mettendo in piedi un apk per android su Android Studio che attraverso la WebView mi permette di visuailzzare il sito di PiGardenWeb come se fosse un app. La cosa si sta facendo interessante. Ovviamente ancora l’ho pensata solo per lavorare sulla rete locale (risoluzione nomi.ecc.ecc.)… Sto avendo problemi con il mio device (Xiaomi Redmi 4X) e sto provando la cosa in emulazione dispositivo. L’ho chiamata “OrtApp”. Quando l’avrò conclusa vorrei condividere con voi il mio risultato, in modo da tener traccia di eventuali migliorie che mi potete suggerire. Vi aggiorno sulle evoluzioni!

  110. Ciao @Tommaso,
    il tuo progetto è molto interessante, una volta completato se vorrai, sarò lieto di poterlo ospitare qui sul blog.
    Tienici aggiornati sugli sviluppi.

  111. scusate ma ho bisogno del vostro aiuto … sono completamente a digiuno di Linus ma seguendo la guida speravo di riuscire a installare tutto … sono arrivato alla generazione dell’application key (necessaria per laravel) :
    cd
    cd piGardenWeb
    cp .env.example .env
    touch database/piGarden.sqlite
    ./artisan key:generate
    ./artisan migrate

    e mi dice database in home….pigarden.sqlite non esistente
    non so dove sbattere la testa …. help me

  112. si proprio dopo quel comando. il messaggio è “invalid argument exception database (/home/pi/pigardenweb/database/piGarden.sqlite) does not exist.
    il file nella cartella c’è… ma pare vuoto non so se debba essere cosi.

  113. @stefano,
    il file è giusto che sia vuoto, infatti è il comando migrate che lo deve inizializzare e popolare.
    Forse i file non ha i giusti permessi di lettura/scrittura per l’utente pi?
    Prova a dare permessi di lettura/scrittura a tutti con il seguente comando:

    chmod 666 /home/pi/pigardenweb/database/piGarden.sqlite

    e successivamente riprova con il comando migrate.
    Fammi sapere se questa soluzione ha funzionato.

  114. il fatto che il nome della directory pigardenweb sia tutto minuscolo puo influire ?

  115. @stefano,
    si probabilmente il problema è proprio quello.
    Linux è case-sensitive quindi le maiuscole/minuscole fanno la differenza.
    Il percorso del database deve essere quello indicato nel file .env contenuto nella directory di piGardenWeb, ovvero
    DB_DATABASE=/home/pi/piGardenWeb/database/piGarden.sqlite
    quindi rinomina il percorso e il nome del file come indicato sopra e vedrai che funzionerà.

  116. questa che Linux è case sensitive l’ho imparata !
    tabelle create con successo …. ma ora il comando chown mi dice utente non valido “g+w”

  117. @stefano,
    probabilmente hai mischiato i due comandi chown e chmod.
    Ti consiglio di fare copia e incolla dei comandi.

  118. mi scuso per il basso livello dei miei commenti !
    alla fine potrai raccoglierli in una sezione dedicata per piPPAgardenWeb 😉
    per ora grazie sto procedendo….

  119. ciao sono riuscito a far tutto, aspetto le valvole e rele….
    volevo chiedere se è possibile assegnare una porta diversa dalla 80 all interfaccia web.
    ho un problema … mi da continuamente pioggia sul sensore fisico (che non ho) nonostante abbia impostato RAIN_GPIO= e pioggia online “sconosciuto” ma le condizioni meteo di openWmap sono visualizzate correttamente cosa ho sbagliato ?

  120. @stefano,
    per una porta diversa dalla 80 devi variare il file di configurazione /etc/nginx/sites-available/default di nginx modificando la direttiva
    listen 80 default_server;
    mettendo la porta che desideri. Fatto questo devi riavviare nginx con il seguente comando
    sudo systemctl restart nginx
    Lo stato della pioggia online probabilmente di da il valore “Sconosciuto” perché non ha ancora piovuto da quando hai installato piGarden.
    Per lo stato della pioggia sul sensore hardware prova a cancellare tutto il contenuto della cartella “state” di pigarden.

  121. tutto fatto grazie, sensori e porta a posto.
    credo potrebbe essere utile poter vedere il log dalla pagina web, è possibile ?

  122. Ciao, avevo preparato una rpi zero w con l’ultima versione di raspbian e il tuo progetto piGardenWeb e tutto funzionava correttamente, l’ho spenta a novembre e riaccesa qualche giorno fa e ho eseguito gli aggiornamenti apt-get update/upgrade.
    Ora il problema è che php inizia a rispondere solo dopo circa 10 minuti dall’accensione, l’errore è Gateway time-out di nginx.
    Cosa mi consigli di fare? Grazie

  123. Ho già provato con vari di questi parametri senza successo, probabilmente non ho ancora individuato il parametro corretto. Il problema credo sia lato php: il sistema per quei 10 minuti non sta occupando CPU o altre risorse in modo particolare, si notano dei worker interni a php che aumentano come numero e poi si riducono e a quel punto il sito funziona. Cerco di approfondire e se trovo la soluzione te la indico. Grazie per il tuo supporto

  124. oggi ho notato che il mio file log non è aggiornato … la data di ultima modifica è di pochi istanti fa, ma l’ultimo evento registrato è del 23 nonostante sia sempre stato acceso e funzionante
    visto che stava piovendo fino a ieri volevo verificare il corretto funzionamento dello stop irrigazione x pioggia

  125. Buongiorno!
    Ho realizzato e messo in funzione il progetto, aggiungendo uno script python che mi accende/spegne una valvola generale ed relativa alimentazione di unapompa adimmersione.
    Via batch, cioè tramite il solo script bash, tutto funziona a meraviglia.
    Ho quindi implementato la parrte web.
    Il problema è che vedo la grafica funzionare (con relativa apertura e chiusura fisica dell’elettrovalvola) solo dopo che ho dato una serie di open / close via batch. Altrimenti posso solo continuare aprire la stessa o le altre valvole ma mai chiuderle.
    Quando termino la sequenza di un n.ro imprecisato dicomandi batch, il sistema funzionabene ancheutilizzando l’interfaccia grafica.
    Qualcuno ha avuto un problema simile?

    Ancora una cosa: qualcuno ha los chema elettrico e relativo layout per Cadsoft/Eagle?

    Grazie.
    Paolo.

  126. Ciao @Polo,
    non è che abbia capito molto del problema che hai.
    Il problema è che non vedi aggiornare l’interfaccia web se apri/chiudi le elettrovalvole cn lo script piGarden.sh da linea di comando?
    Tieni conto che l’aggiornamento dell’interfaccia web non è immediato ma avviene una volta ogni 20 secondi.

  127. Grazie per la risposta solerte!
    Allora, procediamo per step.
    Anzitutto diciamo che il problema è solamente usando l’interfaccia web. I comandi inviati tramite console,fanno lavorare bene le valvole bistabili.
    I) Acceso Raspberry, accedo all’interfaccia con IP:PORTA
    (Avrei scrinshoot man on so se si possono inserire)
    II) Accedo con credenziali
    III) Mi appare l’interfaccia con 6 valvole la cui icona è ‘valvola
    chiusa’
    IV) Click per aprire una valvola
    V) Appare il messaggio ‘Irrigazione aperta’ MA l’icona rimane la stessa (valvola chiusa) e la valvola bistabile fa transitare l’acqua
    VI) Ovviamente, in queste condizioni, posso sempre e solo ‘aprire’ la valvola dal momento che l’interfaccia è sempre la stessa
    VII) passo alla console e invio il comando di chiusura. La Valvola si chiude correttamente

    Non conosco la piattaforma usata. La sto studiando in modo da poter inviare qualche messaggio sul file di log
    Credo però che tramite web per un certo tempo, non si generino gli eventi. Questo per due ragioni:
    I) Dopo un pò di smanettamento via batch su apertura e chiusura delle valvole per i test effettivi di irrigazione, l’interfaccia lavora bene. Icona con valvola aperta quando scorre acqua, viceversa chiusa. Ogni click sulla relativa icona fa aprire e chiudere alternativamente la valvola bistabile interessata.
    II) Ho associato all’evento ‘open_before’ e ‘open_in_before’ uno script con cui incremento un contatore, memorizzato su un file di testo in ‘state’. Ogni volta che apro una valvola, il contatore si incrementa tramite uno script python. viceversa si decrementa alla schedulazione dei rispettivi eventi ‘before_after’. Tutto ciò affinchè lo script python possa aprire una valvola monostabile generale e dare alimentazione ad una pompa ad immersione.
    Bene. Ho notato che non c’è incremento quando uso l’interaccia web inizialmente, come descritto precedentemente. Avviene l’incremento/decremento solo successivamente, dopo lo smanettamento di cui parlavo. Smanettamento che dura diversi minuti, dal momento che,come detto, serve per la verifica dell’irrigazione.
    Preciso ancora che il problema persiste fin dalla prima installazione dell’interfaccia.
    Se qualcuno ha qualche idea in proposito …. io intanto cerco di capire perchènon si scatena l’evento di chiusura.
    Buona giornata
    Paolo

  128. Problema risolto! L’owner dell’evento (/piGarden/state/ev1 …..) era ‘root’, anziche l’utente che per me è ‘pi’.
    I comandi che davo batch o via console, come preferite dire, li davo usando ‘sudo’. Quindi come amministratore. Dandoli come utente, la valvola si apre e chiude,ma a console ricevo l’errore ‘Permesso negato su ev1′. errore nello script piGarden.sh alla riga 350.
    E’ stato sufficiente cambiare l’owner ad ev1…6ed il problema si è risolto.
    Ora devo scoprire chi invia sul file di log socket connection from:’ .
    Grazie per la pazienza nelleggere i miei post ….

  129. @Paolo
    effettivamente lanciare piGarden.sh con sudo o come utente root può causare problemi sui permessi dei file.
    Per quanto riguarda i log “socket connection from:” è l’interfaccia web che instaura una connessione per leggere lo stato di piGarden.

  130. Salve, ma un modo per poter visualizzare l’ultima pioggia (schedulata) e la prossima pioggia (schedulata), magari anche tramite un file log creato e aggiornato in database ogni X secondi esiste? Un po’ come un count-down all’avvio della prossima irrigazione di una qualsiasi zona. Perchè sarebbe utile avere queste informazioni quando si vuole eseguire il taglio dell’erba. Per chi usa la centralina con una sola schedulazione potrebbe sembrare inutile ma per chi ha troppe schedulazioni attive in giorni e orari differenti, questo può essere di grande aiuto e sbrigativo per programmarsi nel proprio diario di giardinaggio il giorno e l’ora per tagliare l’erba senza doversi assicurare prima che non ci siano programmazioni pianificate. Questo per evitare di innaffiarci con tutto il rasaerba xD . Potrebbe ciò essere parte di un futuro aggiornamento del Pannello WEB?

    Complimenti davvero per il progetto che lei ha realizzato e tiene in costante aggiornamento. Non le nascondo che centraline in commercio che costano molti soldi, non si avvicinano minimamente alle funzionalità della centralina che grazie a lei e il suo progetto ho realizzato. In pratica mi trovo a controllare anche fuori casa con l’uso di internet la centralina tramite DNS che mi riporta al modem di casa mia con un port mapping.

    Nella mia città, credo di essere l’unico ad avere una centralina di questa portata, questo mi diverte e al tempo stesso mi rende fiero di averla trovata in questo blog anche perchè da quando ho realizzato la sua centralina il mio prato è sempre più verde.

  131. Ciao Lejubila,
    intanto grazie per il progetto e per la chiarezza espositiva e lineare… 🙂

    Stavo per buttare giù due righe su cron e relativo script per sostituire la mia centralina irrigazione col raspberry 3, quando ho trovato il tuo progetto in rete. E mi sto cimentando con l’installazione.

    Arrivo alla partenza del server ma la pagina web mi ritorna il messaggio
    ” pigarden.stream_socket_client(): unable to connect to tcp://localhost:8084 (Connection refused) at line 34 of file /home/pi/piGardenWeb/app/PiGardenSocketClient.php ”
    Per quanto abbia stoppato e riavviato senza apparenti problemi il socket col comando
    ” ./piGarden.sh start_socket_server force ” l’errore resta.

    Qualche idea?

  132. Ciao David,

    per quanto riguarda il post precedente ho risolto, si trattava del server tcpserver che non era installato (o meglio, con ps risultava un processo in corso con quel nome ma non era quello del pacchetto indicato).

    Ora gira tutto, ho collegato i relè e li piloto da piGardenWeb.
    Solo che ho notato che di default sono normalmente eccitati.
    Penso di dover cambiare l’impostazione di default dei pin del Raspi, ma non vorrei fare casino.
    Puoi indicarmi il file e/o la posizione da andare a verificare per tenere i pin del Raspi normalmente low?

    Thank you

    Salvato

  133. Ciao Salvatore
    guarda il file /etc/piGarden.conf le seguenti variabili valorizzate come segue di default:
    # 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

    Se hai relè low-level trigger (si eccitano se gli passi lo stato 0 alla GPIO), dovresti impostare le variabili nel seguente modo:
    RELE_GPIO_CLOSE=1
    RELE_GPIO_OPEN=0

    ciao

    A

  134. Correct, Andrea.
    Grazie del pronto suggerimento.
    Come detto sopra avevo visto l’impostazione dello stato dei GPIO, ma non ero sicuro che dipendessero solo da quella configurazione, e/o che non confliggesse con altri files di config…

    Ottimo lavoro.

  135. Ciao @Cosimo,
    tutto quello che suggerisci è interessante, attualmente però non è implementato niente di tutto questo.
    Per eventuali richieste di nuove funzionalità puoi aprire delle issue direttamente sul repository github di piGarden e piGardenWeb in modo che non vadano perse tra i mille commenti del blog.

  136. Ciao Lejubila, volevo chiederti come mai non riesco a ricevere alcun dato dal servizio Openweathermap. Ho fatto la registrazione, ho inserito la Key ricevuta , ho modificato la localita ma non vedo ne le ultime precipitazioni, ne il riquadro sotto con i dati della località.
    Ho provato anche a lasciare la tua località, ma niente.
    La key funziona, perchè se provo a testarla direttamente sul link http….. funziona.
    Cosa posso aver sbagliato?
    Grazie

  137. ciao scusa ma ho un problemino sul mio nuovo impianto… il sensore online mi segnala ultima pioggia sconosciuta forse perche non ha ancora piovuto dall’installazione, ma il sensore fisico (che non ho) mi segnala pioggia tutti i giorni esattamente all’ora pianificata per l’apertura dell’irrigazione !!!
    ho provato a cancellare il contenuto della cartella state,
    impostato RAIN_GPIO=
    ed eliminato il ceck con ./piGarden.sh del_cron_check_rain_sensor
    im questo modo l’irrigazione non parte mai e non so come fare 😉

  138. ciao @stefano,
    il contenuto della cartella state va cancellato dopo avere eliminato il cron e avere impostato il valore RAIN_GPIO senza valore.
    Quindi riprova a cancellare nuovamente il contenuto della cartella state.
    Se il problema persiste ancora, guarda del file di log cosa succede quando provi ad aprire un’elettrovalvola e fammi sapere.

  139. avevo messo rain_gpio a zero invece che senza valore … colpa mia ora funziona alla perfezione

  140. Poiché ho voluto utilizzare un’unico Raspberry per i servizi 123Solar, Metern e PiGardenweb, ho dovuto utilizzare un’unico server http (apache2).
    Per far girare i tre siti ho dovuto creare un file link della directory /home/pi/pigardenweb (con relativa modifica dei diritti cartelle e files) piazzato nella root di apache2.
    Il tutto funge, ma vorrei mettere far funzionare pigarden e pigardenweb installandoli direttamente sotto le cartelle /var/www/ (come per 123solar e metern).

    La domanda è: oltre l’attivazione del database sqlite nella posizione là dove viene installato, ci sono altri riferimenti alle posizioni assolute da modificare nei files di configurazione o di esecuzione o nel database?

    Non vorrei fare una ricerca in tutto il codice e/o andare per tentativi…

    Grazie, ciao

  141. Ciao @salvatore,
    non ci sono altri riferimenti assoluti.
    Se apache è configurato correttamente non dovresti avere problemi.

  142. Ciao, complimenti per il progetto!
    Ho installato qualche giorno fa su Raspberry Pi 3 + sia piGarden che piGardenWeb.
    Ho avuto qualche problemino per via del php 7.3 ma ho risolto.
    Quello che ancora non sono riuscito a sistemare è la visualizzazione delle zone.
    Sulla dashboard (menu a sinistra) mi dice sempre “Nessuna zona trovata” nonostante siano correttamente configurate e senza spazi nell’alias. Questo non mi permette quindi di visualizzare la schedulazione delle irrigazioni.
    In realtà non ho ancora collegato il Rasp all’impianto perchè vorrei usare anche Arduino che dialoga con Rasp in wireless per rilevare anche umidità del terreno, ph, luce e temperatura (se qualcuno ha idea di come fare da bash a dialogare con Arduino lo ringrazio anticipatamente) però immagino che dovrebbe funzionare lo stesso la visualizzazione delle zone nel menu a sinistra. Nel pannello centrale invece si vedono e riesco ad interagire.

  143. @ryckers78

    Se non ricordo male, salvo aggiornamenti del programma gui, Arduino ha un suo compilatore.
    Scrivi gli script (nel suo linguaggio/sintassi) e poi il programma compila/invia ad Arduino.
    Almeno, su ambiente winsozz…
    Con Arduino gestivo alcuni consumi legati al ftv. Passare a Rasp è stato come riprendere a respirare… 🙂

  144. Ciao @rykers78,
    dal pannello web non ti viene mostrato nessun errore? Oltre a non mostrarti le zone sulla parte sinistra (il menu) non ti vengono mostrate nemmeno nella dashboard?
    Prova da terminale ad impartire il seguente comando:
    /home/pi/piGarden/piGarden.sh list_alias

    Dovrebbe mostrarti gli alias delle zone configurate, se così non è vuole dire che c’è qualcosa di errato nel file di configurazione.

    Altra cosa che puoi verificare è se il socket server è in esecuzione.

    Fammi sapere.

  145. Ciao,
    non si vedono le “zone” sulla parte sinistra (il menu), mentre nella dashboard si vedono correttamente. Non ho cambiato il nome, quindi sono ancora 1,2,3,…
    Ho impartito il comando “/home/pi/piGarden/piGarden.sh list_alias” e mi presenta il nome delle zone 1,2,3,…
    Usando il comando “sudo lsof -i -P -n | grep LISTEN” per controllare se il server è in ascolto vedo la porta 80 di nginx in ascolto.
    Per quanto riguarda l’integrazione con Arduino mi è chiaro che devo lavorare con la sua gui e compilatore ma non ho idea di come integrare la ricezione delle risposte di Arduino su piGarden, magari inserendole nello stesso database sqlite che usa piGarden per poi decidere se far partire o meno l’irrigazione.
    Grazie.

  146. Ciao @rykers78,
    scusa la domanda abbastanza banale. Non è che sei sulla pagina pubblica di piGardenWeb? Quella che compare senza eseguire l’autenticazione. Perché su questa pagina le zone non compaiono sulla sinistra.

    Per la comunicazione tra arduino e raspberry sinceramente non saprei, ma se riesci ad acquisire i dati, per mostrarli su piGardenWeb nei cambi relativi al meteo già esistenti, forse il sistema migliore è quello di scrivere un apposito driver (se non ricordo male basta popolare un json con gli appositi valori). Puoi prendere come modello quello che ho scritto per openweathermap. Altre info le puoi trovare qui https://www.lejubila.net/2017/10/pigarden-gestione-drivers/

  147. Ciao lejubila, grazie per la dritta sui driver, appena riesco a capire come popolare il database con le informazioni che mi arriveranno dalla scheda esterna proverò a realizzare il driver.
    Per quanto riguarda le zone, sono collegato correttamente con il mio utente e sono online. Non vorrei che fosse un altro problema legato a PHP 7.3 solo che non sono molto pratico si questo linguaggio server-side e ho difficoltà nel capire nel tuo progetto qual’è la pagina principale e come vengono richiamate le altre pagine in modo da visualizzare il codice e darti qualche dettaglio in più.
    Grazie ancora.

  148. @rykers78,
    se mi fai avere in qualche modo il tuo /etc/piGarden.conf verifico sulla mia installazione se riesco a riprodurre il tuo problema.
    Riguardo al db di piGardenWeb non deve essere popolato con alcun dato, infatti li ci stanno soltanto gli utenti. I dati vengono ricevuti ogni 20 secondi facendo delle chiamate allo script piGarden.sh tramite socket.
    L’interfaccia web è costruita sopra il framework Laravel e rispecchia il paradigma mvc.
    Tutto parte da piGardenWeb/app/Http/route.php dove sono definite le rotte per gli instradamenti dell url. Da li viene richiamato i rispettivi metodi nel controller, del controller vengono recuperati i dati per essere passati alla view.
    I controller stanno in piGardenWeb/app/Http/Controller e le view in
    piGardenWeb/resources/views

  149. Ciao lejubila,
    sei stato gentilissimo, ora la struttura mi è più chiara anche se non conosco l’MVC, lo studierò per capire meglio il funzionamento del progetto.
    Il DB lo userei per creare altre tabelle nelle quali recuperare i dati di temperatura, umidità, luce, PH e EC e ragionare anche su questi valori per decidere se irrigare e quanto per ogni pianta (lo usereui sia per l’orto tradizionale che per quello idroponico). Se mi consigli di non toccare il DB di piGarden creerò un altro DBSqlite per salvare i dati.
    Di seguito il file piGarden.conf (ho aggiunto solo i parametri di openweathermap dopo essermi iscritto e aver recuperato la key, ma anche questo non sembra funzionare, forse perchè non ha ancora piovuto fino ad oggi…). Ho installato piGarden e piGardenWeb sullo stesso Rasp Pi 3+:

    # Log file
    LOG_FILE=”/home/pi/piGarden/log/piGarden.log”
    LOG_FILE_MAX_SIZE=1048576 # 1MB

    # Log file for driver output
    LOG_OUTPUT_DRV_FILE=”/tmp/piGarden.drv.log”

    # Status directory
    STATUS_DIR=”/home/pi/piGarden/state”

    # Event directory
    EVENT_DIR=”/home/pi/piGarden/events”

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

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

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

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

    # Percorso gzip
    GZIP=”/bin/gzip”

    # Percorso 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”

    # Percorso stat
    STAT=”/usr/bin/stat”

    # Percorso mosquito_pub
    # # Installare con apt install mosquitto-clients
    MOSQUITTO_PUB=”/usr/bin/mosquitto_pub”

    # Se impostato con il valore 1, indica che il sistema gestisce elettrovalvole monostabili,
    # se impostato a 0 il sistema gestirà elettrovalvole bistabili
    EV_MONOSTABLE=1

    # Id gpio usati per simulare il doppio deviatore con cui eseguire l’alimentazione alle elettrovalvole
    SUPPLY_GPIO_1=2 # Physical 3 – wPi 8
    SUPPLY_GPIO_2=3 # Physical 5 – wPi 9

    # Stato dei due gpio per impartire l’alimentazione positiva alle elettrovalvole (aperta)
    SUPPLY_GPIO_POS=0

    # Stato dei due gpio per impartire l’alimentazione negativa alle elettrovalvole (chiusa)
    SUPPLY_GPIO_NEG=1

    # 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

    # Id del gpio usato per collegare il sensore di rilevamento pioggia
    RAIN_GPIO= # AndreaP. era 25 / Physical 22 – wPi 6

    # Valore in ingresso sul gpio definito in RAIN_GPIO che indica lo stato di pioggia
    RAIN_GPIO_STATE=0

    # Numero totale di elettrovalvole
    EV_TOTAL=6

    # Definizione delle elettrovalvole
    EV1_ALIAS=”1″ #
    EV1_GPIO=17 # Physical 11 – wPi 0
    #EV1_NORAIN=1 # Non interrompe l’irrigazione di questa zona in caso di pioggia
    #EV1_MONOSTABLE=1 # L’elettrovalvola è monostabile

    EV2_ALIAS=”2″ #
    EV2_GPIO=27 # Physical 13 – wPi 2

    EV3_ALIAS=”3″ #
    EV3_GPIO=22 # Physical 15 – wPi 3

    EV4_ALIAS=”4″ #
    EV4_GPIO=18 # Physical 12 – wPi 1

    EV5_ALIAS=”5″ #
    EV5_GPIO=23 # Physical 16 – wPi 4

    EV6_ALIAS=”6″ #
    EV6_GPIO=24 # Physical 18 – wPi 5

    # Definisci il servizio online da utilizzare per il controllo delle condizioni meteo, puoi scegliere openweathermap oppure wunderground.
    # Se non vuoi configurare nessun servizio imposta il vale “none”
    WEATHER_SERVICE=”openweathermap”
    #WEATHER_SERVICE=”none” # Nessun servizio configurato

    # Parametri di openweathermap, definisce l’api key e il luogo per recuperare lo stato meteo online
    OPENWEATHERMAP_KEY=”aafd67bc766109db2ba4dd248b2d1c9a”
    OPENWEATHERMAP_LOCATION=”Turin,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/Rivalta%20di%20Torino” # 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
    NOT_IRRIGATE_IF_RAIN_ONLINE=0

    # Il parametro è simile a quello precedente, il controllo però anziché essere fatto attingendo a wunderground, viene eseguito direttamente sul sensore se installato. Inserendo il valore zero non viene eseguito nessun controllo.
    # NOT_IRRIGATE_IF_RAIN_SENSOR=86400
    NOT_IRRIGATE_IF_RAIN_SENSOR=0

    # Indirizzo ip e porta di ascolto del socket server
    TCPSERVER_IP=”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

    # Parametri connessione al broker mqtt
    MQTT_ENABLE=0 # set 1 to enable
    MQTT_HOST=you_host_mqtt
    MQTT_PORT=1883
    MQTT_USER=your_user_mqtt
    MQTT_PWD=yout_password_mqtt
    MQTT_TOPIC=”pigarden/result”
    MQTT_CLIENT_ID=piGarden

  150. @rykers78
    ho provato il tuo file di configurazione e come puoi vedere dall’immagine a me funziona bene.

    Che versione hai di raspbian?

  151. Ciao,
    PRETTY_NAME=”Raspbian GNU/Linux 10 (buster)”
    NAME=”Raspbian GNU/Linux”
    VERSION_ID=”10″
    VERSION=”10 (buster)”
    VERSION_CODENAME=buster
    ID=raspbian
    ID_LIKE=debian

  152. @rykers78

    ho installato Raspbian 10 Duster su un raspberry che avevo da parte ed ho aggiornato la guida di installazione su github.
    Inserendo il tuo file di configurazione a me funziona tutto correttamente.

    Ti consiglio provare a rieseguire l’installazione di piGardenWeb seguendo la nuova guida che trovi qui:
    https://github.com/lejubila/piGardenWeb/blob/master/README.md

    Se hai già installato qualche pacchetto relativo al php, rimuovilo prima di procedere con l’installazione.

  153. Ciao lejubila,
    ho reinstallato di nuovo tutto 2 volte, la prima con Php7.3 ma niente, ho reinstallato con Php7.1 e ora funziona tutto.
    Grazie!
    Ho trovato al seguente indirizzo (https://www.instructables.com/id/Arduino-to-Laravel-Communication/) il modo di comunicare tra Raspeberry e Arduino tramite Laravel con il routing.
    L’articolo dice di aggiornare il file Laravel/routes/api.php ma nella versione di Laravel(4?) di piGarden non è presente questo file.
    Ho aggiornato allora il file piGardenWeb/app/Http/routes.php incollando al fondo del file le due routes, modificandole come segue (altrimenti davano errore entrambe)

    /* ORIGINALE
    Route::middleware(‘auth:api’)->get(‘/user’,function (Request $request) {
    return $request->user();
    });
    */
    /* MODIFICATO*/
    Route::group([‘middleware’ => [‘auth:api’]], function () {
    Route::get(‘/users’, function (Request $request) {
    return response()->json([‘name’ => ‘user’]);
    });
    });

    /* ORIGINALE
    Route::post(‘/’, function (\Illuminate\Http\Request $request) {
    \Illuminate\Support\Facades\Storage::append(“arduino-log.txt”,
    “Time: ” . now()->format(“Y-m-d H:i:s”) . ‘, ‘ .
    “Temperature: ” . $request->get(“temperature”, “n/a”) . ‘°C, ‘ .
    “Humidity: ” . $request->get(“humidity”, “n/a”) . ‘%’
    );
    });
    */
    /* MODIFICATO*/
    Route::post(‘Arduino’, function (\Illuminate\Http\Request $request) {
    \Illuminate\Support\Facades\Storage::append(“arduino-log.txt”,
    “Time: ” . now()->format(“Y-m-d H:i:s”) . ‘, ‘ .
    “Temperature: ” . $request->get(“temperature”, “n/a”) . ‘°C, ‘ .
    “Humidity: ” . $request->get(“humidity”, “n/a”) . ‘%’
    );
    });

    Ma mi viene mostrato l’errore “405 Method not allowed.”
    E’ possibile che ci sia qualcosa di incompatibile con la versione Laravel 5 che ho io?
    Inoltre immagino che dovrei sempre andare sulla pagina mioIP/Arduino per popolare il file di log ma vorrei automatizzare la cosa inserendo ogni 5 minuti i risultati su un DB sqlite.
    Idea di come fare?
    Grazie ancora per gli utilissimi aiuti.

  154. Scusate se OT ma creare un gruppo telegram per condividere le esperienze ed i problemi riscontrati con pigarden?

  155. Scusate se OT ma creare un gruppo telegram per condividere le esperienze ed i problemi riscontrati con pigarden?

  156. @rykers78,
    così su due piedi non saprei il motivo dell’errore ma tra laravel 4 e 5 ci sono delle sostanziali differenze quindi immagino che il codice che hai trovato vada riadattato.
    C’è però un problema di fondo: se vuoi gestire le irrigazioni in base ai valori raccolti dai vari sensori, intervenire su piGardenWeb non è la cosa giusta da fare. Infatti questa è solo l’interfaccia web di presentazione. Dovresti invece modificare piGarden.sh ovvero lo script che gestisce tutto l’impianto.
    Se vuoi puoi dare un’occhiata al seguente link dove spiego i ruoli delle varie componenti in gioco:
    https://www.lejubila.net/2019/08/pigarden-larchitettura/

  157. @Stefano,
    l’idea di un gruppo telegram è proprio carina, c’è solo un piccolo problema: personalmente riesco a malapena a gestire le risposte qui sul blog figuriamoci su un gruppo telegram. Personalmente non ce la posso fare. Se però qualcuno imbarcarsi in questa idea per me va benissimo ed eventualmente posso ufficializzarlo inserendo il link qui sul sito.

  158. Ciao lejubila ,
    Innanzitutto bellissimo progetto e soprattutto molto utile ! Ho riscontrato un problema dall interfaccia web : il pannello relativo al meteo rimane sempre aggiornato a metà ovvero alcuni dati non vengono percepiti , inoltre mi continua ad aggiornare la voce ” ultima pioggia SENSORE ” ( il sensore non e collegato ) con la data e l orario corrente mentre ” ultima pioggia online ” rimane sempre con il trattino .
    Grazie per la disponibilità

  159. Per il sensore che ti segnala sempre lo stato di pioggia, imposta RAIN_GPIO senza valore nel file di configurazione di piGarden:
    RAIN_GPIO=

    Per i dati mancanti, se ti riferisci alla temperatura percepita, raffiche di vento e punto di rugiada, è normale così perché erano valori forniti dal servizio wunderground che nel frattempo è diventato a pagamento, mentre non sono presenti in openwheatermap.

  160. Ciao lejubila,
    è possibile togliere la registrazione utente una volta registrati?
    Te lo chiedo perchè se espongo il sistema su internet rischio che qualcuno si registri e di conseguenza si logga modificando parametri o addirittura metta mano in qualche modo ad altre cose!
    Ciao
    Marco

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.