Con questa nuova versione di piGardenWeb sono state introdotte due nuove funzionalità che erano attese da un po’ di tempo, la gestione dei log e la gestione dei permessi utenti.
Aggiornamento
Innanzitutto accorre avere installato la nuova versione 0.6.0 di piGardeWeb. Potete aggiornarlo procedendo come segue:
- aggiornate piGardenWeb da github
cd /home/pi/piGardenWeb git pull origin master
- aggiornate la struttura del database impartendo i seguenti comandi da shell
cd /home/pi/piGardenWeb php artisan migrate php artisan db:seed
- modificate il file .env impostando con il valore “true” il parametro “ALLOW_MANAGE_USER”
ALLOW_MANAGE_USER=true
- Entrate in piGardenWeb, e assegnate il ruolo amministratore al vostro utente andando nel menu “Users, Roles, Perm / Users”
- adesso tornate ad editare il file .env e reimpostate “ALLOW_MANAGE_USER” con il valore “false”
ALLOW_MANAGE_USER=false
Gestione dei log
In questa nuova versione di piGardenWeb è stata aggiunta la possibiltà di mostrare i log prodotti da piGarden direttamente dall’interfaccia web.
Come è noto piGarden e piGadenWeb sono due elementi separati che possono girare sullo stesso hardware ma anche su due host distinti. La comunicazione tra loro avviene grazie al socket server che piGarden mette a disposizione (per maggiori informazioni vedete l’articolo “piGarden: l’architettura“). Data questa natura, piGardenWeb non può avere accesso diretto ai log prodotti da piGarden. Sono state quindi implementate delle api su piGardeWeb per far si che tramita chiamata http, ad ogni log prodotto da piGarden questo possa essere inviato a piGardenWeb. Quest’ultimo, ricevuto il log, lo memorizzera nel proprio database mettendolo a disposizione per essere consultato successivamente.
Vediamo ora come abilitare questa funzione. Innanzitutto occorre generare un api token su un utente di piGardenWeb, che utilizzaremo per inviare i log da piGarden a piGardenWeb. Il token può essere creato direttamente sul vostro utente oppure su un utente creato appositamente per questa funzione.
- Andate nella gestione utenti dal menu “Users, Roles, Perm / Users”
- Aprite il vostro utente o createne uno nuovo
- Impostate il campo “Action api token” con il valore “Genera nuovo token”
- Assicuratevi che il permesso “api log” sia abilitato
- Salvate l’utente
A questo punto richiamando nuovamente l’utente vedrete nel campo “Api token” il nuovo token appena generato. Copiatelo da una parte perchè ci servirà tra poco.
Ora che abbiamo in nostro token dobbiamo abilitare piGarden per far si che invii i log a piGardenWeb.
Innanzitutto ci serve l’ultima versione di piGarden, la 0.6.1. Se non l’avete, aggiornate piGarden con i seguenti comandi da shell:
cd /home/pi/piGarden git pull origin master
Ora modificate il file di configurazione e inserite (o modificate se già presenti) i seguenti parametri:
# # Enable send log to piGardenWeb # LOG_URL="http://url_of_your_pigardenweb/api/log" LOG_API_TOKEN="token_of_pigardenweb_user" LOG_CURL_PARAM="--data-urlencode -k"
Sostituite url_of_your_pigardenweb del parametro LOG_URL con il nome host con cui raggiungete da browser la vostra installazione di piGardenWeb e assegnate il token precedentemente generato al parametro LOG_API_TOKEN.
A questo punto fermate e riavviate il soket server di piGarden:
./piGarden.sh stop_socket_server ./piGarden.sh start_socket_server force
Bene, adesso se tutto è andato per il meglio dovreste potere visualizzare i log generati, direttamente da piGarden:
Gestione dei permessi
La seconda funzione implementata è la possibilità di assegnare dei permessi personalizzati per i singoli utenti. Sarà così possibile creare degli utenti che possono solo vedere lo stato di irrigazione, piuttosto che attivare le elettrovalvole o impostare la loro schedulazione.
Per ogni singolo utenti sarà quindi posibile gestire i seguenti permessi:
- manage users, permette di accedere alla gestione degli utenti
- start stop zones, permette di attivare o disattivare manualmente l’irrigazione
- manage cron zones, permette di gestire la schedulazione dell’irrigazione
- manage setup, permette di accedere al Setup iniziale e alla funzione di personalizzazione delle icone
- shutdown restart, permette di spegnere e riavviare l’host su cui gira piGarden
- api log, abilita l’utente a potere utilizzare le api per la ricezione dei log da parte di piGarden
come sempre GRAZIEEEEE e GRANDEEE.
Sei fortissimo.
Aspetta a gloria il progetto piGuardian, poichè come te ho avuto lo stesso problema di un megapreventivo altissimo, e della sostituzione di tutti i compontenti.
Io ho i sensori a filo, e visto che li ho già, mi piacerebbe poterli riutilizzare.
Avrei anche in mente cosette carine:
– Collegare un Lettore D’impronte Digitali per attivare/disattivare l’allarme, e perchè no, avendo 2 piani, sarebbe pure possibile configurare che ne so l’indice SX per attivare/disattivare tutto l’allarme, mentre con l’indice destro attivi/disattivi solo il 2° Piano. Insomma la possibilità di mappare il dito con l’area.
– Un altra cosa carina, sarebbe l’integrazione nell’allarme con qualche telecamera, in modo tale, che se il sensore rilevi movimenti il sistema attivi la registrazione su SD della telecamera, o in cloud, oppure che invii la diretta sul cell, non so.
grazie ancora, aspetto con ansia
ciao Lejubila, e grazie per questo aggiornamento!
Ti segnalo quello che, secondo me, è un refuso.
Leggo:
“Innanzitutto ci serve l’ultima versione di piGarden, la 0.6.1”
ma in realtà – fino a questo momento – la rel. corrente dovrebbe essere la 0.6.0
Inoltre ho avuto questo problema:
piGardenWeb $ php artisan db:seed
UnexpectedValueException : The stream or file “/home/pi/piGardenWeb/storage/logs/laravel.log” could not be opened in append mode: failed to open stream: Permission denied
at /home/pi/piGardenWeb/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php:110
106| restore_error_handler();
107| if (!is_resource($this->stream)) {
108| $this->stream = null;
109|
> 110| throw new \UnexpectedValueException(sprintf(‘The stream or file “%s” could not be opened in append mode: ‘.$this->errorMessage, $this->url));
111| }
112| }
113|
114| if ($this->useLocking) {
Exception trace:
1 Monolog\Handler\StreamHandler::write()
/home/pi/piGardenWeb/vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php:39
2 Monolog\Handler\AbstractProcessingHandler::handle()
/home/pi/piGardenWeb/vendor/monolog/monolog/src/Monolog/Logger.php:344
Please use the argument -v to see more details.
Ho risolto solo con anteponendo sudo.
Infatti forse non avevo i permessi di scrittura:
ll /home/pi/piGardenWeb/storage/logs/laravel.log
-rw-r–r– 1 www-data www-data 1365294 lug 26 12:36 /home/pi/piGardenWeb/storage/logs/laravel.log
Mi chiedo se i permessi sono corretti oppure no (nel qual caso forse ho dato un qualche comando di troppo).
ciao e grazie! Mario
Ciao Lejubila,
ho provveduto per dei miei motivi ad aver formattato le mie due Raspberry (1 Master e Una Slave) e con la versione 0.6.0 funziona tutto a meraviglia.
Mi chiedevo se fosse possibile però mandare i log della SLAVE alla MASTER così da vedere tutti i LOG su una sola centralina dato che ho notato la possibilità di filtrare i messaggi in base all’IP.
Ciao @Mario,
1) Quando dico che server la versione 0.6.1 di piGarden mi riferisco allo script bash piGarden.sh e non a piGardenWeb. Serve effettivamente la 0.6.1 perché quella precedente non aveva la funzione di invio log a piGardenWeb.
2) Come avevi intuito, il problema dell’errore era relativo ai permessi dei file di log. Avresti potuto risolcere impartendo i seguenti comandi:
sudo chown -R pi:www-data /home/pi/piGardenWeb/
sudo chmod -R +w /home/pi/piGardenWeb/storage/logs
sudo chmod -R g+w /home/pi/piGardenWeb/storage/logs
3) Effettivamente su buster sembra non funzionare bene ssmtp ma non ho ancora affrontato il problema. Se riesci a trovare un’alternativa fammelo sapere così aggiorno lo script per l’invio mail
Ciao @Cosimo,
puoi configurare anche sulla slave l’invio dei log verso piGardenWeb, in questo modo potra poi filtrarli per indirizzo ip
Come si fa? Non riesco a farlo. C’è qualche guida che già lo spiega e che non mi sono accorto?
@Cosimo,
devi aggiornare piGarden alla versione 0.6.1 su entrambe le installazioni:
cd /home/pi/piGardeb
git pull origin master
genera il token di autenticazione su piGardenWeb e imposta i seguanti parametri nel file di configurazione dei due piGarden:
LOG_URL="http://url_of_your_pigardenweb/api/log"
LOG_API_TOKEN="token_of_pigardenweb_user"
LOG_CURL_PARAM="--data-urlencode -k"
Comunque è tutto spiegato nell’articolo.
@lejubila Ottimo, mi funziona… in pratica sono io che ho due installazioni di piGardenWEB (1 sulla Master e 1 sulla Slave). Quando ho formattato le due centraline in pratica ho installato su entrambe anche il WEB per avere l’interfaccia grafica qualora non mi si dovesse collegare a internet la Master (Ho problemi di connessione wifi debole sulla master e sto cercando un modo per potenziare il segnale di ricezione del raspberry perchè con i cellulari il segnale è fortissimo). Comunque ho risolto e funziona tutto benissimo… bastava generare solo un token per account Admin sulla Master e impostare l’ip della Master su entrambe le centraline.
Ora mi interesserebbe sapere se c’è un modo per cancellare in automatico i log più vecchi di una settimana sennò tra un anno mi ritroverò con un registro pieno che mi occupa spazio sulla SD.
Innanzitutto complimenti per il progetto.
Funziona tutto come previsto su PI 4 B, salvo il fatto che ogni tanto si blocca e non risulta più accessibile né via web con piGardenWeb né tramite SSH.
Devo spegnere e riaccendere il raspberry.
Che problema potrebbe esserci?
@Ferdinando,
puoi provare a verificare i log di sistema evedere se al momento del blocco succede qualcosa di anomalo.
Hai provato a cambiare ssd e la temperatura del raspberry?
Ciao.
Ho provato l’aggiornamento ma adesso quando accedoal sistema con login e password
appare lapagian admin/dashboard completamente bianca.
Come posso fare per sistemare ?
Grazie mille !!
Ciao!!!
Niente tutto a posto mancavano alcuni permessi…risolto. Ciao
Ciao Lejubila,
sto reinstallando piGardenWeb, credo di aver seguito pedissequamente la tua guida per installare sia piGarden che piGardenWeb, ma sul browser la pagina resta bianca (non compare neppure il messaggio di pagina non trovata di Apache.
Adesso sto provando ad aggiornare alla versione 0.60, seguendo il tuo tutorial, ma al comando
# git pull origin master
inizia lo scarico dei files ma si interrompe al momento di scaricare
public/packages/barryvdh/elfinder/js/i18n/help/cs.html.js
public/packages/barryvdh/elfinder
Aborting
Dove devo andare a controllare, secondo te?
Ciao @Salvatore,
ti ricordo che l’ultima versione di piGardenWeb ha bisogno di php 7.3 o superiori.
Se hai una versione più vecchia il problema potrebbe essere quello.
Per eseguire l’installazione puoi dare un’occhiata qui:
https://github.com/lejubila/piGardenWeb/blob/master/README.md
Ho installato php 8.0.3
@Salvatore,
se usi nginx come server web potrebbe essere necessario modificare il file di configurazione
/etc/nginx/sites-available/default
adattando la riga
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
e impostando il riferimento alla versione di php che hai te.
Fatto la mofica devi riavviare il server nginx
premesso che sopra ho dimenticato di dire che l’ambiente è un raspberry 3 con Buster, ti dico che ho anche reinstallato piGardenWeb dal link di github che hai indicato sopra, ma il procedimento si ferma al comando
# php artisan key:generate
che
# php8.0 artisan key:generate
generando, tra gli altri, il seguente
PHP Fatal error: Uncaught ErrorException: Method ReflectionParameter::getClass() is deprecated in /home/pi/piGardenWeb/vendor/laravel/framework/src/Illuminate/Container/Container.php:853
ideas?
dimenticavo, uso apache2 non nginx
@salvatore
Il problema che ti viene dato con il comando php artisan key:generate è dovuto al fatto che alcune funzioni utilizzate nella versione di laravel utilizzata sono state deprecate su php8
Sulla mia installazione ho php7.3, probabilmente ti converrebbe installare questa versione.
Altrimenti se vuoi mantenere php8 puoi provare a fare come indicato sul link che ti riporto di seguito ma non ti garantisco il funzionamento.
https://stackoverflow.com/questions/65218631/laravel-app-stopped-working-after-upgrading-to-php-8
ok, adesso provo a fare downgrade da php8 a php7.3 (anche se non trovo molte info in proposito). Tu mi sai dire dove intervenire su nginx per abilitare i moduli o le parti di configurazione per far fungere pigardenweb?
Aggiornamenti: siccome ho visto che il Raspberry in uso era difettoso (si piantava sempre più spesso) ho preso un Raspi 4 (modello 2 GB ram) e ci ho montato Buster Lite.
Fatte tutte le installazioni, con nginx e php7.4, adesso è ok 🙂
Semmai più avanti cercherò di gestire anche gli altri servizi/programmi domestici (123solar e metern) sulla stessa cartella di root /var/www/ con nginx.
Nel caso vi dirò.
Grazie ancora David :-)))
Vorrei chiedere se è possibile gestire piGarden da remoto, cioè io ho la necessita di avviare l’irrigazione del mio orto da un abitazione diversa e quindi da una rete diversa da quella dove è collegato il Raspy. Questo è utile anche in caso di ferie…
Grazie