--- Update Mai 2017 ---------------
Es gibt nun eine neue Implementierung von hm2mqtt: hm2mqtt.js. Diese Unterstützt nun auch Homematic IP sowie Rega Variablen und Programme. Ausserdem gibt es im mqtt-smarthome repository nun ein kleines Howto für den Einstieg in mqtt-smarthome am Beispiel hm2mqtt.js, Node-Red und Node-Red Dashboard: https://github.com/mqtt-smarthome/mqtt- ... mematic.md
--------------------------------------------
Als Nachfolger der Middleware-Funktionalität von hmcompanion habe ich hm2mqtt entwickelt: einen Adapter von rfd/hm485d nach MQTT.
Sourcecode und fertige Releases gibt es auf Github unter https://github.com/owagner/hm2mqtt bzw. https://github.com/owagner/hm2mqtt/releases/latest
hm2mqtt kann, wenn gewünscht, direkt auf der CCU2 laufen. Dazu steht eine Addon-Package zur Verfügung, welchs ebenfalls auf GitHub downloadbar ist.
MQTT -- kurz für Message Queue Telemetry Transport -- ist ein Messaging-Standard, der sich besonders als Message-Bus für (argh, Buzzword!) Internet-Of-Things Anwendungen eignet. Anwendungen können über einen MQTT-Server -- Broker genannt -- in sogenannte Topics organisierte Nachrichten austauschen.
Das ganze passiert im sogenannten Publish/Subscribe-Verfahren: Anwendungen schicken Nachrichten an ein Topic ("publishen"), und wer sich für die Daten in einem Topic interessiert, subscribed es und erhält alle Nachrichten, die an das Topic geschickt werden. Darüberhinaus speichert der MQTT-Broker die letzte Nachricht an ein Topic und gibt sie auf Wunsch an sich neu verbindende Clients heraus.
Beispiel für HM: Ein Thermostat schickt die aktuelle Temperatur als Nachricht an das Topic
Code: Alles auswählen
hm/status/Thermostat Schlafzimmer/TEMPERATURE
Code: Alles auswählen
hm/set/Thermostat Schlafzimmer 1/SETPOINT
mqtt-smarthome
hm2mqtt ist nur ein Baustein in einem umfassenden Konzept, das Thema Smart Home Control mehr zu modularisieren. Derzeit gibt es verschiedene gute monolithische Lösung, die alle ihre eigenen Vor- und Nachteile haben: CCU.IO, fhem, OpenHAB etc.
mqtt-smarthome ähnelt konzeptionell dem ioBroker-Ansatz, bleibt aber noch eine Ebene tiefer: Es definiert überhaupt keine Software, sondern nur ein Art und Weise, wie Komponenten in einem Smarthome-System Nachrichten über MQTT austauschen: Topicstruktur und Nachrichtenformat (JSON).
Aufsetzend auf MQTT werden dann weitere Module hinzugefügt: Schnittstellenmodule (wie hm2mqtt), Logik/Scripting-Module, Visualisierungen etc. Abstraktion und Logik sind selbst keine Ziele von mqtt-smarthome.
Der wesentliche Punkt ist, dass alle diese Module beliebig austauschbar sind: Vielleicht baut jemand einen besseren Ersatz für hm2mqtt? Kein Problem, einfach weg damit und das neue ran. Eine neue Scripting-Engine mit der Programmiersprache de Jour? Einfach andocken, im Zweifel parallel zur bisherigen. Eine neue Hardware-Architektur, um mit LED-Lampen zu reden? Paar Zeilen Adapter in python und eingebunden ist es.
Die Architektur hinter mqtt-smarthome ist in https://github.com/mqtt-smarthome/mqtt-smarthome/ detailierter beschrieben.
Weitere existierende Module von mir
Das Ganze ist nicht im luftleeren Raum entstanden, sondern weil ich ganz konkret seit geraumer Zeit damit kämpfe, den Hardware-Wildwuchs in meinem Haus in den Griff zu bekommen. Deswegen gibt es neben hm2mqtt bereits einige andere Schnittstellenmodule:
- knx2mqtt ist dasselbe wie hm2mqtt für KNX
- eno2mqtt ist analog für Enocean (mittels USB300-Adapter)
- hue2mqtt ist zur Ansteuerung von Philips Hue
- onkyo2mqtt dient zur Ansteuerung von Onkyo-AVRs
- logic4mqtt als Logic/Script-Engine.
Die Engine selbst ist in Java geschrieben und benutzt die JSR-223-Scripting-Schnittstelle, so dass Scripts in allen möglichen Scriptsprachen, auch gemischt, benutzt werden können: Javascript, Groovy, Jython etc.pp.
Andere Software mit MQTT-Schnittstellen
Ich selbst verwende als MQTT-Broker http://mosquitto.org/
Mittels Node-RED können Logiken visuell implementiert werden: http://nodered.org/
Als Historisierungs- und Graphing-Lösung gibt es http://influxdb.com/ mit http://grafana.org/
Desweiteren habe auch viele der existierenden monolithischen Smarthome-Lösungne MQTT-Adapter, z.B. OpenHAB, fhem, CCU.IO und natürlich ioBroker.
Danksagung und Feedback
Das mqtt-smarthome-Konzept ist in langen Diskussionen mit Sebastian 'hobbyquaker' Raff gewachsen, zuerst während der ioBroker-Konzeptionierungsphase, dann während der gemeinsamen Arbeit daran. Von ihm stammt auch die Idee für das CCU2-Addon-Package für hm2mqtt.
Feedback ist willkommen, gerne auch im homematic-Chat.