Salve a tutti, con la versione 0.5.9, piGarden aggiunge il supporto per pubblicare verso un broker mqtt il proprio stato allo scaturire dei vari eventi.
In questo modo potremo monitorare lo stato di piGarden da eventuali subscribe mqtt gestiti da altri software, come per esempio Home Assistant.
E proprio Home Assistant sarà l’argomento di un prossimo articolo dove spiegherò come potervi integrare e controllare piGarden.
Per attivare il supporto di publishing mqtt dovremo installare il pacchetto mosquitto-clients e impostare alcuni parametri nel file di configurazione in /etc/piGarden.conf.
Installiamo mosquitto-clients con il seguente comando
sudo apt install mosquitto-clients
Se non è già presente, impostiamo il percorso di mosquitto_pub nel file di configurazione /etc/piGarden.conf:
MOSQUITTO_PUB="/usr/bin/mosquitto_pub"
a questo punto impostiamo i parametri mqtt
# Parametri connessione al broker mqtt MQTT_ENABLE=1 # 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
Impostando MQTT_ENABLE con il valore 1 piGarden inizierà a pubblicare il proprio stato allo scaturire di ogni singolo evento da lui gestito.
In un prossimo articolo vederemo come fare diventare piGarden un subscribe mqtt e quindi poterlo fare controllare da software esterni tramite messaggi mqtt.
Che storia! Stavo proprio studiando home assistant per vedere se era possibile integrare il tuo progetto, ma tu sei avanti. Per aggiornare basta reinstallarlo?
@Christian,
per aggiornare basta che ti posizioni nella directory di piGarden e digiti il seguente comando:
git pull
Una volta aggiornato ricordati aggiornare il file di configurazione con i parametri indicati nel post.
Tieni conto che con questo aggiornamento piGarden permette di comunicare il proprio stato via mqtt verso altri software/dispositivi (home assistant) ma non viceversa (comandare piGarden da home assistant). Per fare questo pubblicherò a breve un mqttconnector che permetti di veicolare sul socket server le api ricevute tramite mqtt.
Ciao e scusa il disturbo. Uso piGarden da qualche giorno e senza problemi. Oggi, invece, che non avevo connessione ad internet, mi è apparso un errore socket che non capisco considerato che l’applicativo gira su LAN. Ho pensato al sensore pioggia online che è visualizzato nella home ma che non utilizzo in quanto uso un sensore pioggia vero e proprio. Pensi possa essere questo il motivo? E qualora fosse, come posso disabilitare il caricamento del plugin ? Ciao e complimenti ancora per il progetto. Grazie. Ti allego 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
)
@mauro,
problabilmente c’è un file json malformato.
Per risolvere l’errore elimina tutto il contenuto della cartella
/home/pi/piGarden/state
e della cartella
/run/shm
Poi per disabilitare il controllo tramite servizio online, rimuovi la schedulazione nel crontab manualmente o con il seguente comando:
/home/pi/piGarden/piGarden del_cron_check_rain_online
Fammi sapere se così hai risolto.
Ciao e grazie. Purtroppo il problema persiste… grazie
Mauro
Ri-ciao. Mi è tornata la linea internet (sono passato ad altro operatore) è tutto si è ripristinato. Però sarebbe meglio che non vi fosse questo vincolo. Ma non è che è il plugin di openweathermap che in ogni caso tenti di accedere al web a prescindere che poi io utilizzi un sensore ? E’ possibile proprio disabilitarlo? Ciao e grazie ancora. Mauro
@mauro, appena posso faccio una verifica ed eventualmente correggo il problema.
Ti ringrazio.
Colgo l’occasione per chiederti se sia possibile cambiare la porta di ascolto dell’interfaccia web. Spesso la 80 non è facilmente re-direzionabile. Ciao e grazie ancora. Mauro
ciao a tutti, magari può servire a qualcuno, questo il comando e relativo output per effettuare aggiornamento:
pi@raspberrypi:~/piGarden $ git pull
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Total 3 (delta 2), reused 3 (delta 2), pack-reused 0
Unpacking objects: 100% (3/3), done.
From https://github.com/lejubila/piGarden
0d74803..9864709 master -> origin/master
6d8c82f..9864709 develop -> origin/develop
* [new tag] v0.5.9 -> v0.5.9
Updating 0d74803..9864709
Fast-forward
CHANGELOG.md | 3 +++
conf/piGarden.conf.example | 14 ++++++++++++
conf/piGarden.conf.remote.example | 14 ++++++++++++
conf/piGarden.conf.sonoff_tasmota_http.example | 14 ++++++++++++
conf/piGarden.conf.spb16ch.example | 14 ++++++++++++
include/events.include.sh | 8 +++++++
include/socket.include.sh | 4 ++–
mqttconnector/.gitignore | 1 –
mqttconnector/exec_command.sh | 2 —
mqttconnector/mqttconnector.py | 88 —————————————————————————-
mqttconnector/piGardenMqttconnector.ini.example | 12 ———–
piGarden.sh | 117 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++———————–
12 files changed, 160 insertions(+), 131 deletions(-)
delete mode 100644 mqttconnector/.gitignore
delete mode 100755 mqttconnector/exec_command.sh
delete mode 100644 mqttconnector/mqttconnector.py
delete mode 100644 mqttconnector/piGardenMqttconnector.ini.example
pi@raspberrypi:~/piGarden $
@mauro,
ho pubblicato una nuova versione di piGarden, adesso è possibile disabilitare il servizio meteo online impostando nel file di configurazione la seguente definizione:
WEATHER_SERVICE=”none”
@mauro,
per cambiare posta di ascolto devi mettere mano ai file di configurazione di nginx o apache a seconda del del server web che utilizzi.
Mettiamo che vuoi impostare la porta 8888 anziché la 80:
su nginx devi modificare il file /etc/nginx/sites-available/default e impostare
listen 8888 default_server;
anziché
listen 80 default_server;
su apache invece devi modificare il file /etc/apache2/ports.conf cerca la riga
Listen 80
e aggiungi sotto
Listen 8888
Se poi hai definito un virtualhost per piGarden come nel mio caso, cambia la prima riga del file di definizione da
a
Grazie. Ho fatto il pull ed inserito il parametro in configurazione. Proverò a simulare una mancanza internet e ti farò sapere. Il cambio porta, invece, funziona benissimo.
Ho messo su un broker MQTT su un altro PI ed anche questo funziona bene. Ho sottoscritto il topic con NODE RED. Ho soltanto notato che il topic viene inviato soltanto in seguito a determinati eventi (es. accensione/spegnimento EV) e poi il client (piGarden) si disconnette. Non sarebbe possibile monitorare anche l’evento dello stato del sensore pioggia? e magari con il relativo stato tipo (0/1 – rain/norain). Un suggerimento interessante potrebbe essere anche quello di vedere la versione di piGarden dall’interfaccia web (oppure c’è e sono io a non vederla?? 🙂 ).
Ciao e grazie.
Mauro
@mauro,
effettivamente l’intenzione era quella di pubblicare il topic per ogni evento scaturito da piGarden ma per un bug questo non avveniva.
Adesso ho corretto l’errore. Se aggiorni piGarden (git pull) ad ogni evento verrà pubblicato un topic mqtt.
Per il numero di versione su piGardenWeb per ora non c’é ma ne terrò di conto per il futuro.