E' arrivato finalmente il momento di integrare MQTT in OpenHAB v.2.
Come descritto in un post precedente (http://domoticaduino.blogspot.com/2017/08/home-automation-system-sonoff-e-mqtt_19.html), attualmente ho un SONOFF Basic già installato e che comanda un lampione in giardino. Come abbiamo visto è già configurato per lavorare con MQTT e quindi lo integriamo in OpenHAB.
Seguo step by step il wiki di Tasmota, dove si parla di integrazione con OpenHAB (https://github.com/arendst/Sonoff-Tasmota/wiki/openHAB) e come prima cosa installo diversi ADDONS in OpenHAB:
- MQTT Binding: http://docs.openhab.org/addons/bindings/mqtt1/readme.html
- MQTT Action: http://docs.openhab.org/addons/actions/mqtt/readme.html
- JsonPath Transformation: http://docs.openhab.org/addons/transformations/jsonpath/readme.html
A questo punto bisogna configurare la connessione di OpenHAB verso il broker MQTT, che ricordo essere installato sul Raspberry PI 3 dove c'è anche lo stesso OpenHAB. Per fare questo bisogna modificare il file di configurazione /etc/openhab2/config/mqtt.cfg o direttamente dalla shell linux (con nano o vi) oppure utilizzando Eclipse SmartHome Designer, un editor di testo evoluto che semplifica la modifica dei file di configurazione di OpenHAB v.2. Io lo utilizzo per comodità. La sua installazione è molto semplice e quello di cui necessita è semplicemente il path in cui trovare i file di configurazione di OpenHAB. Nel mio caso ho mappato una unità disco di rete chiamata Z che punta alla share samba definita automaticamente durante l'installazione di openHABianPI.
In particolare i parametri di configurazione che ho configurato sono i seguenti:
openhabianpi-mqtt.url=tcp://localhost:1883
server e porta del broker MQTT
openhabianpi-mqtt.clientId=openhabianpi
Client Id con cui openHAB si presenta al broker MQTT
openhabianpi-mqtt.user=openhabian
Username per l'accesso al broker MQTT
openhabianpi-mqtt.pwd=XXXXXXX
Password per l'accesso al broker MQTT
openhabianpi-mqtt.retain=true
Indica se al broker se mantenere i messaggi inviati
openhabianpi-mqtt è il nome logico che ho dato alla connessione ed è ripetuto in ogni parametro, questo perchè potremmo avere diverse connessione mqtt ognuna con il proprio nome. Questo nome verrà poi utilizzato nella configurazione degli items.
Se tutto è andato a buon fine, all'avvio di OpenHAB si dovrebbero trovare due righe di log simili a queste:
Bene, adesso si devono configurare gli items e la sitemap di OpenHAB.
Creo quindi un file nella cartella /etc/openhab2/items chiamato sonoffbasic01.items ed in cui vado ad inserire le definizioni degli items legati al comando del lampione da gestire.
Vado quindi a definire un oggetto di tipo "Switch" (di categoria light) che verrà agganciato al full topic mqtt del SONOFF Basic 01, che ricordo essere tasmota/garden/light/%topic%/%prefix%/. Ecco la sintassi:
Switch Garden_Light_1Lamp "Garden 1-Lamp" <light>
(gLightSwitchGarden)
{mqtt="
<[openhabianpi-mqtt:tasmota/garden/light/sonoffbasic01/stat/POWER:state:default],
(gLightSwitchGarden)
{mqtt="
<[openhabianpi-mqtt:tasmota/garden/light/sonoffbasic01/stat/POWER:state:default],
}
Per informazioni sulla sintassi dei file .items, consultare la documentazione ufficiale http://docs.openhab.org/configuration/items.html
In questo modo ho definito un item chiamato Garden_Light_1Lamp agganciato ai messaggi MQTT appartenenti a determinati topics definiti dal blocco racchiuso tra {...}
Adesso vado ad inserire l'item in una sitemap per poterlo utilizzare. Modifico quindi il file di definizione della sitemap, andando ad aggiungere le seguenti righe:
Switch item=Garden_Light_1Lamp label="Garden Light 1 Lamp" icon="switch"
}
Non appena salvato, OpenHAB aggiorna la sitemap e se quindi andiamo a vederla, troviamo il nuovo blocco "Lights"
Ecco un video che riassume l'esito dell'integrazione:
Molto interessante, sarei interessato a provarlo e vorrei chiederti un chiarimento. Quando aggiungessi uno o più dispositivi è sufficiente diversificare il "topic", e dovrei anche replicare la configurazione nel file mqtt.cfg, con un nome logico diverso. Nel caso sia sufficiente differenziare il "topic", mi spiegheresti in quale eventuale esigenza si rende necessario creare una nuova connessione logica. In questo caso mi potresti fare un esempio di come andrebbe configurato mqtt.cfg con due o più di queste connessioni.
RispondiEliminaTi ringrazio
Arnaldo