[gelöst] Notify trigger aus einem zigbee2mqtt Tradfri On/Off Taster

Begonnen von joelinux, 17 Dezember 2019, 17:05:36

Vorheriges Thema - Nächstes Thema

joelinux

Hallo zusammen,

ich versuche einen Tradfri E1743 On/Off Taster dazu zu bewegen eine Tasmota RGBW Lampe zu dimmen.
Der übliche Weg das über ein 'pairing' zwischen Taster und Lampe zu lösen fällt hier dabei aus.

Beide Geräte sind als MQTT2 Geräte im FHEM verfügbar.

Die Idee ist es einen notify zu nutzen, der die Click Events des Tradfri Tasters abfängt und
je nach gedrückter Taste einen DimUp oder DimDown Befehl an die Tasmota Lampe überträgt.

Der Tradfri Taster funktioniert insofern, das ich im reading click die Tastendrücke angezeigt bekomme.
Das sind im einzelnen: on,off bei kurzer Betätigung  und
                                  brightness_up, brightness_stop,brightness_down,brightness_stop bei langer Betätigung.
Es wird wohl die Anbindung über zigbee2mqtt sein, das der Tradfri Taster nicht wie bei ConBee codes wie 2001,2002 nach
FHEM liefert.

Das MQTT2 Gerät der Tasmota Lampe habe ich so erweitert, das Setter für DimUp und DimDown zur Verfügung stehen.

Aktuell scheitere ich beim Anlegen eines passenden Notify der aus dem Tradfri Taster Reading click bei Erkennung
von brightness_up die Tasmota Lampe mit dem Befehl DimUp beauftragt. Der Notify sieht so aus:

Internals:
   CFGFN     
   DEF        MQTT2_zigbee_Tradfri_E1743_on_off_Switch_1:click.*
{
if
("$EVENT" eq "brightness_up" || "$EVENT" eq "on")
{ fhem("set MQTT2_Bulb_9Watt DimUp") }
else
{ fhem("set MQTT2_Bulb_9Watt DimDown") }
}

   FUUID      5df8dcd7-f33f-81fd-1ce2-539bf60ca38e4996
   NAME       zOnOffDimBulb
   NOTIFYDEV  MQTT2_zigbee_Tradfri_E1743_on_off_Switch_1
   NR         6897
   NTFY_ORDER 50-zOnOffDimBulb
   REGEXP     MQTT2_zigbee_Tradfri_E1743_on_off_Switch_1:click.*
   STATE      2019-12-17 16:38:14
   TRIGGERTIME 1576597094.93561
   TYPE       notify
   Helper:
     DBLOG:
       state:
         DBLogging:
           TIME       1576593386.66492
           VALUE      active
   READINGS:
     2019-12-17 15:36:26   state           active
Attributes:
   room       MQTT2_DEVICE,Wohnzimmer,ZigBee
   verbose    0
   

Ich vermute, das ich möglicherweise den Trigger schon richtig gefunden habe. Das Notify reagiert jedesmal im
ELSE Zweig da ich zu Testzwecken bewußt auf eine Bedingungsprüfung verzichtet habe. Die Tasmota Lampe dimmt runter, egal welcher Tastendruck ausgeführt wird. Jetzt fehlt mir (nur) noch die korrekte Auswertung des $EVENTS um die unterschiedlichen Tasten in verschiedene ELSIF Zweige zu leiten.

Mit der Bitte um freundliche Unterstützung.


Anbei:

Der Tradfri Taster:
Internals:
   CHANGED   
   CID        zigbee_Tradfri_E1743_on_off_Switch_1
   DEF        zigbee_Tradfri_E1743_on_off_Switch_1
   DEVICETOPIC MQTT2_zigbee_Tradfri_E1743_on_off_Switch_1
   FUUID      5df5df2e-f33f-81fd-b37e-9d88e3e063539d3c
   IODev      MQTT2_FHEM_Server
   LASTInputDev MQTT2_FHEM_Server
   MQTT2_FHEM_Server_MSGCNT 156
   MQTT2_FHEM_Server_TIME 2019-12-17 16:10:26
   MSGCNT     156
   NAME       MQTT2_zigbee_Tradfri_E1743_on_off_Switch_1
   NR         172
   STATE      Click: off
   TYPE       MQTT2_DEVICE
   Helper:
     DBLOG:
       availability:
         DBLogging:
           TIME       1576517913.2223
           VALUE      online
       battery:
         DBLogging:
           TIME       1576594246.58033
           VALUE      87
       click:
         DBLogging:
           TIME       1576594518.56103
           VALUE      off
       elapsed:
         DBLogging:
           TIME       1576594246.58033
           VALUE      2255
       last_seen:
         DBLogging:
           TIME       1576594246.58033
           VALUE      2019-12-17T15:50:46+01:00
       linkquality:
         DBLogging:
           TIME       1576594246.58033
           VALUE      13
   READINGS:
     2019-12-16 18:38:33   associatedWith  MQTT2_zigbee_Coordinator
     2019-12-16 18:38:33   availability    online
     2019-12-17 16:10:26   battery         87
     2019-12-17 15:55:18   click           off
     2019-12-17 16:10:26   elapsed         908090
     2019-12-17 16:10:26   last_seen       2019-12-17T16:10:26+01:00
     2019-12-17 16:10:26   linkquality     13
