From f8ba79b6b0884174bb4b412e66faa286a4658ab0 Mon Sep 17 00:00:00 2001 From: Steven Green Date: Fri, 21 Nov 2025 12:39:30 -0800 Subject: [PATCH] Investigation: fibaro keyfob not producing down_hold and pushed_3x events --- .../src/test/test_zwave_multi_button.lua | 24 ++++++++++++++++++- .../src/zwave-multi-button/init.lua | 6 +++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/drivers/SmartThings/zwave-button/src/test/test_zwave_multi_button.lua b/drivers/SmartThings/zwave-button/src/test/test_zwave_multi_button.lua index 27c9b851f9..8f4275355c 100644 --- a/drivers/SmartThings/zwave-button/src/test/test_zwave_multi_button.lua +++ b/drivers/SmartThings/zwave-button/src/test/test_zwave_multi_button.lua @@ -17,7 +17,7 @@ local capabilities = require "st.capabilities" local zw = require "st.zwave" local zw_test_utils = require "integration_test.zwave_test_utils" local Battery = (require "st.zwave.CommandClass.Battery")({ version=1 }) -local CentralScene = (require "st.zwave.CommandClass.CentralScene")({ version=1 }) +local CentralScene = (require "st.zwave.CommandClass.CentralScene")({ version=3 }) local SceneActivation = (require "st.zwave.CommandClass.SceneActivation")({ version = 1 }) local Configuration = (require "st.zwave.CommandClass.Configuration")({ version = 4 }) local Association = (require "st.zwave.CommandClass.Association")({ version = 1 }) @@ -719,6 +719,28 @@ test.register_coroutine_test( Battery:Get({}) ) ) + + test.wait_for_events() + test.socket.zwave:__queue_receive({ + mock_fibaro_keyfob_button.id, + CentralScene:Notification( + { + key_attributes = CentralScene.key_attributes.KEY_PRESSED_3_TIMES, scene_number=1, sequence_number=8, slow_refresh=true + } + ) + }) + test.socket.capability:__expect_send( + mock_fibaro_keyfob_button:generate_test_message( + "main", + capabilities.button.button.pushed_3x({ state_change = true }) + ) + ) + test.socket.capability:__expect_send( + mock_fibaro_keyfob_button:generate_test_message( + "button1", + capabilities.button.button.pushed_3x({ state_change = true }) + ) + ) end ) diff --git a/drivers/SmartThings/zwave-button/src/zwave-multi-button/init.lua b/drivers/SmartThings/zwave-button/src/zwave-multi-button/init.lua index 9094dc4111..9686214ff2 100644 --- a/drivers/SmartThings/zwave-button/src/zwave-multi-button/init.lua +++ b/drivers/SmartThings/zwave-button/src/zwave-multi-button/init.lua @@ -19,6 +19,8 @@ local cc = require "st.zwave.CommandClass" local CentralScene = (require "st.zwave.CommandClass.CentralScene")({ version=1 }) --- @type st.zwave.CommandClass.SceneActivation local SceneActivation = (require "st.zwave.CommandClass.SceneActivation")({ version=1 }) +local log = require "log" +local utils = require "st.utils" local ZWAVE_MULTI_BUTTON_FINGERPRINTS = { {mfr = 0x010F, prod = 0x1001, model = 0x1000}, -- Fibaro KeyFob EU @@ -67,7 +69,11 @@ local function central_scene_notification_handler(self, device, cmd) capabilities.button.supportedButtonValues.NAME, {capabilities.button.button.pushed.NAME, capabilities.button.button.held.NAME} -- default value ) + log.debug("COMPONENT: "..device:endpoint_to_component(cmd.args.scene_number)) + log.debug("SUPPORTED EVENTS: " .. utils.stringify_table(supportedEvents)) for _, event_name in pairs(supportedEvents) do + log.debug("EVENT_NAME: " .. event_name) + log.debug("EVENT VALUE: " .. event.value.value) if event.value.value == event_name then device:emit_event_for_endpoint(cmd.args.scene_number, event) device:emit_event(event)