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?
"$" 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
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?
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?
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.
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
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|;
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 :-)
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.
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.
Das Problem mit dem Doppelpunkt ist wohl eine Folge eines anderen Patches. Habe dort schon mal erwähnt. Abhilfe: in Anführungszeichen nehmen.
Aber die Lösung für die Topics mit $ müsste ja weiter mal eingecheckt werden :-D
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.
Jo - das verstehe ich.
https://forum.fhem.de/index.php/topic,86270.msg787057.html#msg787057