(solved)logging von ganzem Topci und payload dynamisch wildcard mqtt2

Begonnen von riker1, 08 Juni 2020, 15:38:00

Vorheriges Thema - Nächstes Thema

riker1

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
FHEM    5.26.1 Ubuntu 18, FHEM    5.26.1 RPI 3 , Actoren: IT ,Tasmota, ESPEasy,
MAX CUBE, MAX HT, MAX WT, Selbstbau nanoCULs, FS 20,Tasmota, Homematic, FTK, SW. DIM, Smoke,KODI,Squeezebox

rudolfkoenig

readingList nimmt ein Regexp als Argument (wie man es im commandref 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.

rudolfkoenig

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.

riker1

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
FHEM    5.26.1 Ubuntu 18, FHEM    5.26.1 RPI 3 , Actoren: IT ,Tasmota, ESPEasy,
MAX CUBE, MAX HT, MAX WT, Selbstbau nanoCULs, FS 20,Tasmota, Homematic, FTK, SW. DIM, Smoke,KODI,Squeezebox

riker1

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?
FHEM    5.26.1 Ubuntu 18, FHEM    5.26.1 RPI 3 , Actoren: IT ,Tasmota, ESPEasy,
MAX CUBE, MAX HT, MAX WT, Selbstbau nanoCULs, FS 20,Tasmota, Homematic, FTK, SW. DIM, Smoke,KODI,Squeezebox

Beta-User

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/
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

riker1

FHEM    5.26.1 Ubuntu 18, FHEM    5.26.1 RPI 3 , Actoren: IT ,Tasmota, ESPEasy,
MAX CUBE, MAX HT, MAX WT, Selbstbau nanoCULs, FS 20,Tasmota, Homematic, FTK, SW. DIM, Smoke,KODI,Squeezebox

rudolfkoenig

Wobei es auch mit weniger [] geht:
[^/]+/L1/.+
Und vermutlich reicht
.*/L1/.*
auch, auch wenn das nicht exakt dem +/L1/# entspricht.

riker1

#8
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
FHEM    5.26.1 Ubuntu 18, FHEM    5.26.1 RPI 3 , Actoren: IT ,Tasmota, ESPEasy,
MAX CUBE, MAX HT, MAX WT, Selbstbau nanoCULs, FS 20,Tasmota, Homematic, FTK, SW. DIM, Smoke,KODI,Squeezebox

Beta-User

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...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

riker1

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.
FHEM    5.26.1 Ubuntu 18, FHEM    5.26.1 RPI 3 , Actoren: IT ,Tasmota, ESPEasy,
MAX CUBE, MAX HT, MAX WT, Selbstbau nanoCULs, FS 20,Tasmota, Homematic, FTK, SW. DIM, Smoke,KODI,Squeezebox