MQTT_DEVICE - Topics mit "$"?

Begonnen von Joker, 09 November 2017, 10:07:41

Vorheriges Thema - Nächstes Thema

Joker

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?

eisler

#1
"$" 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

Joker

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?

dev0


Joker

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.

nuccleon

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

blecher-at

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|;

Master_Nick

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 :-)
Rancher K8s Cluster mit nanoCUL (a-culfw) | IObroker | IT(V1&V3), IT-PIR, THGR122NX |Co² | alexa-fhem | WOL | NFC | Harmony UltimateHub | Anwesenheitserkennnung | Roomba | 10" Touch mit Node-Red | SonOff S20 | SonOff Touch | SonOff Dual | Rolladen | Und ganz viel anderes tolles Gerödel.... ;-)

Joker

Ich hole mal eben diesen Thread wieder hoch, da es hier ja ein ähnliches Problem gibt, allerdings mit Leerzeichen und Doppelpunkt.
Ggf kann man in dem Zuge den hier geposteten Patch auch integrieren.

Master_Nick

#9
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.
Rancher K8s Cluster mit nanoCUL (a-culfw) | IObroker | IT(V1&V3), IT-PIR, THGR122NX |Co² | alexa-fhem | WOL | NFC | Harmony UltimateHub | Anwesenheitserkennnung | Roomba | 10" Touch mit Node-Red | SonOff S20 | SonOff Touch | SonOff Dual | Rolladen | Und ganz viel anderes tolles Gerödel.... ;-)

hexenmeister

Das Problem mit dem Doppelpunkt ist wohl eine Folge eines anderen Patches. Habe dort schon mal erwähnt. Abhilfe: in Anführungszeichen nehmen.
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

Master_Nick

Aber die Lösung für die Topics mit $ müsste ja weiter mal eingecheckt werden :-D
Rancher K8s Cluster mit nanoCUL (a-culfw) | IObroker | IT(V1&V3), IT-PIR, THGR122NX |Co² | alexa-fhem | WOL | NFC | Harmony UltimateHub | Anwesenheitserkennnung | Roomba | 10" Touch mit Node-Red | SonOff S20 | SonOff Touch | SonOff Dual | Rolladen | Und ganz viel anderes tolles Gerödel.... ;-)

hexenmeister

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.
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

Master_Nick

Rancher K8s Cluster mit nanoCUL (a-culfw) | IObroker | IT(V1&V3), IT-PIR, THGR122NX |Co² | alexa-fhem | WOL | NFC | Harmony UltimateHub | Anwesenheitserkennnung | Roomba | 10" Touch mit Node-Red | SonOff S20 | SonOff Touch | SonOff Dual | Rolladen | Und ganz viel anderes tolles Gerödel.... ;-)

hexenmeister

Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy