Problem mit ignoreRegexp (war: Tasmota: Ein Topic wird ignoriert (MQTT2_Device)

Begonnen von kjmEjfu, 07 November 2020, 12:25:15

Vorheriges Thema - Nächstes Thema

kjmEjfu

Hallo zusammen,

könnt ihr mir mal einen Tipp geben?
Und zwar wird in diesem Device (0815 Sonoff S20 Steckdose):

Internals:
   CID        tasmota_sonoff_2
   DEF        tasmota_sonoff_2
   DEVICETOPIC Steckdose_Roaming_Roaming_Sonoff
   FUUID      5f294733-f33f-8030-6c04-c72dd1cca2973345
   FVERSION   10_MQTT2_DEVICE.pm:0.224580/2020-07-24
   IODev      Mosquitto
   LASTInputDev Mosquitto
   MSGCNT     967
   Mosquitto_MSGCNT 967
   Mosquitto_TIME 2020-11-07 12:15:09
   NAME       Steckdose_Roaming_Roaming_Sonoff
   NR         343
   STATE      off
   TYPE       MQTT2_DEVICE
   JSONMAP:
     POWER      state
   OLDREADINGS:
   READINGS:
     2020-11-07 12:15:09   Heap            28
     2020-11-07 12:15:05   Hostname        tasmota_sonoff_2-1601
     2020-11-07 12:15:05   IPAddress       192.168.178.28
     2020-11-07 12:15:05   LWT             Online
     2020-11-07 12:15:09   LoadAvg         19
     2020-11-07 12:15:09   MqttCount       1
     2020-11-07 12:15:09   POWER1          off
     2020-11-07 12:14:57   Restart         Restarting
     2020-11-07 12:15:05   RestartReason   Software/System restart
     2020-11-07 12:15:09   Sleep           50
     2020-11-07 12:15:09   SleepMode       Dynamic
     2020-11-07 12:15:09   Time            2020-11-07T12:15:09
     2020-11-07 12:15:09   Uptime          0T00:00:11
     2020-11-07 12:15:09   UptimeSec       11
     2020-11-07 12:15:05   WebServerMode   Admin
     2020-11-07 12:15:09   Wifi_AP         1
     2020-11-07 12:15:09   Wifi_BSSId      34:31:C4:F3:1B:0F
     2020-11-07 12:15:09   Wifi_Channel    6
     2020-11-07 12:15:09   Wifi_Downtime   0T00:00:05
     2020-11-07 12:15:09   Wifi_LinkCount  1
     2020-11-07 12:15:09   Wifi_RSSI       70
     2020-11-07 12:15:09   Wifi_SSId       He_WLAN
     2020-11-07 12:15:09   Wifi_Signal     -65
     2020-08-04 13:32:07   associatedWith  MQTT2_Mosquitto
     2020-11-07 12:15:05   state           off
Attributes:
   IODev      Mosquitto
   alias      Steckdose Sonoff
   autocreate 0
   comment    NOTE: For on-for-timer SetExtensions are used. You may add on-for-timer option running on the device. The following is limited to 1h max duration, but will not affect future simple "on" commands:<br>on-for-timer {my $duration = $EVTPART1*10; 'cmnd/tasmota_sonoff_2/Backlog POWER1 1; delay '.$duration.'; POWER1 0'}<br>See the "Praxisbeispiele" in the wiki for "pulseTime1" alternative option and it's restrictions.
   genericDeviceType switch
   group      Strom
   icon       hue_filled_outlet
   jsonMap    POWER:state
   model      tasmota_basic_state_power1
   readingList tele/tasmota_sonoff_2/LWT:.* LWT
  tele/tasmota_sonoff_2/STATE:.* { json2nameValue($EVENT,'',$JSONMAP) }
  tele/tasmota_sonoff_2/SENSOR:.* { json2nameValue($EVENT,'',$JSONMAP) }
  tele/tasmota_sonoff_2/INFO.:.* { json2nameValue($EVENT,'',$JSONMAP) }
  tele/tasmota_sonoff_2/UPTIME:.* { json2nameValue($EVENT,'',$JSONMAP) }
  stat/tasmota_sonoff_2/POWER1:.* state
  stat/tasmota_sonoff_2/RESULT:.* { json2nameValue($EVENT,'',$JSONMAP) }
   room       00_Autocreate
   setList    off:noArg    cmnd/tasmota_sonoff_2/POWER1 0
  on:noArg     cmnd/tasmota_sonoff_2/POWER1 1
  toggle:noArg cmnd/tasmota_sonoff_2/POWER1 2
  setOtaUrl:textField cmnd/tasmota_sonoff_2/OtaUrl $EVTPART1
  upgrade:noArg   cmnd/tasmota_sonoff_2/upgrade 1
   setStateList on off toggle



Zum Testen habe ich mal verbose auf 5 gesetzt und im Device das Template "tasmota_clear_readings_reset_readingList_and_reboot" gesetzt.
Auszug aus dem Logfile dazu:

2020.11.07 12:14:57.839 5: AttrTemplate replace CMNDTOPIC=>cmnd/tasmota_sonoff_2,DEVICE=>Steckdose_Roaming_Roaming_Sonoff,IO_DEV=>Mosquitto,STATTOPIC=>stat/tasmota_sonoff_2,TELETOPIC=>tele/tasmota_sonoff_2
2020.11.07 12:14:57.840 5: AttrTemplate exec attr Steckdose_Roaming_Roaming_Sonoff readingList
  tele/tasmota_sonoff_2/LWT:.* LWT
  tele/tasmota_sonoff_2/STATE:.* { json2nameValue($EVENT,'',$JSONMAP) }
  tele/tasmota_sonoff_2/SENSOR:.* { json2nameValue($EVENT,'',$JSONMAP) }
  tele/tasmota_sonoff_2/INFO.:.* { json2nameValue($EVENT,'',$JSONMAP) }
  tele/tasmota_sonoff_2/UPTIME:.* { json2nameValue($EVENT,'',$JSONMAP) }
  stat/tasmota_sonoff_2/POWER1:.* state
  stat/tasmota_sonoff_2/RESULT:.* { json2nameValue($EVENT,'',$JSONMAP) }
2020.11.07 12:14:57.859 5: AttrTemplate exec deletereading -q Steckdose_Roaming_Roaming_Sonoff (?!associatedWith).*
2020.11.07 12:14:57.860 5: AttrTemplate exec set Mosquitto publish cmnd/tasmota_sonoff_2/Restart 1
2020.11.07 12:14:57.862 5: AttrTemplate exec attr Steckdose_Roaming_Roaming_Sonoff autocreate 0
2020.11.07 12:14:57.988 4: MQTT2_DEVICE_Parse: Steckdose_Roaming_Roaming_Sonoff stat/tasmota_sonoff_2/RESULT => { json2nameValue($EVENT,'',$JSONMAP) }
2020.11.07 12:14:59.338 4: MQTT2_DEVICE_Parse: Steckdose_Roaming_Roaming_Sonoff tele/tasmota_sonoff_2/LWT => LWT
2020.11.07 12:15:05.270 4: MQTT2_DEVICE_Parse: Steckdose_Roaming_Roaming_Sonoff tele/tasmota_sonoff_2/LWT => LWT
2020.11.07 12:15:05.301 4: MQTT2_DEVICE_Parse: Steckdose_Roaming_Roaming_Sonoff tele/tasmota_sonoff_2/INFO2 => { json2nameValue($EVENT,'',$JSONMAP) }
2020.11.07 12:15:05.318 4: MQTT2_DEVICE_Parse: Steckdose_Roaming_Roaming_Sonoff tele/tasmota_sonoff_2/INFO3 => { json2nameValue($EVENT,'',$JSONMAP) }
2020.11.07 12:15:05.334 4: MQTT2_DEVICE_Parse: Steckdose_Roaming_Roaming_Sonoff stat/tasmota_sonoff_2/RESULT => { json2nameValue($EVENT,'',$JSONMAP) }
2020.11.07 12:15:05.352 4: MQTT2_DEVICE_Parse: Steckdose_Roaming_Roaming_Sonoff stat/tasmota_sonoff_2/POWER1 => state
2020.11.07 12:15:09.593 4: MQTT2_DEVICE_Parse: Steckdose_Roaming_Roaming_Sonoff tele/tasmota_sonoff_2/STATE => { json2nameValue($EVENT,'',$JSONMAP) }


wie man sieht, wird INFO1 ignoriert. Obwohl der durch den Neustart zum gleichen Timestamp vom Tasmota-Device neu geschrieben wurde, wie die anderen Topics auch (habe ich per MQTT Explorer überprüft).

Wenn ich im MQTT2_Client den verbose auf 5 setze, dann steht im Log:

2020.11.07 12:21:33.879 5: Mosquitto: received PUBLISH (0)(25)tele/tasmota_sonoff_2/LWTOnline
2020.11.07 12:21:33.879 5: Mosquitto: dispatch autocreate=simple\000Mosquitto\000tele/tasmota_sonoff_2/LWT\000Online
2020.11.07 12:21:33.949 5: Mosquitto: received PUBLISH (0)(27)cmnd/tasmota_sonoff_2/POWER
2020.11.07 12:21:33.961 5: Mosquitto: received PUBLISH (0)(27)tele/tasmota_sonoff_2/INFO1{"Module":"Sonoff S20","Version":"9.1.0(tasmota)","FallbackTopic":"cmnd/DVES_116641_fb/","GroupTopic":"cmnd/tasmotas/"}
2020.11.07 12:21:35.176 5: Mosquitto: received PUBLISH (0)(27)tele/tasmota_sonoff_2/INFO2{"WebServerMode":"Admin","Hostname":"tasmota_sonoff_2-1601","IPAddress":"192.168.178.28"}
2020.11.07 12:21:35.177 5: Mosquitto: dispatch autocreate=simple\000Mosquitto\000tele/tasmota_sonoff_2/INFO2\000{"WebServerMode":"Admin","Hostname":"tasmota_sonoff_2-1601","IPAddress":"192.168.178.28"}
2020.11.07 12:21:35.287 5: Mosquitto: received PUBLISH (0)(27)tele/tasmota_sonoff_2/INFO3{"RestartReason":"Software/System restart"}
2020.11.07 12:21:35.287 5: Mosquitto: dispatch autocreate=simple\000Mosquitto\000tele/tasmota_sonoff_2/INFO3\000{"RestartReason":"Software/System restart"}
2020.11.07 12:21:35.304 5: Mosquitto: received PUBLISH (0)(28)stat/tasmota_sonoff_2/RESULT{"POWER1":"off"}
2020.11.07 12:21:35.304 5: Mosquitto: dispatch autocreate=simple\000Mosquitto\000stat/tasmota_sonoff_2/RESULT\000{"POWER1":"off"}
2020.11.07 12:21:35.321 5: Mosquitto: received PUBLISH (0)(28)stat/tasmota_sonoff_2/POWER1off


INFO1 wird also auch empfangen. Aber wieso wird es nicht ausgewertet?

Danke für Idee!
Migriere derzeit zu Home Assistant

Beta-User

Gibt es evtl. bereits ein anderes Device mit passender readingList?
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Icinger

Funktioniert es, wenn du die Readinglist statt mit
  tele/tasmota_sonoff_2/INFO.:.* { json2nameValue($EVENT,'',$JSONMAP) }

mit
  tele/tasmota_sonoff_2/INFO1:.* { json2nameValue($EVENT,'',$JSONMAP) }
  tele/tasmota_sonoff_2/INFO2:.* { json2nameValue($EVENT,'',$JSONMAP) }
  tele/tasmota_sonoff_2/INFO3:.* { json2nameValue($EVENT,'',$JSONMAP) }

füllst???
Verwende deine Zeit nicht mit Erklärungen. Die Menschen hören (lesen) nur, was sie hören (lesen) wollen. (c) Paulo Coelho

kjmEjfu

Ich finde keines. Ist leider durch die vielen RegEx bei den MQTT-Geräten nicht so einfach festzustellen ;-)
Aber das Problem mit INFO1 habe ich bei allen Tasmota-Geräten, wie ich gerade sehe.

