NEWS
MQTT Subscribe funktoniert nicht
-
Hallo
Ich verwende einen freien MQTT Broker (cloudmqtt), an den ich aktuell Daten über die App "owntracks" schicke.
Ich habe deswegen im IO-Broker den MQTT Adapter wie folgt eingerichtet:
Leider bekomme ich keine Datenänderungen, die ich an cloudmqtt schicke, im IOBroker mit.Ich habe ein Java-Script geschrieben in dem ich auf die mqtt-Variable triggere
var id_mqtt_Ralf = "mqtt.0.owntracks_*****_Ralf"; on(id_mqtt_Ralf, function (obj) { log("mqtt Protokoll received"); // console.log(JSON.stringify(obj.newState)); });
Aber leider sehe ich nichts im Log, wenn ich Daten an cloudmqtt schicke.
Dann habe ich es über einen Node-Red Flow probiert:
Auch keine Reaktion.Mach ich da grundsätzlich was falsch??
Kann mir da ev. jemand auf die Sprünge helfen?
Ausserdem sieht es so aus als ob IOBroker versucht ständig Daten an den Broker zu schicken obwohl ich die Haken "Publish nur bei Änderung" und "Sende auch Zustände" nicht angehakt habe!
... hm-rega.0 2010-01-01 01:52:20 debug hm-rega.0 --> !# polling.fn 1.2 !# !# Dieses Script gibt die Werte aller Systemvariablen als J hm-rega.0 2010-01-01 01:52:20 debug hm-rega.0 --> programs.fn hm-rega.0 2010-01-01 01:52:20 debug hm-rega.0 --> polling.fn mqtt.0 2010-01-01 01:52:14 info mqtt.0 Send to server "system/adapter/hm-rpc/1/connected": true hm-rega.0 2010-01-01 01:52:00 debug hm-rega.0 stateChange hm-rega.0.48841.Active {"val":true,"ack":true,"ts":1262307121,"q":0,"from":"system.adapter.hm-rega.0","lc":1450726784} hm-rega.0 2010-01-01 01:52:00 debug inMem message hm-rega.0.* hm-rega.0.48841.Active .... hm-rega.0 2010-01-01 01:51:51 debug inMem message hm-rega.0.* hm-rega.0.1960 hm-rega.0 2010-01-01 01:51:51 debug hm-rega.0 stateChange hm-rega.0.1885 {"val":false,"ack":true,"ts":1262307111,"q":0,"from":"system.adapter.hm-rega.0","lc":1451865600} hm-rega.0 2010-01-01 01:51:51 debug inMem message hm-rega.0.* hm-rega.0.1885 hm-rega.0 2010-01-01 01:51:51 debug hm-rega.0 stateChange hm-rega.0.1771 {"val":false,"ack":true,"ts":1262307111,"q":0,"from":"system.adapter.hm-rega.0","lc":1451845316} hm-rega.0 2010-01-01 01:51:51 debug inMem message hm-rega.0.* hm-rega.0.1771 hm-rega.0 2010-01-01 01:51:50 debug hm-rega.0 stateChange hm-rega.0.1322 {"val":false,"ack":true,"ts":1262307111,"q":0,"from":"system.adapter.hm-rega.0","lc":0} hm-rega.0 2010-01-01 01:51:50 debug inMem message hm-rega.0.* hm-rega.0.1322 hm-rega.0 2010-01-01 01:51:50 debug hm-rega.0 stateChange hm-rega.0.950 {"val":false,"ack":true,"ts":1262307111,"q":0,"from":"system.adapter.hm-rega.0","lc":1450657166} hm-rega.0 2010-01-01 01:51:50 debug inMem message hm-rega.0.* hm-rega.0.950 hm-rega.0 2010-01-01 01:51:50 debug hm-rega.0 stateChange hm-rega.0.maintenance {"val":15,"ack":true,"ts":1262307111,"q":0,"from":"system.adapter.hm-rega.0","lc":1451866718} hm-rega.0 2010-01-01 01:51:50 debug inMem message hm-rega.0.* hm-rega.0.maintenance hm-rega.0 2010-01-01 01:51:50 debug hm-rega.0 --> !# programs.fn 1.3 !# Dieses Script gibt eine Liste der Programme als JSON Strin hm-rega.0 2010-01-01 01:51:50 debug hm-rega.0 stateChange hm-rega.0.alarms {"val":0,"ack":true,"ts":1262307111,"q":0,"from":"system.adapter.hm-rega.0","lc":1450656830} hm-rega.0 2010-01-01 01:51:50 debug inMem message hm-rega.0.* hm-rega.0.alarms hm-rega.0 2010-01-01 01:51:50 debug hm-rega.0 <-- {"15116":[false,"2015-12-29 17:04:28"], "1322":[false,"1970-01-01 01:00:00"], "2033":[true,"2016-01-04 01:00:00"], "2034":[true,"2016-01-04 01:00:00"], "7026":[3.141500,"2015-12-21 0 hm-rega.0 2010-01-01 01:51:50 debug hm-rega.0 --> !# polling.fn 1.2 !# !# Dieses Script gibt die Werte aller Systemvariablen als J hm-rega.0 2010-01-01 01:51:50 debug hm-rega.0 --> programs.fn hm-rega.0 2010-01-01 01:51:50 debug hm-rega.0 --> polling.fn mqtt.0 2010-01-01 01:51:48 info mqtt.0 Send to server "system/adapter/hm-rpc/1/connected": true mqtt.0 2010-01-01 01:51:41 info mqtt.0 Send to server "system/adapter/hm-rpc/0/connected": true mqtt.0 2010-01-01 01:51:36 info mqtt.0 Send to server "system/adapter/hm-rpc/1/connected": true
Gruss Ralf
-
moin,
unter Node-Red Scripte gibt es einen Flow direkt für Owntrack. Der läuft soweit bei mir. Es kommen Daten an. Habe nur Probleme die Daten zu verarbeiten. Dort wurde auch beschrieben wie MQTT konfiguriert wurde!
mfg
Arminhh
-
Hi Armin
Meinst Du den Thread hier http://forum.iobroker.de/viewtopic.php? … 0995#p4684
Da hab ich den Node-Red flow her. Aber auch hier wie gesagt wird nicht getriggert.
Gruss Ralf
-
ja den meinte ich damit habe ich owntrack zum laufen bekommen. Der letzte Flow den ich eingefügt habe hat soweit funktioniert.
Hast Du die Ports am Router freigegeben?
Ich hatte am Anfang mit der Version im Googleshop Probleme und habe dann die Version von der Entwicklerseite genommen.
Verbindung hatte ich aber sofort!
Bin nur gescheitert die IOBroker Variablen zu füllen. Vielleicht bekommt man es ja zusammen hin!
mfg
Arminhh
-
Hallo Armin
Ich habe mal auf der Fritzbox die Portfreigabe wie folgt gemacht:
Hat aber keine Änderung ergeben.Welchen Broker verwendest Du? Hast Du einen eigenen?
Vielleicht ist das ja der Unterschied. Ich verwende den MQTT Adapter ja nur als Client. Der Broker ist ja ein Freier (http://www.cloudmqtt.com).
Ausserdem scheint es unmöglich zu sein den Adapter nur als Empfänger zu konfigurieren. Bei mir versucht er auch ständig alle Änderungen zu senden.
Gruss Ralf
-
ja der IOBroker MQTT habe ich als Server konfiguriert. Genau wie im Thread beschrieben, warum auch einen anderen?
mfg
Arminhh
-
Hi Armin
Eben deshalb: Weil ich dann einen Port in mein Heimnetzwerk aufmachen muss. Das wollte ich eigentlich vermeiden. Portfreigaben sind ja aus Sicherheitsgründen nicht so der wahre Jakob. Ausserdem müsste dann der IOBroker stabil laufen, was er aktuell nicht tut. Ich habe immer wieder den Effekt, dass er sich über das WebUI plötzlich nicht mehr meldet, oder das VIS geänderte Widgets nicht zurückschreibt, oder dass Updates schiefgehen usw.
Heisst das aber dann, dass der MQTT Adapter gar nicht als Client (also nur als Subscriber) gedacht ist?
Aber man kann doch in der MQTT Konfiguration die Anmeldedaten eines MQTT Brokers eingeben. Ich hatte das zumindest so verstanden.
Wenn IOBroker selbst der MQTT Broker ist: Wozu dann die Anmeldedaten? Ich glaub ich steh grad auf dem Schlauch.
Gruss Ralf
-
so tief stecke ich da auch nicht drin. Als Client habe ich das nie probiert. Versuche doch erst einmal das mit IOBroker hin zu bekommen. Wenn der Entwickler Buefox wieder aus dem Urlaub ist kann er evt. was zur Client Konfiguration sagen!
mfg
Arminhh
-
Is vielleicht ne gute Idee
Dann wart ich mal…
Gruss Ralf
-
> Ausserdem scheint es unmöglich zu sein den Adapter nur als Empfänger zu konfigurieren.
Es war keine Notwendigkeit noch den Client nur lesend zu machen.Falls erforderlich kann ich noch dazu implementieren.
Man kann aber den als ReadOnly machen, indem man "Maske für eigene States" auf irgendwas XXX setzt.
> Heisst das aber dann, dass der MQTT Adapter gar nicht als Client (also nur als Subscriber) gedacht ist?
Der sollte als Broker(Server) oder auch als Client laufen.Kann man vielleicht mit irgendeinem lokalem MQTT Server ausprobieren um die Firewall Probleme auszuschließen.
-
Hallo Buefox
` > Es war keine Notwendigkeit noch den Client nur lesend zu machen.Falls erforderlich kann ich noch dazu implementieren.
Man kann aber den als ReadOnly machen, indem man "Maske für eigene States" auf irgendwas XXX setzt. `
Gute Idee. D.h. wenn ich "Maske auf eigene States" auf "XXX" setze, dann hört er auf die Änderungen senden zu wollen?
Das probiere ich mal am Wochenende aus.
> Kann man vielleicht mit irgendeinem lokalem MQTT Server ausprobieren um die Firewall Probleme auszuschließen.
Ich bin sicher, dass das Problem nicht die Firewall ist.
Und zwar aus folgendem Grund:
Auf dem gleichen Banana-Pi auf dem IOBroker läuft, läuft auch ein Python-Script das regelmässig die MQTT Protokolle von http://www.cloudmqtt.com abholt.
Und das funktioniert wunderbar.
PS: Falls das jemand mal ausprobieren will: Unter dem Menüpunkt "Plans" kann man den kostenlosen "Cute-Cat" Plan (10 connections, 10 Kbit/s) für umme ausproieren. Man bekommt dann eine Serveradresse, ein Password und einen Usernamen zugeteilt und hat damit einen freien kostenlosen MQTT Broker und muss damit nicht mal sein internes Netz nach aussen durch irgendwelche Portfreigaben oder andere Tricks aufmachen.
Ich würde mr halt nur gerne das Python script sparen und die Telegramme mit dem Adapter abholen.
Falls jemand der Quellcode interessiert: Den hab ich von hier https://pypi.python.org/pypi/paho-mqtt/1.1
Gruss Ralf
305_view1-1p-abw-widget.txt
305_abwtest-heizscript.txt