piGarden 0.5.9: pubblicare stato ed eventi vesto un broker mqtt

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.

13 pensieri su “piGarden 0.5.9: pubblicare stato ed eventi vesto un broker mqtt

  1. Che storia! Stavo proprio studiando home assistant per vedere se era possibile integrare il tuo progetto, ma tu sei avanti. Per aggiornare basta reinstallarlo?

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

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

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

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

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

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

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

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

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

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

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.