piGarden v 0.4.0 e piGardenWeb v 0.3.0: novità relative alla sicurezza, schedulazioni, statistiche

Salve a tutti,
da poche ore ho rilasciato la nuove versioni si piGarden e piGardenWeb le quali vanno ad aggiungere, come cita il titolo del post, alcune funzioni relative alla sicurezza, schedulazioni e statistiche. Ma andiamo con ordine…..

piGarden v 0.4.0

La nuova versione di piGarden, script per la gestione del nostro impianto di irrigazione gestito da Raspberry Pi, aggiunge le seguenti caratteristiche.

Credenziali di comunicazione sul socket server

Come già detto in passato la piGarden e piGardenWeb comunicano grazie ad socket server esposto sulla rete. Fin quando i due componenti risiedono sulla stessa macchina non ci sono grossi problemi, ma nel caso che l’applicazione web gestita da piGardenWeb giri su un secondo Raspberry (come nel mia installazione) allora il socket server deve rimanere in ascolto sull’interfaccia di rete che lo collega alla lan lasciandolo in balia di possibili intrusi.

Per ovviare a questa vulnerabilità ho introdotto la possibilità di definire le credenziali del socket server e che i client (piGardenWeb) dovranno indicare per autenticarsi in fase di connessione.

Per fare si che il socket server sia soggetto ad autenticazione dovranno essere definite nel file di configurazione le variabili TCPSERVER_USERTCPSERVER_PWD.

Funzione di lock/unlock su richieste concorrenti nell’apertura/chiusura delle elettrovalvole

Nel caso in cui vengano definite per lo stesso orario due o più schedulazioni di apertura/chiusura il sistema andava in crisi e potevano verificarsi problemi per cui una delle due schedulazioni non portava a termine l’operazione. Per ovviare a questo problema ho introdotto un sistema di lock/unlock il quale da priorità ad eventuali richieste concorrenti e mette in attesa tutte le altre, una volta processata la prima, passa alla seconda e così via.

Schedulazioni disabilitate

E’ stato aggiunto la possibilità di definire delle schedulazioni disabilitate di apertura/chiusura delle elettrovalvole. Questa nuova caratteristica è stata aggiunta per dare supporto a piGardenWeb per gestire la possibilità di disabilitare le schedulazioni già definite.

Per potere inserire una schedulazione disabilitata è necessario impartire il comando add_cron_open seguito dall’opzione disabled:

piGarden.sh add_cron_open alias m h dom mon dow [disbled]

Corretto perdita dati delle ultime piogge

In fase di inizializzazione del sistema tramite il comando init, venivano eliminate le informazioni relative all’ultima pioggia rilevata dal sensore e dal servizio online. Con questo aggiornamento queste informazioni vengono mantenute e quindi non più eliminate.

Raccolta statistiche di utilizzo

In questi ultimi giorni, vendendo i grafici dei clone di piGarden eseguiti su github mi sono reso conto che non avevo nessuno strumento per capire quali effettivamente fossero utilizzati e quanto invece cestinati magari perché scaricati solo per curiosità.

Ho pensato quindi di aggiungere una funzione che raccolga una sorta di attività giornaliera delle installazioni attive.

Il sistema funzione generando un’identificativo univoco di 32 caratteri, ricavato facendo un md5sum del mac address della prima interfaccia di rete presente sul Raspberry. Questa stringa mi permetterà di identificare in maniera univoca l’installazione in un ambito statistico, ma nel rispetto della privacy, non avrò nessun modo per potere risalire, identificare o rintracciare l’hardware originale da cui proviene l’identificativo.

L’identificativo viene scritto nel file /tmp/pigarden.id e viene inviato con una frequenza massima di 24 alla url https://www.lejubila.net/statistic/collect_usage/piGarden indicando la versione utilizzata.

Per chi volesse disabilitare l’invio dell’identificativo per non essere soggetto a statistiche di utilizzo, lo può fare definendo nel file di configurazione la NO_SEND_IDENTIFIER e impostandola con il valore uno:

NO_SEND_IDENTIFIER=1

Aggiornamento dalla v 0.3.1

