FHEM Forum

FHEM - Hausautomations-Systeme => MQTT => Thema gestartet von: riker1 am 08 Juni 2020, 15:38:00

Titel: (solved)logging von ganzem Topci und payload dynamisch wildcard mqtt2
Beitrag von: riker1 am 08 Juni 2020, 15:38:00
Hallo

wie kann ich denn bei MQTT2 devices
das vollständige Publich Topic und Payload loggen?
würde gerne Wildcards verwenden

attr device  readingList +/L1/.*  LOG_L1_all\

wenn ich es so definiere bekomme ich nur alle payloads für das Topic:
+//L1/.*

Geht das irgendwie?

Danke T
Titel: Antw:logging von ganzem Topci und payload dynamisch wildcard mqtt2
Beitrag von: rudolfkoenig am 08 Juni 2020, 15:56:34
readingList nimmt ein Regexp als Argument (wie man es im commandref (https://fhem.de/commandref_modular.html#MQTT2_DEVICEattr) nachlesen kann), und nicht das (mAn zu eingeschraenkte) MQTT Wildcard.
Aber +/L1/.* ist weder ein Regexp, noch ein MQTT-Wildcard.

Zitatwenn ich es so definiere bekomme ich nur alle payloads für das Topic:
Bei mir gibts eine Fehlermeldung im FHEM-Log:
PERL WARNING: ^+ matches null string many times in regex; marked by <-- HERE in m/^+ <-- HERE /L1/.*$/ at ./FHEM/10_MQTT2_DEVICE.pm line 592.
Titel: Antw:logging von ganzem Topci und payload dynamisch wildcard mqtt2
Beitrag von: rudolfkoenig am 08 Juni 2020, 16:08:12
Leider behandelt Perl dieses Regexp nicht als fehlerhaft, damit schlaegt meine Regexp-Pruefung in diesem Fall fehl, und die Meldung kommt nur im Log als Warnung.
Ich habe jetzt fuer + und * am Anfang eine Extra-Pruefung eingebaut.
Titel: Antw:logging von ganzem Topci und payload dynamisch wildcard mqtt2
Beitrag von: riker1 am 08 Juni 2020, 16:08:48
Hallo Rudolf,

ja sorry,

ich meinte als Wildcard-subscription: +/L1/#

würde man so etwas darfstellen können?

der log sollte das komplette topic und den payload dazu enthalten.

Danke
Titel: Antw:logging von ganzem Topci und payload dynamisch wildcard mqtt2
Beitrag von: riker1 am 08 Juni 2020, 16:10:45
Zitat von: rudolfkoenig am 08 Juni 2020, 16:08:12
Leider behandelt Perl dieses Regexp nicht als fehlerhaft, damit schlaegt meine Regexp-Pruefung in diesem Fall fehl, und die Meldung kommt nur im Log als Warnung.
Ich habe jetzt fuer + und * am Anfang eine Extra-Pruefung eingebaut.

ok, vorne kann ich ohne Wildcard + leben. 

aber wie kann ich hinten # als wildcard setzen in fhem?
Titel: Antw:logging von ganzem Topci und payload dynamisch wildcard mqtt2
Beitrag von: Beta-User am 08 Juni 2020, 16:28:52
Nochmal: es ist regexp, mit der MQTT-"Sprache" klappt das nicht...

Ein "mosquitto_sub auf +/L1/#" muß in der readingList bzw. in den RAW-Events (falls du die einschaltest und dann loggen willst) als [^/]+[/]L1[/].+ geschrieben werden. Beachte: Das "+" hat hier im regex-Kontext eine ganz andere Bedeutung, siehe z.B. https://regex101.com/
Titel: Antw:logging von ganzem Topci und payload dynamisch wildcard mqtt2
Beitrag von: riker1 am 08 Juni 2020, 16:39:17
ok danke ,

muss ich mal genau probieren
Titel: Antw:logging von ganzem Topci und payload dynamisch wildcard mqtt2
Beitrag von: rudolfkoenig am 08 Juni 2020, 16:51:29
Wobei es auch mit weniger [] geht:
[^/]+/L1/.+
Und vermutlich reicht
.*/L1/.*
auch, auch wenn das nicht exakt dem +/L1/# entspricht.
Titel: Antw:logging von ganzem Topci und payload dynamisch wildcard mqtt2
Beitrag von: riker1 am 08 Juni 2020, 17:06:17
Zitat von: rudolfkoenig am 08 Juni 2020, 16:51:29
Wobei es auch mit weniger [] geht:
[^/]+/L1/.+
Und vermutlich reicht
.*/L1/.*
auch, auch wenn das nicht exakt dem +/L1/# entspricht.

Hallo

danke, aber wie bekomme ich den ganzen subscribeTopic ins Reading?

ich bekomme scheinbar alle payloads der Topics die dem Regex entsprechen. oder kann ich hier ein JSON verwenden?
Das ist leider Neuland für mich. wieder mal...

Danke
Titel: Antw:logging von ganzem Topci und payload dynamisch wildcard mqtt2
Beitrag von: Beta-User am 08 Juni 2020, 17:21:12
Vielleicht beschreibst du besser den usecase bzw. das Problem, das du lösen willst?

Loggen sollte so gehen, wenn man am IO RAW events entsprechend aktiviert, und das war die Anforderung. Scheinbar willst du aber doch nicht nur loggen, sondern irgendein spezielles "MQTT-Ding" zu einem funktionalen Device und ordentlichen Readings machen. Das wäre was anderes...
Titel: Antw:logging von ganzem Topci und payload dynamisch wildcard mqtt2
Beitrag von: riker1 am 08 Juni 2020, 17:37:43
Hallo

nein  will ich nur loggen

wobei ich dann gerne je Zeile die sub_Topic und das payload hätte.

das ist aber nun ok. das komplette tasmota consolen log kommt alles in einer Zeile .

Danke für die Tolle Hilfe

und sorry für die missverständliche  Anfrage bzw Wording

VG T.