Vorstellung: hm2mqtt & mqtt-smarthome

diverse Zusatzsoftware

Moderator: Co-Administratoren

Benutzeravatar
owagner
(verstorben)
Beiträge: 1193
Registriert: 13.05.2008, 19:49
Danksagung erhalten: 1 Mal

Vorstellung: hm2mqtt & mqtt-smarthome

Beitrag von owagner » 13.03.2015, 15:45

hm2mqtt

--- 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
Umgekehrt kann man so Nachrichten an HM-Geräte schicken: mit einer Nachricht an

Code: Alles auswählen

	hm/set/Thermostat Schlafzimmer 1/SETPOINT
wird dann die Solltemperatur gesetzt. Näheres dazu im hm2mqtt-readme.

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
und

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.
Zuletzt geändert von Roland M. am 22.03.2018, 14:14, insgesamt 1-mal geändert.
Grund: Thema verschoben

inspire
Beiträge: 120
Registriert: 16.09.2009, 07:41

Re: Vorstellung: hm2mqtt & mqtt-smarthome

Beitrag von inspire » 25.03.2015, 11:10

Hey Oliver,
sehr cool, deckt sich mit unseren aktuellen Überlegungen & Weiterentwicklungen. Ich hoffe, wir können das Thema MQTT in Kassel persönlich vertiefen.
Wie sehen denn Deine Pläne aus, Authentisierung am MQTT Server zu unterstützen?
LG
Boris

c.radi
Beiträge: 33
Registriert: 21.10.2010, 09:03

Re: Vorstellung: hm2mqtt & mqtt-smarthome

Beitrag von c.radi » 26.03.2015, 09:47

Hallo,

ich finde das auch sehr interessant. Vielen Dank für die Darstellung hier.

Was mich noch ein wenig davon anhält hier weiter rein zu schauen ist das Thema Visualisierung.
Für mich ist das Thema Smart Home auch ein Thema der Visualisierung der Zustände sowie der Bedienung.

Ich nutze derzeit mehrere Systeme (HM, Digitalstrom, MyLight, 1Wire, Sonos, IP Kameras, usw.) Als SW in der Zentrale nutze ich IP-Symcon, und habe darauf meine Visualisierung aufgebaut.

Ich kann mir vorstellen IP-Symcon abzulösen, und auf OpenSource Lösungen zu wechseln.


Gruß
Christian

Bambo
Beiträge: 150
Registriert: 29.12.2014, 15:03

Re: Vorstellung: hm2mqtt & mqtt-smarthome

Beitrag von Bambo » 15.04.2015, 08:24

Kann der hm2mqtt auch subscriben oder pusht er nur?

Ich hab den jetzt installiert, quasi mit default topic prefix hm/

auf dem host, wo der broker läuft habe ich nun

mosquitto_sub -h localhost -v -t hm

(lokal habe ich das mit mosquitto_pub getested, das lief)

So, jetzt schalte ich ein paar Schalter, schalte daran rum, sehe aber im sub nix....
Wie mach in denn jetzt weiter?

Nächste Frage, angenommen, ich habe auf einem mqtt client ein paar Werte, die ich gerne als Systemvariable in die CCU reinbekäme, muss ich die dann nur mit dem topic prefix hm versehen und publishen?

Gruss

Stephan

Benutzeravatar
owagner
(verstorben)
Beiträge: 1193
Registriert: 13.05.2008, 19:49
Danksagung erhalten: 1 Mal

Re: Vorstellung: hm2mqtt & mqtt-smarthome

Beitrag von owagner » 15.04.2015, 10:12

Probier mal

mosquitto_sub -h localhost -v -t "hm/#"

Wenn Du nur -t "hm" subscribst, erhälst Du tatsächlich nur Nachrichten an das Topic "hm", mit "hm/#" alle Untertopics. Details zu den Wildcards z.B. hier http://www.eclipse.org/paho/files/mqttd ... dcard.html

Bambo
Beiträge: 150
Registriert: 29.12.2014, 15:03

Re: Vorstellung: hm2mqtt & mqtt-smarthome

Beitrag von Bambo » 15.04.2015, 17:59

Jo, das geht erstmal. Gute Basis für weitere Experimente.

MehrCurry
Beiträge: 31
Registriert: 29.12.2013, 07:54

Re: Vorstellung: hm2mqtt & mqtt-smarthome

Beitrag von MehrCurry » 26.04.2015, 07:16

Super Sache. Funktioniert auf Anhieb und ist zusammen mit Nodered http://nodered.org/ echt klasse. Was mir allerdings noch nicht ganz klar ist: Werden auch Statusänderungen an Variablen übertragen?

Benutzeravatar
anli
Beiträge: 4326
Registriert: 10.06.2009, 14:01
Wohnort: 20 Min. nördlich von Hannover und bei Bremen
Hat sich bedankt: 1 Mal
Danksagung erhalten: 23 Mal
Kontaktdaten:

Re: Vorstellung: hm2mqtt & mqtt-smarthome

Beitrag von anli » 27.04.2015, 23:30

Hi Olli, bin vergangenes Wochenende doch glatt über das Thema gestolpert, über das wir schon in Kassel gesprochen haben: der Subscribe auch auf bisher ungenutzte Kanäle (die ungenutzten Geräte quittieren bei mir übrigens trotzdem mit grün!). Kannst Du das eventuell ändern, dass es default Off ist?

Viele Grüße! André
Herzliche Grüße, anli

Alle Angaben ohne Gewähr und Haftung meinerseits. Verwendung der von mir zur Verfügung gestellten Downloads auf eigene Gefahr. Ich bitte um Verständnis, dass ich aus zeitlichen Gründen keine unaufgeforderte Hilfestellung per PN/Mail geben kann. Bitte allgemeine Fragen ins Forum stellen, hier können viele fähige User viel schneller helfen.

Homematic-Manager v2: einfaches Tool zum Erstellen von Direktverknüpfungen und Bearbeiten von Gerätenamen, -parametern etc. für Homematic und HomematicIP (Alternative diesbzgl. zur WebUI)

Einsteiger-Hilfeerweiterter Skript-Parser

Benutzeravatar
owagner
(verstorben)
Beiträge: 1193
Registriert: 13.05.2008, 19:49
Danksagung erhalten: 1 Mal

Re: Vorstellung: hm2mqtt & mqtt-smarthome

Beitrag von owagner » 27.04.2015, 23:39

Die quittieren nix, die leuchten einfach so grün :)

So richtig glücklich bin ich mit dem aktuellen Zustand auch nicht -- insbesondere bei dem Display-Wandtaster hat das den Nachteil, dass dieser jede verknüpfte Seite anzeigt.

Vielleicht per default nicht machen und dann einfach ein hm/command/bind/gerät/datenpunkt bzw. hm/command/unbind/gerät/datenpunkt anbieten?

Viele Grüße,
Olli

drao
Beiträge: 33
Registriert: 12.12.2014, 18:22
Wohnort: Stuttgart

Re: Vorstellung: hm2mqtt & mqtt-smarthome

Beitrag von drao » 27.04.2015, 23:43

Hallo,

MQTT finde ich ein spannendes Thema als Message Broker, um die verschiedenen Systemen zu verbinden. Nach dem Vortrag vom User Treffen, wollte ich mich auch mal an die Installation machen :-) - Installation von MQTT und https://github.com/owagner/hm2mqtt auf dem Raspberry 2. Stecke da aber schnell fest. Für mosquitto habe ich ja noch Installationshinweise im Netz gefunden. Muss ich da dan was spezifisch für die CCU2 konfigurieren?

Auch bei den Dependencies stecke ich fest:
Java 1.7 (or higher) SE Runtime Environment: https://www.java.com/ -- ok, runtergeladen und java steht zur Verfügung
Eclipse Paho: https://www.eclipse.org/paho/clients/java/ (used for MQTT communication) -- was packe ich wohin?
Minimal-JSON: https://github.com/ralfstx/minimal-json (used for JSON creation and parsing) -- was packe ich wohin?

Einfach die Paho und Minimal-JASON (welche Dateien) in das gleiche Verzeichnis wie hm2mqtt.jar und dann über java hm2mqtt.jar starten? Aktuell bekomme ich da noch eine Fehlermeldung. Habe wahrscheinlich nicht die richtigen Dateien runtergeladen.

Muss ich nicht irgendwo noch was konfigurieren? URLs oder so?

Danke

Antworten

Zurück zu „Sonstige Addons“