From c15905ff323284e3ca28f98fd026bfd1a6aaa962 Mon Sep 17 00:00:00 2001 From: Manuel Pietschmann Date: Fri, 29 Dec 2023 18:42:25 +0100 Subject: [PATCH] Fix button handlers for dresden elektronik Scene Switch (#7503) Regression from v2.25.0-beta. --- devices/dresden_elektronik/scene_switch.json | 42 +++++++++++++++++++ .../dresden_elektronik/scene_switch_bri.js | 10 +++++ devices/dresden_elektronik/scene_switch_on.js | 6 +++ .../dresden_elektronik/scene_switch_scenes.js | 7 ++++ 4 files changed, 65 insertions(+) create mode 100644 devices/dresden_elektronik/scene_switch_bri.js create mode 100644 devices/dresden_elektronik/scene_switch_on.js create mode 100644 devices/dresden_elektronik/scene_switch_scenes.js diff --git a/devices/dresden_elektronik/scene_switch.json b/devices/dresden_elektronik/scene_switch.json index 3017d5232a..003f9e1eb1 100644 --- a/devices/dresden_elektronik/scene_switch.json +++ b/devices/dresden_elektronik/scene_switch.json @@ -135,6 +135,48 @@ }, { "name": "state/lastupdated" + }, + { + "name": "state/on", + "public": false, + "parse": { + "fn": "zcl:cmd", + "ep": 1, + "cl": "0x0006", + "cmd": "any", + "script": "scene_switch_on.js" + }, + "read": { + "fn": "none" + } + }, + { + "name": "state/bri", + "public": false, + "parse": { + "fn": "zcl:cmd", + "ep": 1, + "cl": "0x0008", + "cmd": "any", + "script": "scene_switch_bri.js" + }, + "read": { + "fn": "none" + } + }, + { + "name": "state/sat", + "public": false, + "parse": { + "fn": "zcl:cmd", + "ep": 1, + "cl": "0x0005", + "cmd": "any", + "script": "scene_switch_scenes.js" + }, + "read": { + "fn": "none" + } } ] } diff --git a/devices/dresden_elektronik/scene_switch_bri.js b/devices/dresden_elektronik/scene_switch_bri.js new file mode 100644 index 0000000000..943036ec9c --- /dev/null +++ b/devices/dresden_elektronik/scene_switch_bri.js @@ -0,0 +1,10 @@ +var i = R.item("state/buttonevent"); +if (ZclFrame.cmd == 1) { + if (ZclFrame.at(0) == 0) + i.val = 1001; + else + i.val = 2001; +} else if (ZclFrame.cmd == 3) { + var v = i.val >> 2; + i.val = ((v << 2) / 1000) * 1000 + 3; +} diff --git a/devices/dresden_elektronik/scene_switch_on.js b/devices/dresden_elektronik/scene_switch_on.js new file mode 100644 index 0000000000..c6f8f3a8fa --- /dev/null +++ b/devices/dresden_elektronik/scene_switch_on.js @@ -0,0 +1,6 @@ +var i = R.item("state/buttonevent"); +if (ZclFrame.cmd == 1) { + i.val = 1002; +} else if (ZclFrame.cmd == 0) { + i.val = 2002; +} diff --git a/devices/dresden_elektronik/scene_switch_scenes.js b/devices/dresden_elektronik/scene_switch_scenes.js new file mode 100644 index 0000000000..993674d846 --- /dev/null +++ b/devices/dresden_elektronik/scene_switch_scenes.js @@ -0,0 +1,7 @@ +var i = R.item("state/buttonevent"); +var scene = ZclFrame.at(2); +if (ZclFrame.cmd == 5) { + i.val = ((scene + 2) * 1000) + 2; +} else if (ZclFrame.cmd == 4) { + i.val = ((scene + 2) * 1000) + 3; +}