mqttconnector, utilizza le api piGarden e piGuardian tramite mqtt

Recentemente ho avuto la necessità di poter controllare piGarden e piGuardian tramite protocollo mqtt in modo da potere avviare o fermare l’irrigazione da Home Assistant, il famoso software open source per la gestione domotica della casa.

A questo proposito ho creato un piccolo script python che funziona da subscribe per alcuni topic mqtt destinati a ricevere nei rispettivi payload i comandi delle api di piGarden e piGuardian e di inoltrarli ai rispettivi socket server. In pratica mqttconnector funziona da intermediario tra mqtt e piGarden/piGuardian.

Installazione

Per funzionare mqttconnector ha bisogno di alcune dipendenze, installiamole con i seguenti due comandi:

sudo apt-get install python2.7 python-pip
sudo pip install paho-mqtt configparser

Scarichiamo ora mqttconnector da github:

cd
git clone https://github.com/lejubila/mqttconnector.git

Aggiungiamo adesso il file relativo al servizio systemd che ci servirà successivamente per avviare mqttconnector e impostare l’avvio automatico al boot del sistema:

cd
sudo cp mqttconnector/mqttconnector.service /etc/systemd/system/mqttconnector.service

Fate attenzione al percorso di mqttconnector.py indicato dentro /etc/systemd/system/mqttconnector.service che corrisponda alla posizione corretta dello script.

Configurazione

Copiamo il file di configurazione di esempio in /etc:

cd
sudo cp mqttconnector/mqttconnector.ini.sample /etc/mqttconnector.ini

Adesso che abbiamo il nostro file di configurazione vediamo come è composto:

[mqtt]
broker_address=_broker_hostname_or_ip_address_
port=1883
user=_broker_username_
password=_broker_password_
client_id=mqttconnector
path_connector=/home/pi/mqttconnector/
subtopic_command=command
subtopic_result=result
 
[pigarden]
enabled=1
host=_pigarden_socket_server_hostname_or_ip_addres_
port=_pigarden_socket_server_port_
exec_command=exec_cmd2sck.sh
user=_pigarden_socket_server_username_
pwd=_pigarden_socket_server_password_
topic=pigarden
result_enable=0
topic_result_qos=0
topic_result_retain=1
 
[piguardian]
enabled=1
host=_piguardian_socket_server_hostname_or_ip_addres_
port=_piguardian_socket_server_port_
exec_command=exec_cmd2sck.sh
user=_piguardian_socket_server_username_
pwd=_piguardian_socket_server_password_
result_enable=0
topic=piguardian
topic_result_qos=0
topic_result_retain=1

Come possiamo vedere il file di configurazione è suddiviso in tre parti: mqtt, pigarden e piguardian.

La prima parte riguarda il protocollo mqtt e ci permette di indicare l’hostname/ip del broker e le credenziali di accesso. Oltre a questo dobbiamo indicare il path della directory dello script (path_connector).

Con subtopic_command indichiamo il subtopic su cui lo script riceverà i comandi delle api da inoltrare a piGarden/piGuardian.

Una vota che il comando è stato ricevuto tramite il subtopic_command, questo viene inoltrato al socket server della rispettiva applicazione e il risultato, se vogliamo, potrà essere pubblicato su un’ulteriore topic via mqtt. Questo topic sarà composto dal valore indicato in subtopic_result.

Avremo quindi i topic pigarden/command e piguardian/command tramite i quali mqttconnector ricecerà i comandi delle api da inoltrare ai socket server dei rispettivi software.

Sui topic pigarden/result e piguardian/result (se abilitato con il parametro result_enable) verrà pubblicato invece il risultato di risposta della chiamata api ricevuto precedentemente.

Esecuzione

Il metodo più opportuno per lanciare mqttconnector è utilizzare systemd. Ma prima magari può essere comodo eseguirlo manualmente in modo da avere a video l’output generato dallo script e verificare eventuali problemi di connessione al broker mqtt o altro. L’esecuzione manuale può essere fatta impartendo i seguenti comandi:

cd
cd mqttconnector
python mqttconnector.py

Se la connessione al server mqtt andrà a buon fine vedrete un output simile al seguente

192.168.1.251 mqtt_port mqtt_user mqtt_password
Connected to broker
subscribe: pigarden/command
subscribe: piguardian/command

Continuando l’esecuzione in questa modalità potrete vedere anche l’output di eventuali chiamate alle api di piGarden/piGuardian impartite tramite protocollo mqtt.

Una volta che site sicuri che tutto funzioni per il verso giusto potrete interrompere l’esecuzione tramite Ctrl+C e riavviare mqttconnector utilizzando i comandi systemd:

sudo systemctl start mqttconnector

Inoltre per fare in modo che mqttconnector venga eseguito in automatico all’avvio del vostro Raspberry, dovete impartire il seguente comando:

sudo systemctl enable mqttconnector

Conclusione

Bene siamo arrivati alla conclusione. In un prossimo articolo vedremo come interfacciare piGarden a Home Assistant grazie proprio al protocollo mqtt.

5 pensieri su “mqttconnector, utilizza le api piGarden e piGuardian tramite mqtt

  1. Ciao sto provando mqttconnector,dove trovo una lista dei comandi da poter passare a pigarden?
    Rinnovo i miei complimenti per il tuo lavoro

  2. Grazie appena possibile faccio i test del caso,se un giorno hai tempo pensa di poter integrare anche una seconda categoria di icone magari dei semplici switch,io attualmente uso pigarden anche per accendere l’illuminazione esterna.

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.