OpenHAB - SmartHome (246 posts)
30/09/2017
Home Automation System - MQTT, SONOFF e OpenHAB v. 2 [English version]
di Marco Lamanna
E' arrivato finalmente il momento di integrare MQTT in OpenHAB v.2.
Come descritto in un post precedente (/it/blog/2/iot-smarthome/post/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: