Hallo,
wie John vor einigen Tagen angesprochen ist MQTT eine recht gute Plattform um sich mit anderen Systemen auszutauschen.
Da ich gerne auch etwas für das System das ich schon seit mehr als zwei Jahren verwende beitragen möchte, mach ich das jetzt ;-)
Ich habe schon länger in NodeJS einen FHEM-Listener gebaut - dieser Listener verbindet sich mittels telnet auf den FHEM Server und verwendet dort dann das inform modul um Änderungen mit zu bekommen. Diese Änderungen "schreit" er dann in die MQTT Message Queue raus und dort kann man dann damit machen was man will (in meinen Fall NodeRED der dann ein ESP8266 Modul schaltet - dazu aber mehr).
Weiters habe ich eine "Inventory" Routine (auch schon länger her) gebaut welche alle Geräte und div. Stati in die Message Queue reinhaut.
Was noch kommtEin MQTT-Listener, der die Geräte von FHEM kennt und dann FHEM schaltet.
Was mich dazu getrieben hatInital wollte ich ein komplett neues FHEM Frontend (NodeJS basierend) machen - das hab ich dann aber aufgrund div. Probleme bei der Umsetzung wieder links liegen gelassen - seit dem schlummerten die Funktionen auf meinen Festplatten munter vor sich hin...
Was ich damit erreichen möchte FHEM ist eine so tolle Plattform und es gibt so viele Module, leider ist es wie überall, dass jeder teilweise sein eigenen Süppchen kocht. Da sich im IoT-Umfeld MQTT immer mehr zum Standard mausert und fast alle anderen Plattformen das unterstützen, kann man mit einer vollständigen MQTT-Implementierung nur am richtigen Weg sein ;-)
Was ich damit nicht erreichen willFHEM soz. Kopflos zu machen - das FHEM nur eine Gateway Software zu irgendwelchen Geräten ist.
So, nachdem vielen Texten ein bisschen was zum Anschauen:
https://github.com/bjoernhoefer/nodefhem_mqtt - dort findet man die Sourcen, inkl. Installationsanleitung.
Beispiel 1Ich habe bei mir folgendes Umfeld aufgebaut:
RaspberryPi 2 mit Raspbian, Mosquito (MQTT Server), NodeRed
Als "Testclients" habe ich zwei ESP8266 Module (
http://www.mikrocontroller.net/articles/ESP8266) mit einer LED und MQTT Client (mit Arduino IDE gebastelt...)
NodeRED entscheidet wenn sich ein FHEM dummy ändert - dass er den ESP8266ern bescheid geben soll, das sie sich einschalten sollen -> Verzögerung für den gesamten Workflow weit unter einer Sekunde.
Beispiel 2Da viele ja einen Raspberry Pi verwenden und die Speicherkarten durch das Protokollieren nicht besser werden könnte man hier auf eine InMemory Datenbank umstellen (Redis für die aktuellen Werte, MongoDB/ElasticSearch/InfluxDB/etc. für Langzeit) welche viel besser mit Speicherkarten umgehen, da diese Datenbanken nur Snapshots in Intervallen auf die Karte speichern.
Das habe ich teilweise auch schon mit NodeRED umgesetzt - recht straightforward...
Wie man dann die Daten in FHEM reinbekommt (on demand) ist natürlich eine andere Sache - ich gehe da den Weg eigene Web-Interfaces dafür zu verwenden (Kibana/Grafana...)
Meine BitteDa ich ja hier im "Kreis der Weisen" vorspreche würde ich gerne eure Meinung zu dem ganzen Thema (MQTTm bzw. Öffnung in andere Systeme/Protokolle), bzw. natürlich auch gerne Verbesserungsvorschläge udgl. einholen.
Danke und ich hoffe mit meinen ersten Post nicht meine gesamte Reputation zu zerstören...
Björn