From 48b546d8f57e4c097a9eaeca4ed67dbf09efda15 Mon Sep 17 00:00:00 2001 From: cjswedes Date: Mon, 28 Oct 2024 23:54:55 -0500 Subject: [PATCH 1/3] Update zigbee tests for native handler support Hub FW 0.55.x adds support for colorTemperature and colorControl commands to native handlers. And the lua libs are registering for default for those commands for Zigbee/matter devices. --- .../src/test/test_all_capability_zigbee_bulb.lua | 2 ++ .../zigbee-switch/src/test/test_aqara_led_bulb.lua | 1 + .../SmartThings/zigbee-switch/src/test/test_aqara_light.lua | 1 + drivers/SmartThings/zigbee-switch/src/test/test_rgb_bulb.lua | 3 +++ .../SmartThings/zigbee-switch/src/test/test_rgbw_bulb.lua | 5 ++++- .../zigbee-switch/src/test/test_zll_rgbw_bulb.lua | 3 +++ 6 files changed, 14 insertions(+), 1 deletion(-) diff --git a/drivers/SmartThings/zigbee-switch/src/test/test_all_capability_zigbee_bulb.lua b/drivers/SmartThings/zigbee-switch/src/test/test_all_capability_zigbee_bulb.lua index 71f1efb426..81d355d889 100644 --- a/drivers/SmartThings/zigbee-switch/src/test/test_all_capability_zigbee_bulb.lua +++ b/drivers/SmartThings/zigbee-switch/src/test/test_all_capability_zigbee_bulb.lua @@ -348,6 +348,7 @@ test.register_coroutine_test( function() test.timer.__create_and_queue_test_time_advance_timer(2, "oneshot") test.socket.capability:__queue_receive({mock_device.id, { capability = "colorControl", component = "main", command = "setColor", args = { { hue = 50, saturation = 50 } } } }) + mock_device:expect_native_cmd_handler_registration("colorControl", "setColor") test.socket.zigbee:__expect_send( { mock_device.id, @@ -382,6 +383,7 @@ test.register_coroutine_test( function() test.socket.zigbee:__set_channel_ordering("relaxed") test.socket.capability:__queue_receive({mock_device.id, { capability = "colorTemperature", component = "main", command = "setColorTemperature", args = {1800}}}) + mock_device:expect_native_cmd_handler_registration("colorTemperature", "setColorTemperature") test.socket.zigbee:__expect_send({mock_device.id, ColorControl.server.commands.MoveToColorTemperature(mock_device, 556, 0x0000)}) test.socket.zigbee:__expect_send({mock_device.id, OnOff.server.commands.On(mock_device)}) test.wait_for_events() diff --git a/drivers/SmartThings/zigbee-switch/src/test/test_aqara_led_bulb.lua b/drivers/SmartThings/zigbee-switch/src/test/test_aqara_led_bulb.lua index 45bc9f3242..9c7a7cc0e5 100644 --- a/drivers/SmartThings/zigbee-switch/src/test/test_aqara_led_bulb.lua +++ b/drivers/SmartThings/zigbee-switch/src/test/test_aqara_led_bulb.lua @@ -123,6 +123,7 @@ test.register_coroutine_test( test.socket.capability:__queue_receive({ mock_device.id, { capability = "colorTemperature", component = "main", command = "setColorTemperature", args = { 200 } } }) + mock_device:expect_native_cmd_handler_registration("colorTemperature", "setColorTemperature") local temp_in_mired = math.floor(1000000 / 200) test.socket.zigbee:__expect_send( { diff --git a/drivers/SmartThings/zigbee-switch/src/test/test_aqara_light.lua b/drivers/SmartThings/zigbee-switch/src/test/test_aqara_light.lua index 6bd83a7afa..68f54c986f 100644 --- a/drivers/SmartThings/zigbee-switch/src/test/test_aqara_light.lua +++ b/drivers/SmartThings/zigbee-switch/src/test/test_aqara_light.lua @@ -128,6 +128,7 @@ test.register_coroutine_test( test.socket.capability:__queue_receive({ mock_device.id, { capability = "colorTemperature", component = "main", command = "setColorTemperature", args = { 200 } } }) + mock_device:expect_native_cmd_handler_registration("colorTemperature", "setColorTemperature") local temp_in_mired = math.floor(1000000 / 200) test.socket.zigbee:__expect_send( { diff --git a/drivers/SmartThings/zigbee-switch/src/test/test_rgb_bulb.lua b/drivers/SmartThings/zigbee-switch/src/test/test_rgb_bulb.lua index 2aa6dece8f..5f7e37f5eb 100644 --- a/drivers/SmartThings/zigbee-switch/src/test/test_rgb_bulb.lua +++ b/drivers/SmartThings/zigbee-switch/src/test/test_rgb_bulb.lua @@ -131,6 +131,7 @@ test.register_coroutine_test( test.timer.__create_and_queue_test_time_advance_timer(2, "oneshot") test.socket.capability:__queue_receive({mock_device.id, { capability = "colorControl", component = "main", command = "setHue", args = { 50 } } }) + mock_device:expect_native_cmd_handler_registration("colorControl", "setHue") test.socket.zigbee:__expect_send({ mock_device.id, OnOff.commands.On(mock_device) }) local hue = math.floor((50 * 0xFE) / 100.0 + 0.5) @@ -154,6 +155,7 @@ test.register_coroutine_test( test.timer.__create_and_queue_test_time_advance_timer(2, "oneshot") test.socket.capability:__queue_receive({mock_device.id, { capability = "colorControl", component = "main", command = "setSaturation", args = { 50 } } }) + mock_device:expect_native_cmd_handler_registration("colorControl", "setSaturation") test.socket.zigbee:__expect_send({ mock_device.id, OnOff.commands.On(mock_device) }) local saturation = math.floor((50 * 0xFE) / 100.0 + 0.5) @@ -176,6 +178,7 @@ test.register_coroutine_test( function() test.timer.__create_and_queue_test_time_advance_timer(2, "oneshot") test.socket.capability:__queue_receive({mock_device.id, { capability = "colorControl", component = "main", command = "setColor", args = { { hue = 50, saturation = 50 } } } }) + mock_device:expect_native_cmd_handler_registration("colorControl", "setColor") test.socket.zigbee:__expect_send( { mock_device.id, diff --git a/drivers/SmartThings/zigbee-switch/src/test/test_rgbw_bulb.lua b/drivers/SmartThings/zigbee-switch/src/test/test_rgbw_bulb.lua index 32e8956250..61a9fcf1ac 100644 --- a/drivers/SmartThings/zigbee-switch/src/test/test_rgbw_bulb.lua +++ b/drivers/SmartThings/zigbee-switch/src/test/test_rgbw_bulb.lua @@ -162,6 +162,7 @@ test.register_coroutine_test( test.timer.__create_and_queue_test_time_advance_timer(2, "oneshot") test.socket.capability:__queue_receive({mock_device.id, { capability = "colorControl", component = "main", command = "setHue", args = { 50 } } }) + mock_device:expect_native_cmd_handler_registration("colorControl", "setHue") test.socket.zigbee:__expect_send({ mock_device.id, OnOff.commands.On(mock_device) }) local hue = math.floor((50 * 0xFE) / 100.0 + 0.5) @@ -185,6 +186,7 @@ test.register_coroutine_test( test.timer.__create_and_queue_test_time_advance_timer(2, "oneshot") test.socket.capability:__queue_receive({mock_device.id, { capability = "colorControl", component = "main", command = "setSaturation", args = { 50 } } }) + mock_device:expect_native_cmd_handler_registration("colorControl", "setSaturation") test.socket.zigbee:__expect_send({ mock_device.id, OnOff.commands.On(mock_device) }) local saturation = math.floor((50 * 0xFE) / 100.0 + 0.5) @@ -208,6 +210,7 @@ test.register_coroutine_test( test.timer.__create_and_queue_test_time_advance_timer(2, "oneshot") test.socket.capability:__queue_receive({mock_device.id, { capability = "colorControl", component = "main", command = "setColor", args = { { hue = 50, saturation = 50 } } } }) + mock_device:expect_native_cmd_handler_registration("colorControl", "setColor") test.socket.zigbee:__expect_send({ mock_device.id, OnOff.server.commands.On(mock_device) }) local hue = math.floor((50 * 0xFE) / 100.0 + 0.5) @@ -228,7 +231,7 @@ test.register_coroutine_test( ) test.register_coroutine_test( - "Set Saturation command test", + "Set ColorTemperature command test", function() test.timer.__create_and_queue_test_time_advance_timer(1, "oneshot") test.socket.capability:__queue_receive({mock_device.id, { capability = "colorTemperature", component = "main", command = "setColorTemperature", args = { 200 } } }) diff --git a/drivers/SmartThings/zigbee-switch/src/test/test_zll_rgbw_bulb.lua b/drivers/SmartThings/zigbee-switch/src/test/test_zll_rgbw_bulb.lua index f2d8c5f2f4..a7aaaf5e82 100644 --- a/drivers/SmartThings/zigbee-switch/src/test/test_zll_rgbw_bulb.lua +++ b/drivers/SmartThings/zigbee-switch/src/test/test_zll_rgbw_bulb.lua @@ -197,6 +197,7 @@ test.register_coroutine_test( test.timer.__create_and_queue_test_time_advance_timer(2, "oneshot") test.socket.capability:__queue_receive({mock_device.id, { capability = "colorControl", component = "main", command = "setHue", args = { 50 } } }) + mock_device:expect_native_cmd_handler_registration("colorControl", "setHue") test.socket.zigbee:__expect_send({ mock_device.id, OnOff.commands.On(mock_device) }) local hue = math.floor((50 * 0xFE) / 100.0 + 0.5) @@ -221,6 +222,7 @@ test.register_coroutine_test( test.timer.__create_and_queue_test_time_advance_timer(2, "oneshot") test.socket.capability:__queue_receive({mock_device.id, { capability = "colorControl", component = "main", command = "setSaturation", args = { 50 } } }) + mock_device:expect_native_cmd_handler_registration("colorControl", "setSaturation") test.socket.zigbee:__expect_send({ mock_device.id, OnOff.commands.On(mock_device) }) local saturation = math.floor((50 * 0xFE) / 100.0 + 0.5) @@ -245,6 +247,7 @@ test.register_coroutine_test( test.timer.__create_and_queue_test_time_advance_timer(2, "oneshot") test.socket.capability:__queue_receive({mock_device.id, { capability = "colorControl", component = "main", command = "setColor", args = { { hue = 50, saturation = 50 } } } }) + mock_device:expect_native_cmd_handler_registration("colorControl", "setColor") test.socket.zigbee:__expect_send({ mock_device.id, OnOff.server.commands.On(mock_device) }) local hue = math.floor((50 * 0xFE) / 100.0 + 0.5) From 76c796dc64f95f175c9ba1b8737c639234775663 Mon Sep 17 00:00:00 2001 From: cjswedes Date: Wed, 11 Dec 2024 09:47:09 -0600 Subject: [PATCH 2/3] Update tests that were only passing because of a bug in the test framework There was a bug in the integration test framework that wasn't properly validating native handler registration api calls at the end of a test. --- .../test_matter_multi_button_switch_mcd.lua | 8 ----- .../test/test_fibaro_walli_double_switch.lua | 4 --- .../src/test/test_zooz_double_plug.lua | 32 ------------------- 3 files changed, 44 deletions(-) diff --git a/drivers/SmartThings/matter-switch/src/test/test_matter_multi_button_switch_mcd.lua b/drivers/SmartThings/matter-switch/src/test/test_matter_multi_button_switch_mcd.lua index a5f2420557..bf6eefee2b 100644 --- a/drivers/SmartThings/matter-switch/src/test/test_matter_multi_button_switch_mcd.lua +++ b/drivers/SmartThings/matter-switch/src/test/test_matter_multi_button_switch_mcd.lua @@ -256,14 +256,6 @@ test.register_message_test( { capability = "switch", component = "main", command = "on", args = { } } } }, - { - channel = "devices", - direction = "send", - message = { - "register_native_capability_cmd_handler", - { device_uuid = mock_device.id, capability_id = "switch", capability_cmd_id = "on" } - } - }, { channel = "matter", direction = "send", diff --git a/drivers/SmartThings/zwave-switch/src/test/test_fibaro_walli_double_switch.lua b/drivers/SmartThings/zwave-switch/src/test/test_fibaro_walli_double_switch.lua index 40d45eb200..11746559a5 100644 --- a/drivers/SmartThings/zwave-switch/src/test/test_fibaro_walli_double_switch.lua +++ b/drivers/SmartThings/zwave-switch/src/test/test_fibaro_walli_double_switch.lua @@ -437,7 +437,6 @@ test.register_coroutine_test( mock_parent.id, { capability = "switch", component = "main", command = "on", args = {} } }) - mock_parent:expect_native_cmd_handler_registration("switch", "on") test.socket.zwave:__expect_send( zw_test_utils.zwave_test_build_send_command( @@ -505,7 +504,6 @@ test.register_coroutine_test( mock_parent.id, { capability = "switch", component = "main", command = "off", args = {} } }) - mock_parent:expect_native_cmd_handler_registration("switch", "off") test.socket.zwave:__expect_send( zw_test_utils.zwave_test_build_send_command( @@ -572,7 +570,6 @@ test.register_coroutine_test( mock_child.id, { capability = "switch", component = "main", command = "on", args = {} } }) - mock_child:expect_native_cmd_handler_registration("switch", "on") test.socket.zwave:__expect_send( zw_test_utils.zwave_test_build_send_command( @@ -637,7 +634,6 @@ test.register_coroutine_test( mock_child.id, { capability = "switch", component = "main", command = "off", args = {} } }) - mock_child:expect_native_cmd_handler_registration("switch", "off") test.socket.zwave:__expect_send( zw_test_utils.zwave_test_build_send_command( diff --git a/drivers/SmartThings/zwave-switch/src/test/test_zooz_double_plug.lua b/drivers/SmartThings/zwave-switch/src/test/test_zooz_double_plug.lua index bc5c4e94a1..9f7f7d5b86 100644 --- a/drivers/SmartThings/zwave-switch/src/test/test_zooz_double_plug.lua +++ b/drivers/SmartThings/zwave-switch/src/test/test_zooz_double_plug.lua @@ -191,14 +191,6 @@ test.register_message_test( { capability = "switch", command = "on", component = "switch1", args = {} } } }, - { - channel = "devices", - direction = "send", - message = { - "register_native_capability_cmd_handler", - { device_uuid = mock_parent.id, capability_id = "switch", capability_cmd_id = "on" } - } - }, { channel = "zwave", direction = "send", @@ -223,14 +215,6 @@ test.register_message_test( { capability = "switch", command = "off", component = "main", args = {} } } }, - { - channel = "devices", - direction = "send", - message = { - "register_native_capability_cmd_handler", - { device_uuid = mock_parent.id, capability_id = "switch", capability_cmd_id = "off" } - } - }, { channel = "zwave", direction = "send", @@ -256,14 +240,6 @@ test.register_message_test( { capability = "switch", command = "on", component = "switch1", args = {} } } }, - { - channel = "devices", - direction = "send", - message = { - "register_native_capability_cmd_handler", - { device_uuid = mock_child.id, capability_id = "switch", capability_cmd_id = "on" } - } - }, { channel = "zwave", direction = "send", @@ -288,14 +264,6 @@ test.register_message_test( { capability = "switch", command = "off", component = "main", args = {} } } }, - { - channel = "devices", - direction = "send", - message = { - "register_native_capability_cmd_handler", - { device_uuid = mock_child.id, capability_id = "switch", capability_cmd_id = "off" } - } - }, { channel = "zwave", direction = "send", From 20e48727c6f00eaed2352d3da4422643b73af0c6 Mon Sep 17 00:00:00 2001 From: cjswedes Date: Wed, 11 Dec 2024 10:07:40 -0600 Subject: [PATCH 3/3] Fix matter profile switch test Its not clear if this fix is the correct fix or not. --- .../matter-switch/src/test/test_matter_switch_device_types.lua | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/SmartThings/matter-switch/src/test/test_matter_switch_device_types.lua b/drivers/SmartThings/matter-switch/src/test/test_matter_switch_device_types.lua index 4329cbce65..d896607284 100644 --- a/drivers/SmartThings/matter-switch/src/test/test_matter_switch_device_types.lua +++ b/drivers/SmartThings/matter-switch/src/test/test_matter_switch_device_types.lua @@ -345,7 +345,9 @@ end local function test_init_water_valve() test.mock_device.add_test_device(mock_device_water_valve) + test.socket.device_lifecycle:__queue_receive({ mock_device_water_valve.id, "doConfigure" }) mock_device_water_valve:expect_metadata_update({ profile = "water-valve-level" }) + mock_device_water_valve:expect_metadata_update({ provisioning_state = "PROVISIONED" }) end local function test_init_parent_child_different_types() @@ -394,6 +396,7 @@ local function test_init_parent_child_unsupported_device_type() }) end + test.register_coroutine_test( "Test profile change on init for onoff parent cluster as server", function()