Attributes:
   DbLogExclude .*
   DbLogInclude battery,click
   IODev      MQTT2_FHEM_Server
   event-on-update-reading click
   icon       control_home
   imageLink  /fhem/deviceimages/mqtt2/E1743.jpg
   model      zigbee2mqtt_wireless_button_old
   readingList zigbee2mqtt/Tradfri_E1743_on_off_Switch_1:.* { json2nameValue($EVENT) }
zigbee2mqtt/Tradfri_E1743_on_off_Switch_1/availability:.* availability
   room       MQTT2_DEVICE,ZigBee
   stateFormat Click: click


Die Tasmota RGBW Lampe:

Internals:
   CID        DVES_310A84
   DEF        DVES_310A84
   DEVICETOPIC MQTT2_Bulb_9Watt
   FUUID      5de8d86b-f33f-81fd-c8b0-e25ac0012145314c
   IODev      MQTT2_FHEM_Server
   LASTInputDev MQTT2_FHEM_Server
   MQTT2_FHEM_Server_MSGCNT 571
   MQTT2_FHEM_Server_TIME 2019-12-17 16:18:57
   MSGCNT     571
   NAME       MQTT2_Bulb_9Watt
   NR         151
   STATE      on
   TYPE       MQTT2_DEVICE
   OLDREADINGS:
   READINGS:
     2019-12-17 16:18:57   Channel_1       1
     2019-12-17 16:18:57   Channel_2       1
     2019-12-17 16:18:57   Channel_3       0
     2019-12-17 16:18:57   Color           03010000
     2019-12-17 16:18:57   Dimmer          1
     2019-12-17 16:18:57   Fade            on
     2019-12-17 16:18:52   FallbackTopic   cmnd/DVES_310A84_fb/
     2019-12-17 16:18:52   GroupTopic      cmnd/sonoffs/
     2019-12-17 16:18:57   HSBColor        20,100,1
     2019-12-17 16:18:57   Heap            28
     2019-12-17 16:18:53   Hostname        sonoff-RGBWW-2692
     2019-12-17 16:18:53   IPAddress       192.168.1.213
     2019-12-17 16:18:52   LWT             Online
     2019-12-17 16:18:57   LedTable        off
     2019-12-17 16:18:57   LoadAvg         98
     2019-12-17 16:18:52   Module          Maxcio YXL01P
     2019-12-17 16:18:57   MqttCount       1
     2019-12-17 16:18:57   POWER1          on
     2019-12-17 16:18:53   RestartReason   Software/System restart
     2019-12-17 16:18:57   Scheme          0
     2019-12-17 16:18:57   Sleep           10
     2019-12-17 16:18:57   SleepMode       Dynamic
     2019-12-17 16:18:57   Speed           10
     2019-12-17 16:18:57   Time            2019-12-17T16:18:56
     2019-12-17 16:18:57   Uptime          0T00:00:12
     2019-12-17 16:18:57   UptimeSec       12
     2019-12-17 16:18:52   Version         7.1.2(tasmota)
     2019-12-17 16:18:53   WebServerMode   Admin
     2019-12-17 16:18:57   Wifi_AP         1
     2019-12-17 16:18:57   Wifi_BSSId      xx:xx:xx:xx:xx:xx
     2019-12-17 16:18:57   Wifi_Channel    6
     2019-12-17 16:18:57   Wifi_Downtime   0T00:00:06
     2019-12-17 16:18:57   Wifi_LinkCount  1
     2019-12-17 16:18:57   Wifi_RSSI       52
     2019-12-17 16:18:57   Wifi_SSId       Test