Mal zu nähern ...

Da gibt es den Mosquitto-Client


FlexUI
ui
0000toFix
00_Autocreate
00x_deprecated
05_Datenquellen
10_System
15_Messenger
20_Telekommunikation
21_Roboter
30_Anwesenheit
50_Heizung
70_Security
80_Geräte
80_HUEDevice
99_Logs
ASC
Allrum
Ankleide
Außenbereich
Badezimmer
Energie
Flur
Gästebad
Gästezimmer
HOMEMODE
Homekit
Homematic
Joshua
Kalender
MQTT
Sam
Schlafzimmer
Sonos
Speisekammer
UIs
Unsorted
Wohnzimmer
alexa
netatmo
icoEverything Everything
Logfile
Commandref
Remote doc
Edit files
Select style
Event monitor
DOIFtools
Befehlsreferenz
Internals:
   BUF       
   DEF        192.168.178.50:1885
   DeviceName 192.168.178.50:1885
   FD         19
   FUUID      5e7c9496-f33f-8030-f9b8-ca6ac30ea0a45e39
   FVERSION   00_MQTT2_CLIENT.pm:0.229360/2020-10-07
   NAME       Mosquitto
   NR         297
   PARTIAL   
   STATE      opened
   TYPE       MQTT2_CLIENT
   WBCallback
   clientId   Mosquitto
   lastMsgTime 1604754971.3536
   nextOpenDelay 5
   READINGS:
     2020-11-07 12:14:57   lastPublish     cmnd/tasmota_sonoff_2/Restart:1
     2020-11-05 12:21:00   state           opened