Per eseguire l’aggiornamento di piGarden alla versione 0.4.0 procedere come segue:

cd
cd piGarden
git pull

Definire il percorso dell’eseguibile stat nel file di configurazione:

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

Definire le credenziali del socket server con i valori che preferite:

# Utente e password che i clients devono utilizzare per stabilire una connessione tramite socket server
TCPSERVER_USER=""
TCPSERVER_PWD=""

Definire la variabile per impedire l’invio delle statistiche:

# Con impostato il valore 1 non invia l'identificativi per statistiche di utilizzo
NO_SEND_IDENTIFIER=0

piGardenWeb

Credenziali di comunicazione con socket server

Come già detto sopra, ho introdotto la possibilità di definire le credenziali di accesso al socket server gestito da piGarden, di conseguenza piGardenWeb dovrà autenticarsi in modo corretto. Per definire le credenziali di autenticazione andranno definiti parametri PIGARDEN_SOCKET_CLIENT_USERPIGARDEN_SOCKET_CLIENT_PWD nel file .env.

Abilitare o disabilitare una schedulazione di apertura / chiusura

Con questa versione è stata aggiunta la possibilità di disabilitare o abilitare le schedulazioni di apertura / chiusura delle zone. Questo può risultare utile quando vorremo sospendere temporaneamente una schedulazione senza doverla necessariamente eliminare per poi essere reinserita successivamente. Basterà semplicemente disabilitarla per poi essere riabilitata quando necessario.

Aggiornamento dalla v 0.2.0

Per eseguire l’aggiornamento di piGardenWeb dalla v 0.2.0 alla v 0.3.0 eseguire come segue:

cd
cd piGardenWeb
git pull

Se necessario definire del file .env le credenziali di accesso al socket server come indicato sopra.

Conclusioni

Per ora è tutto. Per qualsiasi dubbio o problema scrivete pure nei commenti.

