Autor Thema: [gelöst] Notify auf Reading "action" bei Aqara Opple WXCJKG13LM auslesen  (Gelesen 276 mal)

Offline HomeAlone

  • Full Member
  • ***
  • Beiträge: 282
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
« Letzte Änderung: 08 August 2022, 09:23:24 von HomeAlone »

Offline TomLee

  • Hero Member
  • *****
  • Beiträge: 4250
  • ... wer sät, der erntet ...
Antw:Notify auf Reading "action" bei Aqara Opple WXCJKG13LM auslesen
« Antwort #1 am: 07 August 2022, 12:19:33 »
Zitat
Hat 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.

Offline HomeAlone

  • Full Member
  • ***
  • Beiträge: 282
Antw:Notify auf Reading "action" bei Aqara Opple WXCJKG13LM auslesen
« Antwort #2 am: 07 August 2022, 21:32:20 »
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_singlebeides 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

Offline MadMax-FHEM

  • Hero Member
  • *****
  • Beiträge: 12411
  • NIVEAu ist keine Creme...
Antw:Notify auf Reading "action" bei Aqara Opple WXCJKG13LM auslesen
« Antwort #3 am: 07 August 2022, 21:36:52 »
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)

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 18944
Antw:Notify auf Reading "action" bei Aqara Opple WXCJKG13LM auslesen
« Antwort #4 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
Merke: Zwischen dem auslösenden Device und dem Rest kommt immer kein Leerzeichen, zwischen dem Reading und dem Inhalt immer:
$NAME:$EVTPART0.$EVTPART1Wobei 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-T620@Debian 11, 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
Hilfreich Hilfreich x 1 Liste anzeigen

Offline HomeAlone

  • Full Member
  • ***
  • Beiträge: 282
Antw:Notify auf Reading "action" bei Aqara Opple WXCJKG13LM auslesen
« Antwort #5 am: 07 August 2022, 22:30:44 »
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 :-*

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 18944
Antw:Notify auf Reading "action" bei Aqara Opple WXCJKG13LM auslesen
« Antwort #6 am: 08 August 2022, 09:23:20 »
 :)

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-T620@Debian 11, 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

Offline HomeAlone

  • Full Member
  • ***
  • Beiträge: 282
Antw:Notify auf Reading "action" bei Aqara Opple WXCJKG13LM auslesen
« Antwort #7 am: 08 August 2022, 09:29:28 »
:)

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