Attributes:
   autocreate simple
   ignoreRegexp cmnd/[^/]+/|homeassistant/.*/config|shellies/[^/]+/command|zigbee2mqtt/[^/]+/set|milight/0x[0-9a-fA-F]{1,4}/.*/[0-8]
   room       MQTT
   username   fhem


Dann das MQTT2-Hauptdevice für alles mögliche (inklusive der Tasmotas):

Internals:
   CID        Mosquitto
   DEF        Mosquitto
   DEVICETOPIC MQTT2_Mosquitto
   FUUID      5e87884d-f33f-8030-d378-e1091d64327a09dc
   FVERSION   10_MQTT2_DEVICE.pm:0.224580/2020-07-24
   IODev      Mosquitto
   LASTInputDev Mosquitto
   MSGCNT     29117
   Mosquitto_MSGCNT 29117
   Mosquitto_TIME 2020-11-07 14:17:09
   NAME       MQTT2_Mosquitto
   NR         302
   STATE      opened
   TYPE       MQTT2_DEVICE
   OLDREADINGS:
   READINGS:
Attributes:
   IODev      Mosquitto
   alias      Mosquitto Hauptdevice
   autocreate 1
   bridgeRegexp (tele|stat)[/]([^/]+)[/].*:.* "$2"
  shellies[/]([^/]+)[/].*:.* "$1"
  (zigbee2mqtt)/bridge/.*:.* "$1"
  (ESPClient_[^/]+)/.*:.* "$1"
  (ebusd)/global/.*:.* "$1"
  valetudo[/]([^/]+)[/].*:.* "$1"
  [^/]+[/](ems-esp[^/]+)/start:.* "$1"
  wallpanel[/]([^/]+)[/].*:.* "wallpanel_$1"
  (wled)[/]([^/]+)[/].*:.* "$1_$2"
  (go-eCharger)[/]([^/]+)[/].*:.* "go_eCharger_$2"
  (owntracks)[/]([^/:]+)[/]([^/:]+).*:.* "$1_$2$3"
  Advantech[/]([^/]+)[/].*:.* "$1"
  (sonos)/connected.* "$1"
  (tvheadend)[/][^/:]+.* "$1"
  (mygateway[\d]+)-(in|out)/.* "$1"
  (milight)/LWT:.* "$1"
  home/(O[^/]*M[^/]*G[^/]*)/LWT:.* "$1"
  homeassistant/.*/config:.* ""
   comment    Do not use very open bridgeRegexp expressions! This might lead to irritating results... Especially make sure to not have two regexpes that may both match!
   event-on-change-reading .*
   icon       mqtt_bridge_2
   model      MQTT2_CLIENT_general_bridge
   room       00_Autocreate,MQTT
   setList    clear_all:noArg {fhem("deleteattr $NAME readingList; deletereading -q $NAME (?!associatedWith).*");return undef}
   setStateList on off
   stateFormat {ReadingsVal("Mosquitto","state","unknown")}


