FHEM Forum

FHEM - Hausautomations-Systeme => MQTT => Thema gestartet von: Joker am 09 November 2017, 10:07:41

Titel: MQTT_DEVICE - Topics mit "$"?
Beitrag von: Joker am 09 November 2017, 10:07:41
Hi,
ich habe einige MQTT_DEVICEs die soweit auch prima funktionieren. Ich subscribe mich auf diverse Topics in dieser Form :
subscribeReading_humidity iotdevices/garagesensor/humidity/relative

Im Device erhalte ich dann ein entsprechendes Reading "humidity"

Nun publishen die zugehörigen Geräte auch ein Topic "$online" (Mit Dollar-Zeichen vorne dran), und ich subscribe mich entsprechend so:
subscribeReading_online iotdevices/garagesensor/$online

Hier erhalte ich allerdings kein Reading "online". Dass das Topic gepostet wird sehe ich aber z.B. in Mqtt.fx. Ist das ein Bug?
Titel: Antw:MQTT_DEVICE - Topics mit "$"?
Beitrag von: eisler am 18 November 2017, 09:31:38
"$" wird nur für Server spezifische Topics wie $SYS verwendet.
In Topics sollte kein "$" verwendet werden.


muss das iotdevices/garagesensor/$online sein?
spricht was gegen iotdevices/garagesensor/online ?


Grüße
Stephan
Titel: Antw:MQTT_DEVICE - Topics mit "$"?
Beitrag von: Joker am 18 November 2017, 09:58:27
Hi Stephan,

danke für deine Antwort. Die Sache ist, die Topic Struktur habe ich mir nicht ausgedacht, sondern die kommt daher dass ich für meine MQTT Geräte Homie als Basis verwende: https://github.com/marvinroger/homie bzw.https://github.com/marvinroger/homie-esp8266.

Die Geräte verwendet einige "Attribute", siehe den ersten Link, und die fangen alle mit $ an. Daher kann ich das so ohne weiteres nicht ändern, beim LWT geht es glaube ich (bin nicht sicher), aber bei den anderen nicht.
Spricht denn generell etwas dagegen? Also MQTT Spezifikation oder sowas? Bzw. was ist der Grund dass es beim MQTT_DEVICE nicht geht, wird es explizit ausgeschlossen oder funktioniert es nicht weil für Perl vielleicht das $ was anderes bedeutet und es zum Fehler kommt?
Titel: Antw:MQTT_DEVICE - Topics mit "$"?
Beitrag von: dev0 am 18 November 2017, 10:23:17
http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html#_Toc398718108
Was sagen denn die Homie "Leute" zu dem Thema?
Titel: Antw:MQTT_DEVICE - Topics mit "$"?
Beitrag von: Joker am 18 November 2017, 16:40:09
Zitat von: dev0 am 18 November 2017, 10:23:17
http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html#_Toc398718108
Hmmm... also:
ZitatThe Server MUST NOT match Topic Filters starting with a wildcard character (# or +) with Topic Names beginning with a $ character [MQTT-4.7.2-1].
Das ist ja ok. Das heißt ja nur dass keine $-Topics auf Wildcards matchen dürfen.

ZitatThe Server SHOULD prevent Clients from using such Topic Names to exchange messages with other Clients. Server implementations MAY use Topic Names that start with a leading $ character for other purposes.
"Should, "may"... ok, also nicht zwingend. Also ich lese da nichts dass es generell nicht erlaubt wäre.

ZitatWas sagen denn die Homie "Leute" zu dem Thema?
Bis jetzt nichts, habe noch keine Issue aufgemacht. Wie gesagt, ich sehe nicht dass etwas falsch daran wäre.
Titel: Antw:MQTT_DEVICE - Topics mit "$"?
Beitrag von: nuccleon am 04 Dezember 2017, 13:20:22
Hallo zusammen,

ich hab hier das gleiche Problem. Kein Empfang von Topics die mit "$" anfangen.
Ich sehe es eigentlich wie Joker.
Gibt es hierzu schon eine Lösung?

Gruß,
Claus
Titel: Antw:MQTT_DEVICE - Topics mit "$"?
Beitrag von: blecher-at am 16 Dezember 2017, 10:56:33
grad diesen patch getestet ... geht damit.
diff --git FHEM/00_MQTT.pm FHEM/00_MQTT.pm
index e8d3c3c..1a0e58b 100644
--- FHEM/00_MQTT.pm
+++ FHEM/00_MQTT.pm
@@ -623,6 +623,7 @@ sub send_message($$$@) {
sub topic_to_regexp($) {
   my $t = shift;
   $t =~ s|#$|.\*|;
+  $t =~ s|\$|\\\$|;
   $t =~ s|\/\.\*$|.\*|;
   $t =~ s|\/|\\\/|g;
   $t =~ s|(\+)([^+]*$)|(+)$2|;
Titel: Antw:MQTT_DEVICE - Topics mit "$"?
Beitrag von: Master_Nick am 07 Februar 2018, 15:12:42
Hallo,
ich bin vom gleichen Problem betroffen, daher denke ich der Patch hat bisher keinen Weg ins Repository gefunden - sollte man dies nicht ändern?

Die Verwendung von Homie als Framework für die ESP's ist ja keine Seltenheit :-)
Titel: Antw:MQTT_DEVICE - Topics mit "$"?
Beitrag von: Joker am 28 Februar 2018, 09:56:55
Ich hole mal eben diesen Thread wieder hoch, da es hier ja ein ähnliches Problem gibt (https://forum.fhem.de/index.php/topic,81765.15.html), allerdings mit Leerzeichen und Doppelpunkt.
Ggf kann man in dem Zuge den hier geposteten Patch auch integrieren.
Titel: Antw:MQTT_DEVICE - Topics mit "$"?
Beitrag von: Master_Nick am 21 März 2018, 00:11:23
Und es wäre auch immer noch sehr interessant den Patch für die Topics mit "$" in das Modul zu übernehmen :-)

Durchs Update knallt er wieder raus.
Titel: Antw:MQTT_DEVICE - Topics mit "$"?
Beitrag von: hexenmeister am 21 März 2018, 08:31:50
Das Problem mit dem Doppelpunkt ist wohl eine Folge eines anderen Patches. Habe dort schon mal erwähnt. Abhilfe: in Anführungszeichen nehmen.
Titel: Antw:MQTT_DEVICE - Topics mit "$"?
Beitrag von: Master_Nick am 21 März 2018, 14:45:04
Aber die Lösung für die Topics mit $ müsste ja weiter mal eingecheckt werden :-D
Titel: Antw:MQTT_DEVICE - Topics mit "$"?
Beitrag von: hexenmeister am 21 März 2018, 16:25:54
Ja, dieser sollte unschädlich sein. Ich kann das Zögern jedoch verstehen, es gab schon einen schlecht getesteten Patch, der übernommen und bis heute nicht repariert worden ist.
Titel: Antw:MQTT_DEVICE - Topics mit "$"?
Beitrag von: Master_Nick am 21 März 2018, 19:33:38
Jo - das verstehe ich.

Titel: Antw:MQTT_DEVICE - Topics mit "$"?
Beitrag von: hexenmeister am 28 März 2018, 08:07:58
https://forum.fhem.de/index.php/topic,86270.msg787057.html#msg787057