Handler für Werte, die auf einem einzigen Reading liegen

Begonnen von Blauhorn, 02 Oktober 2019, 10:40:29

Vorheriges Thema - Nächstes Thema

Blauhorn

Hallo zusammen,

ich habe eine Frage und hoffe, dass mir jemand auf die Sprünge helfen kann:
Es geht um folgenden Anwendungsfall:
1. Es gibt ein Device "rgbww62" vom TYPE EspLedController, das einen RGBWW-LED-Streifen ansteuert, und zwar mit RGB-Werten, HSV-Werten, Dim-Werten, On, off, toggle usw.
2. Es gibt "rc_ikea", MQTT2-Device, als Ikea-Tradfri-Fernbedienung E1524, die aus ihren 5 Tasten im reading "action" die Werte:
  toggle
  arrow_left_click
  arrow_left_hold
  arrow_left_release
  arrow_right_click
  arrow_right_hold
  arrow_right_release
  brightness_up_click
  brightness_up_hold
  brightness_up_release
  brightness_down_click
  brightness_down_hold
  brightness_down_release
schickt.

Jetzt will ich beide Geräte mit einem Handler in FHEM verbinden,

->rc_ikea:"^toggle$"                           - set rgbww62 toggle
->rc_ikea:"^arrow_left_click$"             - set rgbww62 hue +15 5
                          /right_click$"            - set rgbww62 hue -15 5
->rc_ikea:"^arrow_left_hold$"             - set rgbww62 hue +120 5 r
->rc_ikea:".*release$"         - set rgbww62 stop
....
....
....usw.

Aber die Variante für jeden value ein eigenes notify zu erstellen erscheint mir etwas umständlich. Kann man sowas mit DOIF realisieren, und wie müsste das aussehen? Oder gibt es gar eine andere Variante die beiden Geräte zu verkoppeln?

Gruß vom Blauhorn
1xBananaPi; 1x FB7490; 1xCUL433; 1x CC2530+CC2591; OpenMiLight-Gateway; 1xHMUART; HM-LC-Sw4-DR; Sonoff* mit TASMOTA, LEDController; MySensors; zigbee2mqtt;

Beta-User

Moin,

für eine ganz andere Fernbedienung (MiLight) habe ich das mal hier dargestellt: https://forum.fhem.de/index.php/topic,103493.0.html.
Die hat mehrere Kanäle und funktioniert jeweils mit _einem_ simplen notify für jeden Kanal, das dann via myUtils-Code sehr unterschiedliche Dinge auslösen kann; dabei kann man in der Regel das Zieldevice (dein rgbww62) mit angeben. Ein notify sollte also für deinen Anwendungsfall genügen, wenn du das entsprechend anpaßt ;) .

Bin mal auf das Ergebnis gespannt, können wir dann gerne ins Wiki packen :)

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

Blauhorn

#2
Also so in etwa?:


define tradfri2rgbww62_notify notify rc_ikea:.* {dotradfri("$EVENT", "rgbww62")}

mit dem zugehörigen Code im Anhang.
So könnten dann ja mehrere tradfris eingebunden werden, die jeder einen rgb-Controller steuern.

Das ist hier nur Theorie, ich komme frühestens am Sonntag abend zum testen.
1xBananaPi; 1x FB7490; 1xCUL433; 1x CC2530+CC2591; OpenMiLight-Gateway; 1xHMUART; HM-LC-Sw4-DR; Sonoff* mit TASMOTA, LEDController; MySensors; zigbee2mqtt;

Beta-User

Fast :) .

Die "initialize"-Funktion muß etwas anders heißen, und der letzte if-Fall ist keine ordentliche Regex ;) .

Aber sonst: Ja, so kann man das für viele Remotes und viele Zieldevices nutzen (das war das Ziel der Übung ;) ). Wenn du mehrere Zieldevices haben solltest, könntest du auch die Angabe mehrere Zieldevices erlauben (optional) oder eben die Funktion mehrfach aufrufen.

Und wenn "hold" schnell hintereinander kommt, müßtest du evtl. dem notify eine "Pause gönnen" (siehe Attributeliste zu notify).
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

Blauhorn

So, bin gestern zum Test gekommen. Die Funktion sieht nun wie im Anhang aus.

Zitat von: Beta-User am 02 Oktober 2019, 14:41:49

Und wenn "hold" schnell hintereinander kommt, müßtest du evtl. dem notify eine "Pause gönnen" (siehe Attributeliste zu notify).
Und hier verstehe ich was nicht. Wird denn das "hold" mehrmals abgefeuert? Ich dachte das kommt nur genau einmal, wenn die entsprechende Taste länge als 0,5s gedrückt wird?
Und welches Attribut genau muss ich da dem notify zuweisen?
Die Clicks laufen jedenfalls schonmal in die richtigen Richtungen.
1xBananaPi; 1x FB7490; 1xCUL433; 1x CC2530+CC2591; OpenMiLight-Gateway; 1xHMUART; HM-LC-Sw4-DR; Sonoff* mit TASMOTA, LEDController; MySensors; zigbee2mqtt;

Beta-User

Zitat von: Blauhorn am 08 Oktober 2019, 09:12:11
Und hier verstehe ich was nicht. Wird denn das "hold" mehrmals abgefeuert? Ich dachte das kommt nur genau einmal, wenn die entsprechende Taste länge als 0,5s gedrückt wird?
Das ist eine Frage, die zu klären wäre, aber was da genau kommt, siehst du doch besser als alle Helfer... ;) (=>Event-Monitor bemühen).
Meine Erfahrung mit anderen Fernbedienungen, die longpush-Events generieren ist die, dass die Events häufiger kommen (weil die Taste in der Regel zum Dimmen verwendet wird, und daher zweckmäßigerweise auch was gesendet wird...).

Und wenn dann viele Events kommen, schaust du erst mal selbst in die commandref zu notify, Details können wird dann hier klären, wenn die nicht selbsterklärend ist. Soooo viele Attribute stehen da ja nicht, wenn ich mich recht entsinne :P .
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