Dann ein MQTT2_DEVICE für die SonosBridge, der geht auf nur auf das Haupttopic (und darunter) von sonos2mqtt.
bridgeRegexp sonos/(RINCON_[A-Z0-9]+)[:/].* "$1"

Analog dazu das MQTT2-DEVICE für Zigbee, der auch auf seinem Haupttopic (und darunter) ist:
bridgeRegexp zigbee2mqtt/([A-Za-z0-9._]+)[/]?.*:.* "zigbee_$1"
devicetopic zigbee2mqtt



Ich habe nochmal im Log gesucht und mal umsortiert (deshalb die Timestamps etwas durcheinander):

2020.11.07 14:26:07.321 5: Mosquitto: received PUBLISH (0)(25)tele/tasmota_sonoff_2/LWTOffline
2020.11.07 14:26:07.347 4: MQTT2_DEVICE_Parse: Steckdose_Roaming_Roaming_Sonoff tele/tasmota_sonoff_2/LWT => LWT

2020.11.07 14:26:11.267 5: Mosquitto: received PUBLISH (0)(25)tele/tasmota_sonoff_2/LWTOnline
2020.11.07 14:26:11.278 4: MQTT2_DEVICE_Parse: Steckdose_Roaming_Roaming_Sonoff tele/tasmota_sonoff_2/LWT => LWT

