Für die Nutzung von MQTT braucht man einen „broker“ dieser kann z.B. auf dem Rechner auf dem IP Symcon läuft Installiert werden und alle Sensoren „veröffentlichen“ sowie die Aktoren „abbonieren“ von dort die Datenpunkte, den MQTT ist ein bidirektionales Ereignisbasierentes Protokoll.
Als Anwendungsgebiet sei z.B. das „Wifi Relais V3“ genannt, das gibt es schon ab 15 EUR und kann auch noch mit einem DHT Sensor Temperatur / Luftfeuchte messen. Auch gibt es für alle Mikrokontroller Platformen MQTT Libarys die einen einfachen Slebstbau von Sensoren / Aktoren ermöglichen.
Warum nicht z.B. Modbus --> weil Modbus nicht Bidirektional ist und so die Sensoren / Aktoren von der Zentrale aus gepollt werden müssen und auch weil das Konzept hinter Modbus schon sehr sehr alt ist und es inzwischen bessere Möglichkeiten gibt.
Voraussetzungen:
Einen MQTT Broker wie z.B. mosquitto welcher z.B. im standard Debian Repository ist.
Mögliche Integration in Symcon: Variante 1:
Aktuell gibt es nur einige Scripts die alle Datenpunkte Manuell übernehmen.
Variante 2:
IPS 4 Modul, hier gibt es schon einen ersten Versuch der leider aber nur Daten Veröffentlichen nicht aber Abbonieren kann.
Variante 3:
IP Symcon selbst ist MQTT Broker und legt einfach alle gesendeten Daten direkt als Datenpunkte ab oder bietet wie z.B. bei Homematic Komponenten eine Auswahl der Datenpunkte an, welche dann als Variablen angelegt werden.
Für mich stellt sich nicht die Frage ob es diese Schnittstelle in der Variante 2 oder 3 geben wird sondern nur wann
Tja so wie es aussieht wird das heuer nichts mehr mit der MQTT Integration in IP Symcon, naja ich Verstehe auch nicht warum alle über IoT reden und scheinbar ist der Boom um IoT noch nicht groß genug und nicht bis zu den Symcon machern durchgedrungen oder wir die Kunden haben nicht laut genug darum Gerufen!
Auch habe ich bemerkt das dieser Thread gar nicht öffentlich ist.
Unter IPSymcon3.x konnte man die MessageLoop anzapfen, das geht mit IPS4.0 nicht mehr. Ohne Zugriff auf alle Ereignisse macht es keinen Sinn, IPS als Publisher einzusetzen. IPS als Consumer bedingt einen ständig geöffneten Service. Das geht auch nicht mit PHP. Man kann höchstens das Protokoll in einem Service außerhalb implementieren und das Setzen der Variablen überdie Json-Api machen. Einzelne Scripte pro Variable finde ich zum Testen zwar machbar, im größeren Umfang aber nicht praktikabel.
ich habe heute noch einige Tests gemacht mit ESP8266 und UNO / Mega mit Ethernet Shield und bin gelinde gesagt Begeistert und Traurig zugleich…
Die MQTT Libary welche über die Arduino IDE (1.6.5) im Libary Manager selbst unter „PubSubClient“ gefunden / Installiert werden kann Funktioniert „out of the Box“ mit meinem mosquitto Server welcher am selben Raspberry Installiert ist wie Symcon 4 auch genau so wie es soll.
Es werden Daten veröffentlicht und auch zur gleichen Zeit vom MQTT Server Abboniert und Ereignisbasierend übermittelt ohne das Nachrichten verloren gehen und auch extrem Stabil.
Traurig bin ich eigentlich nur weil Symcon dieses Protokoll nicht schon längst Integriert hat…
Schnell einfach und schlank, vor allem kein dummes pollen mehr wie bei Modbus was mit Arduinos bei Symcon nur mittelmäßig (ein Adresse geht nicht die ander schon, beim pollen gibt es zwischendurch viele Timeouts, dann wieder keine usw…) Funktioniert weil scheinbar die Modbus Libary mit der Implementierung in Symcon nicht „Harmoniert“…
Plaediere auch fuer eine offizielle Aufnahme von MQTT in symcon auf Modulebene und integrierten subscribern/publishern die direkt auf Variablen/Instanzen mappen.
Derzeit muss ich alles immer drei mal machen wenn was neues dazukommt - -lauft ueber gebastelten hack mit mqttwarn dass als reaktion auf topics den inhalt per json-rpc nach symcon pushed, wo dann ein php script gestartet wird, dass dann in die richtige Variable schreibt… Muehsam aber es funktioniert zumindest…
Kann mich dem nur anschließen. Ich würde gerne meine FS20 Temperatursensoren durch ESP8266 auf Basis ESPEasy ersetzen, anstelle das mit teuren HM Temperatursensoren machen zu müssen. Polling funktioniert nicht, da schlafen die Boards immer ein. MQTT wäre die Lösung!
+1
Das wäre auch eine klasse Verbindung zu IFTTT!!!
Dann hätte man sehr viel sehr einfach im Zugriff:
Wetter, Locationservices für iOS, Android, BMW etc.
Ja, BMW Labs bieten bei IFTTT Geofencingoptionen an.
Man kann damit das Garagenlicht einschalten wenn man auf den Hof fährt, oder einen Alarm auslösen, wenn das Auto zu ungewöhnlicher Stunde das Grundstück verlässt.
ich bin zurzeit dabei ein MQTT Modul in PHP für IP-Symcon 4.1 zu endwickeln. Dafür suche ich noch Mittstreiter die mich unterstützen oder änliches schon angefangen sind.
Das Ziel soll sein, Variablen unter IP-Symcon auf verschiedenen Systemen über MQTT auszutauschen ohne Programmcode schreiben zu müssen. Es giebt ein MQTT Modul als Splitter das über Socket Client mit dem Brocker Kommuniziert. Für die Variableanbindung soll es dann einige Geräte Modul(e) geben.
Ernsthaftes Interesse dann Private Mail erwünscht.
Bevor Du Dir die Arbeit machst: Es gibt schon MQTT-Module für IPS4.1. Evtl kannst Du auch eines der Module mit dem jeweiligen Autor aufbohren, wenn Dir was fehlt.
Für das Senden gibt es mehrere Module, die man direkt nutzen kann.
Für das Empfangen abbonieren Topics benötigt man leider z.Z. einen Gateway-Daemon wie mqttwarn oder auch was Eigenes z.B in Python oder NodeJS, was die Message empfängt, dekodiert und in IPS über die API oder WebHook einpflegt. Der Clientsocket zerhakt die Daten leider so gründlich, das man sie mangels eindeutigem Rahmen nicht wieder so eindeutig zusammen bekommt, das man ein MQTT Paket mit sauberem Anfang und Ende verarbeiten kann Und PHP-Module sind an die kurze max_execution_time von PHP gebunden sind, können also keine Verbindung offenhalten.
Wer das Problem mit dem Empfangsprotokoll über den Clientsocket löst, hat sich dann ein „Fleiss-Bienchen“ verdient.