[gelöst] Notify auf Reading "action" bei Aqara Opple WXCJKG13LM auslesen

Begonnen von HomeAlone, 07 August 2022, 11:38:43

Vorheriges Thema - Nächstes Thema

HomeAlone

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

TomLee

ZitatHat jemand einen Tipp?

Dem Link unter https://wiki.fhem.de/wiki/Notify#Event_Monitor folgen und das Suchmuster einfach erstellen lassen, wie unter Vorgehensweise beim Anlegen eines Gerätes beschrieben.

HomeAlone

Zitat von: TomLee am 07 August 2022, 12:19:33
Dem Link unter https://wiki.fhem.de/wiki/Notify#Event_Monitor folgen und das Suchmuster einfach erstellen lassen, wie unter Vorgehensweise beim Anlegen eines Gerätes 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

MadMax-FHEM

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
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Beta-User

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.
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

HomeAlone

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 :-*

Beta-User

 :)

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.
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

HomeAlone

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