2020.11.07 14:26:12.673 5: Mosquitto: received PUBLISH (0)(28)stat/tasmota_sonoff_2/POWER1off
2020.11.07 14:26:12.680 4: MQTT2_DEVICE_Parse: Steckdose_Roaming_Roaming_Sonoff stat/tasmota_sonoff_2/POWER1 => state

2020.11.07 14:26:12.571 5: Mosquitto: received PUBLISH (0)(27)tele/tasmota_sonoff_2/INFO2{"WebServerMode":"Admin","Hostname":"tasmota_sonoff_2-1601","IPAddress":"192.168.178.28"}
2020.11.07 14:26:12.586 4: MQTT2_DEVICE_Parse: Steckdose_Roaming_Roaming_Sonoff tele/tasmota_sonoff_2/INFO2 => { json2nameValue($EVENT,'',$JSONMAP) }

2020.11.07 14:26:12.615 5: Mosquitto: received PUBLISH (0)(27)tele/tasmota_sonoff_2/INFO3{"RestartReason":"Software/System restart"}
2020.11.07 14:26:12.634 4: MQTT2_DEVICE_Parse: Steckdose_Roaming_Roaming_Sonoff tele/tasmota_sonoff_2/INFO3 => { json2nameValue($EVENT,'',$JSONMAP) }

