piGardenWeb 0.6.0 – Visualizzazione Log e Gestione permessi utente

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

22 pensieri su “piGardenWeb 0.6.0 – Visualizzazione Log e Gestione permessi utente

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

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

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

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

  5. Ciao @Cosimo,
    puoi configurare anche sulla slave l’invio dei log verso piGardenWeb, in questo modo potra poi filtrarli per indirizzo ip

  6. Come si fa? Non riesco a farlo. C’è qualche guida che già lo spiega e che non mi sono accorto?

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

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

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

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

  11. 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!!!

  12. 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?

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

  14. 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?

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

  16. 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?

  17. 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 :-)))

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

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.