Attributes:
   IODev      MQTT2_FHEM_Server
   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/cmnd/sonoff-RGBWW/Backlog POWER1 1; delay '.$duration.'; POWER1 0'}<br>See the "Praxisbeispiele" in the wiki for "pulseTime1" alternative option and it's restrictions.
   group      Light_RGB
   icon       light_control
   model      tasmota_rgb_led_controller
   readingList tele/sonoff-RGBWW/LWT:.* LWT
  stat/sonoff-RGBWW/POWER:.* POWER
  stat/sonoff-RGBWW/POWER1:.* POWER1
  tele/sonoff-RGBWW/STATE:.* { json2nameValue($EVENT) }
  stat/sonoff-RGBWW/RESULT:.* { json2nameValue($EVENT) }
  tele/sonoff-RGBWW/INFO.:.* { json2nameValue($EVENT) }
   room       MQTT2_DEVICE
   setList    off:noArg cmnd/sonoff-RGBWW/POWER1 0
  on:noArg cmnd/sonoff-RGBWW/POWER1 1
  DimUp:noArg cmnd/sonoff-RGBWW/Dimmer +
  DimDown:noArg cmnd/sonoff-RGBWW/Dimmer -
  CTup:noArg cmnd/sonoff-RGBWW/CT +
  CTdown:noArg cmnd/sonoff-RGBWW/CT -
  ColorUp:noArg cmnd/sonoff-RGBWW/COLOR +
  ColorDown:noArg cmnd/sonoff-RGBWW/COLOR -
  Speed:1,5,10,15,20 cmnd/sonoff-RGBWW/Speed
  toggle:noArg cmnd/sonoff-RGBWW/POWER1 2
  Color:colorpicker,RGB cmnd/sonoff-RGBWW/COLOR
  Dimmer:colorpicker,BRI,0,5,100 cmnd/sonoff-RGBWW/DIMMER
   setStateList on off toggle
   stateFormat POWER1
   webCmd     Color:Dimmer:Color ff0000:Color 00ff00:Color 0000ff:toggle:DimUp:DimDown:ColorUp:ColorDown
FHem on RPi2 Buster, Duofern Rollladen, ZWave Rolllade + Steckdosen, ZigBee (Philips, Tradfri), Tasmota (diverse Steckdosen, GU10 und E14 LSC Leds von Action, Sonoff RF Bridge), InterTechno Dimmer Steckdose ITLR-200

Beta-User

Hallo und willkommen im Forum!

$EVENT ist länger, der umfaßt mit einiger Wahrscheinlichkeit auch das "click".

Entweder das "eq" passend erweitern oder mit regex arbeiten:
("$EVENT" =~ /brightness_up|on$/)
Im Wiki zu notify gibt's noch ein paar Hinweise zur Fehlersuche in solchen Fällen (u.a. einen Hinweis, wie man das $EVENT loggen kann (?)).

Gruß, Beta-User
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

joelinux

Hallo Beta-User,

deine Information hat mir sehr geholfen. Die Angabe einer Regular Expression zum filtern des
$EVENTS Ergebnisses des Tradfri Tasters hat geholfen.

Der funktionierende Notify sieht nun so aus:

Internals:
   CFGFN     
   DEF        MQTT2_zigbee_Tradfri_E1743_on_off_Switch_1:click.*
{
if
("$EVENT" =~ /on$/)
{ fhem("set MQTT2_Dusche on") }
elsif
("$EVENT" =~ /brightness_up$/)
{ fhem("set MQTT2_Dusche DimUp") }
elsif
("$EVENT" =~ /brightness_down$/)
{ fhem("set MQTT2_Dusche DimDown") }
elsif
("$EVENT" =~ /off$/)
{ fhem("set MQTT2_Dusche off") }
}


Mit dem Notify habe ich ein 10-stufiges Dimmen und muß mehrfach lange Tastendrücke ausführen.

Jetzt schau ich mal wie ich ein kontinuierliches DimUp oder DimDown hinbekomme.
Da könnte SEQUENCE oder DOIF repeatcmd zum Einsatz kommen.

Mit freundlichem Gruß

joelinux
FHem on RPi2 Buster, Duofern Rollladen, ZWave Rolllade + Steckdosen, ZigBee (Philips, Tradfri), Tasmota (diverse Steckdosen, GU10 und E14 LSC Leds von Action, Sonoff RF Bridge), InterTechno Dimmer Steckdose ITLR-200

Beta-User

 :)
Schön, dass das geklappt hat.

Du kannst auch eine myUtils-Routine starten, die den aktuellen Wert ausliest, daraus die Steigerung (ggf. nicht-linear... ;) ) ableitet, hochdimmt und sich dann solange selbst (z.B. via InternalTimer) aufruft, bis entweder der max-Wert erreicht ist oder eine andere Routine (=>Taste losgelassen) den InternalTimer abbricht.
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