2020.11.07 14:26:15.576 5: Mosquitto: received PUBLISH (0)(27)tele/tasmota_sonoff_2/STATE{"Time":"2020-11-07T14:26:15","Uptime":"0T00:00:09","UptimeSec":9,"Heap":27,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":1,"POWER1":"off","Wifi":{"AP":1,"SSId":"He_WLAN","BSSId":"34:31:C4:F3:1B:0F","Channel":6,"RSSI":64,"Signal":-68,"LinkCount":1,"Downtime":"0T00:00:03"}}
2020.11.07 14:26:15.588 4: MQTT2_DEVICE_Parse: Steckdose_Roaming_Roaming_Sonoff tele/tasmota_sonoff_2/STATE => { json2nameValue($EVENT,'',$JSONMAP) }

2020.11.07 14:26:12.659 5: Mosquitto: received PUBLISH (0)(28)stat/tasmota_sonoff_2/RESULT{"POWER1":"off"}
2020.11.07 14:26:12.664 4: MQTT2_DEVICE_Parse: Steckdose_Roaming_Roaming_Sonoff stat/tasmota_sonoff_2/RESULT => { json2nameValue($EVENT,'',$JSONMAP) }

2020.11.07 14:26:12.563 5: Mosquitto: received PUBLISH (0)(27)tele/tasmota_sonoff_2/INFO1{"Module":"Sonoff S20","Version":"9.1.0(tasmota)","FallbackTopic":"cmnd/DVES_116641_fb/","GroupTopic":"cmnd/tasmotas/"}


Wie man sieht, will niemand ein Parse auf INFO1 durchführen. Interessanterweise wird auch kein dispatch (habe ich oben aus dem Log leider schon rausgelöscht) für INFO1 durchgeführt.


Was mir aber gerade auffällt

2020.11.07 14:26:12.563 5: Mosquitto: received PUBLISH (0)(27)tele/tasmota_sonoff_2/INFO1{"Module":"Sonoff S20","Version":"9.1.0(tasmota)","FallbackTopic":"cmnd/DVES_116641_fb/","GroupTopic":"cmnd/tasmotas/"}

Da steht cmnd/ drin.
Und im MQTT2_CLIENT ist im ignoreRegexp auch ein cmnd/ drin, analog zu https://wiki.fhem.de/wiki/MQTT2_CLIENT#ignoreRegexp
Hängt das eventuell daran?
Migriere derzeit zu Home Assistant

kjmEjfu

Zitat von: Icinger am 07 November 2020, 14:40:35
Funktioniert es, wenn du die Readinglist statt mit
  tele/tasmota_sonoff_2/INFO.:.* { json2nameValue($EVENT,'',$JSONMAP) }

mit
  tele/tasmota_sonoff_2/INFO1:.* { json2nameValue($EVENT,'',$JSONMAP) }
  tele/tasmota_sonoff_2/INFO2:.* { json2nameValue($EVENT,'',$JSONMAP) }
  tele/tasmota_sonoff_2/INFO3:.* { json2nameValue($EVENT,'',$JSONMAP) }

füllst???

Nee, habe ich auch schon getestet
Migriere derzeit zu Home Assistant

kjmEjfu

Tatsächlich, wenn ich das ignoreRegexp (s.o.) als Attribut im MQTT2_CLIENT lösche, dann kommt auch INFO1 entsprechend an.

Aber wieso? Hab mich bei dem Eintrag doch nur ans Wiki gehalten ;-)
Migriere derzeit zu Home Assistant

Beta-User

...das Wiki ist auch nur so "schlau" wie der, der es schreibt... Muss wohl nacharbeiten...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

kjmEjfu

Zitat von: Beta-User am 07 November 2020, 14:55:14
...das Wiki ist auch nur so "schlau" wie der, der es schreibt... Muss wohl nacharbeiten...

War nicht böse gemeint.

Bin ja froh, wenn es letztlich "nur" daran liegt und wir einen Fehler beheben können, der sicher hier und da noch für weitere Verwirrung gesorgt hätte.
Migriere derzeit zu Home Assistant