62 pensieri su “piGarden v 0.4.0 e piGardenWeb v 0.3.0: novità relative alla sicurezza, schedulazioni, statistiche

  1. @Pierluigi,
    il problema è che non con il comando status non viene restituito nessun risultato.
    le verifiche che puoi fare sono
    – controllare nel file di log /home/pi/piGarden/log/piGarden.log se sono presenti errori
    – controllare che tutti i percorsi dei comandi definiti nel file di configurazione /etc/piGarden.conf siano esistenti e funzionanti (es: /usr/local/bin/gpio, /usr/local/bin/jq, /usr/bin/curl)

    Eventualmente puoi mandarmi il tuo file di configurazione in modo da che possa verificare se ci sono problemi.

  2. Ho fatto i controlli sia nel file conf sia verificando direttamente l’esistenza dei files. Tutto sembra ok.
    la log mi dice:
    Thu 28 Dec 08:18:00 UTC 2017 socket connection from: 127.0.0.1 – command: status
    Thu 28 Dec 08:18:01 UTC 2017 ERROR solenoid alias not found: 1
    Provo a mandarti il mio file conf come allegato via mail
    Grazie mille

  3. Non riesco a mandartelo ma ti posso segnalare 2 righe che ricorrono sempre:

    Thu 28 Dec 08:17:32 UTC 2017 socket connection from: 127.0.0.1 – command: status

    Thu 28 Dec 08:17:32 UTC 2017 ERROR solenoid alias not found: 1

    Ancora grazie

  4. @Pierluigi
    dovresti riportarmi la parte di configurazione inerente le elettrovalvole perché probabilmente c’è qualcosa di sbagliato nel nome (presenza di spazi?).

  5. Ho verificato nel file .conf il nome delle valvole. Erano presenti degli spazi che ho eliminato. Ora tutto sembra andare per il meglio. Non so come ringraziarti per la tua disponibilità. Buon Anno!

  6. Ricomincio con gli auguri di Buon Anno.
    Premetto che dispongo di EV monostabili e di un solo modulo con 4 relè.
    Nel file .conf ho impostato EV_monostable a 1 e nel mio caso ho inserito 2 EV visto che, comunque, i primi 2 switch sono per l’uso delle EV bistabili. Ho provato in diversi modi a utilizzare il modulo per tutte e 4 le mie EV ma senza risultato. Domanda: per controllare 4 EV è proprio necessario che acquisti un altro relè?
    Grazie

  7. No! con la configurazione “BISTABILE” hai bisogno di 2 SWITCH per invertire le polarità, unitamente ad un altro switch dedicato ad ogni EV per chiudere il circuito e aprirla/chiuderla a seconda, appunto, della polarità.
    In caso di configurazione “MONOSTABILE” ogni switch pilota una EV visto che la polarità è sempre la stessa, quindi di fatto vai a chiudere solo il circuito della EV che ti interessa pilotare in quel momento.
    Ricapitolando, in modalità MONOSTABILE, per 4 EV servono 4 relè.

    Ciao!

  8. Ciao @Pierluigi,
    grazie per gli auguri che ricambio.
    Per quanto riguarda le elettrovalvole mono stabili aggiuntive, ti basta definirle nel file di configurazione similmente alle altre due che già sono funzionanti e per ognuna indicare il numero di gpio utilizzato per pilotare i relativi relè.

  9. Grazie per le info. Ho proceduto secondo le tue indicazioni e tutto funziona per il meglio.
    Ciao.

  10. Ciao. Sto facendo una serie di prove, con successo, che mi hanno portato a fare alcune considerazioni. Usando le schedulazioni, un po’ macchinose ma necessarie, mi sono accorto che l’inizio e quindi la fine sono differiti, rispetto alle mie impostazioni, a un’ora dopo. L’orologio di sistema è corretto. Vorrei inoltre abusare della tua disponibilità per chiederti di inserire una finestra sotto quelle delle schedulazioni, con le date, i tempi e i tipi (manuale/programmato) di irrigazione e magari, i periodi di non irrigazione perché bloccati dal meteo. Senza queste info è difficile sapere se ho irrigato o no. Utile, ma non determinante, sarebbe la presenza di un orologio sia sulla “dashboard” che sulle zone. Tutto ciò è possibile? Anche se sono ultra settantenne attendo fiducioso! Grazie

  11. Ciao @Pierluigi,
    riguardo l’avvio errato delle schedulazioni ti consiglio di ricontrollare la data di sistema del tuo raspberry perché queste si affidano al cron di sistema, quindi se ti partono ad orari errati sicuramente di pende dalla data del raspberry.
    Per verificare che sia corretta ti consiglio di digitare il comando “date” che dovrebbe mostrarti un output del genere:
    lun 8 gen 2018, 14.40.32, CET
    è importante che presenti la stringa CET sul finale.
    Se noti che sul tuo sistema è diversa puoi provare a riconfigurare il timezone nel seguente modo:
    sudo raspi-config
    Localisation Options
    Change Timezone
    Quindi seleziona Europa e poi Roma.

    Riguardo invece mostrare i log delle irrigazioni, la cosa è un po complicata in quanto lo script di irrigazione è completamente slegato dall’interfaccia web e dovrei trovare un sistema per comunicare i log da uno all’altro. Sicuramente è una cosa fattibile ma ho veramente proprio tempo da dedicare modifiche sostanziali o nuove implementazioni. Infatti il poco tempo che ho lo sto impiegando ad un nuovo pannello web più generalizzato che dovrebbe ospitare la gestione di piGarden più altri moduli in fase di sviluppo (antifurto, pannello domotico). Sicuramente i tuoi suggerimenti potrò implementarli in questo nuovo progetto ma per adesso è tutto in stato embrionale.
    Per l’orologio, non so se fa al caso tuo ma è già presente qualcosa del genere nella dashboard, infatti se hai configurato la il recupero delle condizioni mete da servizio internet (puoi vedere il post dove lo spiego), nell’interfaccia dovresti visualizzare anche la data e l’ora locale.

    Fammi sapere se hai risolto il problema dell’orario.

  12. Non so che cosa sia successo ma ora l’orario è ok così come la data di sistema. Ti ringrazio per l’attenzione che mi hai dato. Resto fiducioso circa la possibilità di vedere le implementazioni che ho suggerito. Ciao, che tutti possano essere disponibili come te!

Lascia un commento

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