Hallo zusammen,
eventuell nicht speziell an obiges Device gebunden, aber ich habe Probleme, das Reading korrekt in einem notify anzuwenden.
Es geht um einen Aqara Opple 6fach Taster WXCJKG13LM.
Dieser ist über zigbee2mqtt und das template zigbee2mqtt_scene_controller angebunden.
Wenn ich nun einen der Taster drücke, ändert sich das Reading action auch fein, z.B. in "button_3_single" wenn der Taster 3 kurz gedrückt wird.
Wenn ich dies in einem notify anwenden möchte, scheitere ich jedoch am Auslesen.
Was ich hinbekomme, ist "irgendwas" auf dem action - also sämtliche Tastendrücke auszulösen:
define wz_Notify_MSDTV_CH01_TOGGLE notify MQTT2_zigbee_wz_Schalter_Power:action.* set MQTT2_tasmota_4252B1 toggle
funktionert, aber auch
define wz_Notify_MSDTV_CH01_TOGGLE notify MQTT2_zigbee_wz_Schalter_Power:action:.* set MQTT2_tasmota_4252B1 toggle
Ich würde jetzt gerne nicht sämtliche actions auslesen, sondern nur das eines bestimmten Tasters.
Folgendes habe ich probiert, aber ohne Erfolg (für die Übersichtlichkeit nur der Teil des Devices ohne den Rest des notify:
MQTT2_zigbee_wz_Schalter_Power:action.button_1_single
MQTT2_zigbee_wz_Schalter_Power:action.button_1_single*
MQTT2_zigbee_wz_Schalter_Power:action.button_1_single.*
MQTT2_zigbee_wz_Schalter_Power:action.button_1*
MQTT2_zigbee_wz_Schalter_Power:action.button_1.*
MQTT2_zigbee_wz_Schalter_Power:action:button_1.*
Ich verstehe leider nicht, wie das Reading geparsed werden muss, um auf einen ganz bestimmten action zu reagieren.
Im Wiki zu Notify -> https://wiki.fhem.de/wiki/Notify handelt es sich ja um das <Suchmuster>.
Dann müsste, da das
MQTT2_zigbee_wz_Schalter_Power:action:.*
triggert, eigentlich auch
MQTT2_zigbee_wz_Schalter_Power:action:b.*
triggern (immer noch auf alle buttons, tut es aber nicht.
Hat jemand einen Tipp?
Beste Grüße
Sascha
ZitatHat jemand einen Tipp?
Dem Link unter https://wiki.fhem.de/wiki/Notify#Event_Monitor (https://wiki.fhem.de/wiki/Notify#Event_Monitor) folgen und das Suchmuster einfach erstellen lassen, wie unter Vorgehensweise beim Anlegen eines Gerätes (https://wiki.fhem.de/wiki/Event_monitor#Vorgehensweise_beim_Anlegen_eines_Ger.C3.A4tes) beschrieben.
Zitat von: TomLee am 07 August 2022, 12:19:33
Dem Link unter https://wiki.fhem.de/wiki/Notify#Event_Monitor (https://wiki.fhem.de/wiki/Notify#Event_Monitor) folgen und das Suchmuster einfach erstellen lassen, wie unter Vorgehensweise beim Anlegen eines Gerätes (https://wiki.fhem.de/wiki/Event_monitor#Vorgehensweise_beim_Anlegen_eines_Ger.C3.A4tes) beschrieben.
Hallo TomLee, erst einmal vielen Dank für Deine Antwort. Tatsächlich war mir diese Funktion nicht bekannt. Ich verwendete bis dato immer den regexp wizard.
Es hat eine Weile gebraucht, bis ich durchgestiegen bin, habe es jetzt aber über die Abfrage des Eventlogs hinbekommen. Das Listing sieht dann wie folgt aus:
list des notify mit Event-Auslesen:
Internals:
CFGFN
DEF MQTT2_zigbee2mqtt:log_message:.MQTT.publish:.topic.'zigbee2mqtt/wz_Schalter_Power',.payload.'{"action":"button_1_single".*}' set MQTT2_tasmota_4252B1 toggle
FUUID 62f0100a-f33f-2afc-098a-f71674f625ad1f40
NAME MQTT2_zigbee2mqtt_notify_1
NOTIFYDEV MQTT2_zigbee2mqtt
NR 455
NTFY_ORDER 50-MQTT2_zigbee2mqtt_notify_1
REGEXP MQTT2_zigbee2mqtt:log_message:.MQTT.publish:.topic.'zigbee2mqtt/wz_Schalter_Power',.payload.'{"action":"button_1_single".*}'
STATE active
TRIGGERTIME 1659900089.2449
TYPE notify
eventCount 5
READINGS:
2022-08-07 21:21:38 state active
2022-08-07 21:21:29 triggeredByDev MQTT2_zigbee2mqtt
2022-08-07 21:21:29 triggeredByEvent log_message: MQTT publish: topic 'zigbee2mqtt/wz_Schalter_Power', payload '{"action":"button_2_single","battery":85,"device":{"applicationVersion":17,"dateCode":"20190730","friendlyName":"wz_Schalter_Power","hardwareVersion":1,"ieeeAddr":"0x04cf8cdf3c75b1f0","manufacturerID":4447,"manufacturerName":"LUMI","model":"WXCJKG13LM","networkAddress":47362,"powerSource":"Battery","softwareBuildID":"2019\www.","stackVersion":2,"type":"EndDevice","zclVersion":3},"last_seen":1659900089226,"linkquality":83,"power_outage_count":2800,"state":"OFF","temperature":25,"voltage":2925}'
Attributes:
alias MQTT2_zigbee2mqtt_notify_1
room Wohnzimmer
Allerdings fände ich die Definition eines notify welches das Reading des Schalters abfragt und nicht die mqtt-Abfrage, eleganter.
Hier zum Vergleich das list des notify mit dem Regexp Wizard:
Internals:
CFGFN
DEF MQTT2_zigbee_wz_Schalter_Power:action:.* set MQTT2_tasmota_4252B1 toggle
FUUID 62f00823-f33f-2afc-c3a1-918c032fbbf979e8
NAME wz_Notify_MSD_CH01_TOGGLE
NOTIFYDEV MQTT2_zigbee_wz_Schalter_Power
NR 395
NTFY_ORDER 50-ntest
REGEXP MQTT2_zigbee_wz_Schalter_Power:action:.*
STATE 2022-08-07 21:06:51
TRIGGERTIME 1659899211.81961
TYPE notify
eventCount 6
READINGS:
2022-08-07 21:06:35 state active
2022-08-07 21:06:51 triggeredByDev MQTT2_zigbee_wz_Schalter_Power
2022-08-07 21:06:51 triggeredByEvent action: button_1_single
Attributes:
alias wz_Notify_MSD_CH01_TOGGLE
room Wohnzimmer
Hast Du (oder sonst wer) noch einen Tipp, wie ich es hinbekomme eben nicht generalistisch auf irgendeinen Tastendruck zu reagieren
MQTT2_zigbee_wz_Schalter_Power:action:.*
sondern auf einen bestimmten Taster (also z.B. Taster 1) zu reagieren?
Die "naiv-offensichtliche" Syntax wäre für mich
MQTT2_zigbee_wz_Schalter_Power:action:button_1_single
oder
MQTT2_zigbee_wz_Schalter_Power:action.button_1_single
beides triggert aber leider nichts.
Jetzt kann es natürlich sein, dass das nicht geht - diese Info würde mir helfen. Noch mehr aber, wie der Teil der DEF lauten muß um auf einen bestimmten Taster zu reagieren.
Liebe Grüße
Sascha
Poste doch mal ein list des MQTT2_zigbee_wz_Schalter_Power und Auszüge aus dem Eventmonitor (mit Filter auf MQTT2_zigbee_wz_Schalter_Power) wenn du den Taster betätigst.
Gruß, Joachim
Mach doch mal einen Punkt zwischen dem Reading und dem Inhalt....
MQTT2_zigbee_wz_Schalter_Power:action:.button_1_single set MQTT2_tasmota_4252B1 toggle
Merke: Zwischen dem auslösenden Device und dem Rest kommt immer kein Leerzeichen, zwischen dem Reading und dem Inhalt immer:
$NAME:$EVTPART0.$EVTPART1
Wobei zu $EVTPART0 am Ende immer der Doppelpunkt gehört, den man also z.B. per "chop" einkürzen muss, wenn man den Readingnamen haben will.
Zitat von: Beta-User am 07 August 2022, 21:50:49
Mach doch mal einen Punkt zwischen dem Reading und dem Inhalt....
MQTT2_zigbee_wz_Schalter_Power:action:.button_1_single set MQTT2_tasmota_4252B1 toggle
Ich würde sagen, Du hast es auf den Punkt gebracht. Punktlandung, da pünktlich zum ins Bett gehen gelöst! Punktioniert einwandfrei!
Dankeschön! :D :-*
:)
1. Anmerkung: [gelöst]?
2. Anmerkung: mein "Opple-notify" ist jeweils (ich habe ein paar von denen, allerdings als HUEDevice) als "dispatcher" angelegt. Bedeutet: Alle "action"-Events von einem Opple werden von einem einzigen notify verarbeitet, das dann jeweils die konkrete Aktion via Perl-Auswertung ableitet.
Das sieht dann (Pseudo-Code) in etwa so aus:
MQTT2_zigbee_wz_Schalter_Power:action:.* {
if ( $EVTPART1 eq 'button_1_single' ) { fhem("set MQTT2_tasmota_4252B1 toggle") }
elsif ( $EVTPART1 eq 'button_2_single' ) { fhem("<mach was anderes>") }
Vorteile:
- (mAn.) ist es übersichtlicher
- bei der Event-Verarbeitung müssen weniger notify-Instanzen gecheckt werden, das ist also auch programmablauftechnisch etwas effektiver.
Zitat von: Beta-User am 08 August 2022, 09:23:20
:)
1. Anmerkung: [gelöst]?
Done. Da warst Du eine Minute schneller :)
Zitat von: Beta-User
2. Anmerkung: mein "Opple-notify" ist jeweils (ich habe ein paar von denen, allerdings als HUEDevice) als "dispatcher" angelegt. Bedeutet: Alle "action"-Events von einem Opple werden von einem einzigen notify verarbeitet, das dann jeweils die konkrete Aktion via Perl-Auswertung ableitet.
Danke für den Tipp!
Werde ich mir einmal anschauen, sobald ich hier erst einmal alles am Laufen habe - der Rest der Familie fragt sich schon, warum man die Steckdosen immer noch nicht per Taster schalten kann. ;D