Beta-User

...alles gut :)
Ausser der ignoreRegexp. Die hat schon ihre Berechtigung, sollte aber verbessert werden, dass sie diesen Sonderfall durchlässt. Ein Vorschlag wäre super...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

kjmEjfu

Ich bin RegEx-Depp, sorry ;-)

^cmnd/[^/]+/|^homeassistant/.*/config|^shellies/[^/]+/command|^zigbee2mqtt/[^/]+/set|^milight/0x[0-9a-fA-F]{1,4}/.*/[0-8]

Ist zu trivial?
Wobei mir unklar ist, wie ignoreRegexp überhaupt funktioniert. Also wird da nur der reine Topic-Pfad überprüft oder eine Textzeile mit allem möglichen inklusive Topic-Pfad?
Migriere derzeit zu Home Assistant

Beta-User

War das die Ankündigung, dass du es jetzt lernen willst ;D ?

Vermutlich ist es tatsächlich zu trivial, denn Ziel bei dem Wiki/attrTemplate-Vorschlag war eigentlich, auch die "/smarthome/.*"-"Jünger" nicht zu nötigen, wieder eine Änderung (hin zu den defaults) vorzunehmen, die sie nicht verstehen...

Dazu kommt, dass ich zwar jetzt weiß, dass topic+payload geprüft werden, nicht aber, wie das mit der CID ist - und spätestens da filtert es auch dann nicht mehr, wenn es bei den defaults geblieben ist ;) .

Eigentlich müßte "nicht Anführungszeichen" gehen
(![^"])
, kann aber sein, dass das optional sein kann/muss.
Das wäre dann _vermutlich_ (bin auch regex-Lerner, der Hilfsmittel braucht, den Teil aber noch nicht getestet hat)
((!?[^"])
Im Zweifel regex101.com bemühen...

Wäre tollt, wenn du das "fertig testen" könntest - hätten wir beide was von ;) .
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

kjmEjfu

Da war vorne ein ( zuviel.

(!?[^"])cmnd/[^/]+/|(!?[^"])homeassistant/.*/config|(!?[^"])shellies/[^/]+/command|(!?[^"])zigbee2mqtt/[^/]+/set|(!?[^"])milight/0x[0-9a-fA-F]{1,4}/.*/[0-8]

scheint zu funktionieren
Migriere derzeit zu Home Assistant

rudolfkoenig

Sollten wir das nicht irgendwie anders loesen?
Ich weiss zwar noch nicht wie, aber das o.g koennte ich nicht pflegen.

Beta-User

Na ja, bei der Einführung der ignoreRegexp ging es eigentlich nur um Topics, und ich finde das obige auch nicht unbedingt selbsterklärend/user friendly.

Dass manche Geräte meinen, sie seien einfacher zu konfigurieren, wenn sie ihre Subscriptions in die Payload packen, war mir da noch nicht soooo deutlich vor Augen.

Könnte man das nicht einfach beschränken und nur den Topic-Teil gegen die regex laufen lassen, also nicht auch die Payload? Um die Payload sollte sich dann DEVICE kümmern.

Mein Bauchgefühl dazu, kann auch falsch sein...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

rudolfkoenig

Ich wuerde ungern auf die Moeglichkeit verzichten, Inhalte pruefen zu koennen.
Die ignoreRegexp Implementierung ist leider nicht konsequent, ich habe hier das anderswo uebliche ^$ vergessen.
Mit ^ sollte die Topic Pruefung moeglich sein:
attr MQTT2_Mosquitto_Client ignoreRegexp ^(cmnd/[^/]+/|homeassistant/.*/config|shellies/[^/]+/command|zigbee2mqtt/[^/]+/set|milight/0x[0-9a-fA-F]{1,4}/.*/[0-8]):

Ist zwar nicht besonders lese-freundlich, aber eine Pruefung nur auf Topic waere auch nicht deutlich besser.