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!
Gibt es evtl. bereits ein anderes Device mit passender readingList?
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???
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?
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
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 ;-)
...das Wiki ist auch nur so "schlau" wie der, der es schreibt... Muss wohl nacharbeiten...
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.
...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...
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?
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 ;) .
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
Sollten wir das nicht irgendwie anders loesen?
Ich weiss zwar noch nicht wie, aber das o.g koennte ich nicht pflegen.
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...
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.
Na ja, es ist lesefreundlicher als der negative lookahead überall...
Im Moment bin ich noch gedanklich bei einem Hänger betr. Tasmota. Da hatten wir jüngst einen "SmartHome/"-Vertreter, bei dem stand "cmnd" ganz hinten.
Wenn ich das jetzt richtig zusammengereimt habe, müßte eigentlich das mit dem Doppelpunkt iVm. den Quotes ausreichen, und es war vermutlich bei den shellies auch noch ein bug drin...
Käme dann in etwa bei Folgendem raus:
attr MQTT2_Mosquitto_Client ignoreRegexp cmnd/[^:"]+:|homeassistant/[^:"]+/config:|shellies/[^:"]+/command:|zigbee2mqtt/[^/]+/set:|milight/0x[0-9a-fA-F]{1,4}/.*/[0-8]:
Den Doppelpunkt könnte man jetzt zwar "hinter die Klammer" ziehen, aber dann müßte ich die attrTemplate-Mechanismen auch grundlegender anpassen, so ist es ggf. auch einfacher nachzuvollziehen?
@kjmEjfu: Könntest du mal testen, ob das so ggf. klappt?
ZitatNa ja, es ist lesefreundlicher als der negative lookahead überall...
Wenn Du damit das !? meinst: das ist ein optionales !, habe laenger darueber geraetselt, und aufgegeben :)
Das negative Zeug schreibt man doch als ?!
Vermutlich mein Fehler, hatte extra dazugeschrieben, dass bitte die regex101.com zu konsultieren ist, weil ich da auch jedesmal am Rätseln bin, wie es denn nun ggf. geht...