danke an PaulG4H für den Hinweis mit dem Modul MQTTBroker!!!
Das Subscriben funktioniert auf Anhieb, das ist ne tolle Arbeit! Auch wenn das Pulishen noch nicht geht. Dafür nehm ich derzeit noch mein altes Modul GitHub - mkretzschmar/SymconMQTT: MQTT Client as PHP Module for IP-Symcon
Ist aber auch nur rudimentär implementiert, publizieren funktioniert aber ganz gut. Vielleicht könnte man auch beide zusammenführen?..
Für den Empfang hatte ich bisher immer Eclipse Kura auf dem PI verwendet (mit einem eigenen Java OSGi Plugin zur Kommunikation mit IPS per JSON-PRC).
Ich habe nun mqtt in beide Richtungen Implementiert. Es läuft neben dem mosquitto MQTT Broker noch mqttwarn welches per json RPC alle topics eines bestimmten Start Ordners an IPS überträgt und dort Automatisch die Struktur mit den Kategorien und Variablen anlegt, boolean werden auch so angelegt das diese gleich bedienbar sind und über die MQTT_Publish Funktion in den Broker zurückschreiben…
Und Abbonieren über den Dienst mqttwarn und json RPC nach IPS.
Ich werde in den nächsten Tagen meine IPS Installation von RPI2 Wheezy auf einem RPI3 mit Jessie neu machen und wenn gewünscht eine Doku darüber veröffentlichen?
Hi könnte einer mal bitte eine Anleitung schreiben, wie man nun MQTT Daten empfangen und senden kann mit IPS… ich blicke nicht mehr durch was wie wo mit welchen Modul / Script nun geht…
Danke Nall Chan aber das ist nur eine Richtung oder?
Ich will ja nicht nur schreiben sondern auch Lesen, aber alles was es dafür gibt ist von der comunity, der Hersteller hat scheinbar kein bedürfniss mqtt zu integrieren weil IoT für die wie es aussieht noch „Neuland“ ist…
Gibt es nun eigentlich zu IPS und MQTT irgendwelche Neuigkeiten? Ich versuche ja aus den ganze Scripts hier schlau zu werden, aber leider ohne Erfolg.
Ich habe ein ESPEasy Modul am Laufen, welches Daten an einen Mosquitto Broker sendet. Das funktioniert super und ich kann auf den Broker auch mit MQTT.fx zugreifen und mir alles anschauen. Lediglich bei der IPS Integration scheitere ich. Da gibts ja nun etliche Module und Scripts, aber ehrlich gesagt habe ich keines davon zum Laufen gebracht. Bei kaum einem ist eine Anleitung dabei.
In IPS habe ich jetzt einen IPS Publisher als I/O Instanz gefunden, der aber offensichtlich nur Daten an den Broker senden kann. Gibt es überhaupt eine „einfache“ Möglichkeit, dass ich mir eine Variable anlege und die mit Daten, die vom Broker abgeholt werden updaten lasse?
Warum wird MQTT so stiefmütterlich von IPS gehandhabt?
also ich empfange und sende Daten via Thomas MQTT Implementierung. https://github.com/thomasf68/IPS_MQTT
Einfach das Modul laden, eine Instanz erstellen und dann mit MQTT-Publish() senden und innerhalb eines „Handle“-script empfangen.
Klappt bei mir soweit recht zuverlässig!
Ok. ICh hab das Modul installiert. Die Verbindung zum Client Socket (brokerIP:1883) hergstellt und das Beispiel Handle Script mit angepasster ModulID verwendet. Allerdings passiert nix. Im Beispielscript werden ja auch Variablen angelegt. Die MQTT Nachrichten kommen zum Beispiel auf Energie/Gas/Pulse am Broker an. Wo muss ich ihm mitteilen welche Nachrichten er abbonieren soll? Das ist da momentane Handle Script welches ich verwende.
wie sehen Deine Topics aus (vollständiger Pfad)? Wenn Du Dir unsicher über den Eingang bist, baue mal ein
//var_dump($topic);
in Dein Script ein.
Bei meinen Topics (bei mir in $topic[1]) kommen Strings an. Der interessante Wert (bei mir Temperaturen oder Anzahl der Sensoren) steht in Message (da wäre dann erst mal ein echo gut). Im Case-Zweig verzweige ich also nach $topic[1] und behandle dann den int/float-Wert.
Aktueller Stand.
Das oben aufgeführte Script wird bei mir nach kurzer Zeit als fehlerhaft markiert und scheint dann gar nicht mehr ausgeführt zu werden. Ich habe lediglich die Log Meldung oben aktiviert indem ich die Kommentarzeichen entfernt habe.
Die Verbindung zum MQTT Broker über den MQTT Client und den zugehörigen Socket steht auch, Scheint aber komischerweise immer abzubrechen, wenn das Script ausgeführt wird.
mußte gerade feststellen, dass das Modul von Thomas zur Zeit bei mir nicht arbeitet, statt dessen beim ersten Start einen Fehler produziert und dann nichts mehr tut.
Wenn ich da weiter bin, melde ich mich wieder.
Mit dem echo kannst Du im Meldungsfenser sehen, ob die Verdindung zustande gekommen ist. Und Dein ‚myTOPIC‘ muss in den Debugfenstern von Client und Splitter auftauchen - bei Dir sehe ich da noch nichts.
Grüße, Gerhard
ps: wer sendet die topics? In welcher Form?
mein MQTT läuft wieder - jetzt habe ich etwas mehr Zeit. Zuerst mal Allgemeines: Bei MQTT gibt es 3 Teile,
einen (oder mehr) Publisher, der die Daten in der Form ‚/Topic/Message‘ dem Broker bereit stellt
einen Broker, der Daten von den Publishern bekommt und an Subscriber verteilt
einen (oder mehr) Subscriber, der beim Broker ‚Topics‘ abonniert
Dein Publisher liefert also ‚Energie/Gas/Pulse‘. Die Message dabei sind wolhl die Pulse, der Rest sind die Topics. Dein Subscriber muss sich also für diesen Pfad beim Broker-connect anmelden:
Danke für diene Ausführungen. zunächst habe ich einen fehler bei mir gefunden. Im MQTT_Subscribe die falsche ID drin. Ich hatte die ID der MQTT Client Instanz und nicht die meines Scripts. Die Verbindung zum Broker steht zumindest laut den Debug-Meldungen im MQTT Client. Doet steht
„Connected to broker ok“
Beim broker komen auch meldungen vom Publischer (ESP8266 mit ESPEasy) an (siehe Bild vom MQTTfx Programm).
Irgendwie scheint aber das Subscribe nicht zu funktionieren. Er Empfängt zwar was, aber die Datenblöcke sind komplett leer.
Data arrived:{„DataID“:"{018EF6B5-AB94-40C6-AA53-46943E824ACF}",„Buffer“:„Ã\u0000“}