From 3d4be4beda223c6dcc7d5bd739e771373f42390e Mon Sep 17 00:00:00 2001 From: Alec Lorimer Date: Thu, 25 Jun 2026 14:50:03 -0500 Subject: [PATCH 1/7] Merge pull request #3051 from SmartThingsCommunity/firstled-test-min_api_version-fix firstled_switch: Updated min_api_version to 20 for out of date tests --- .../src/test/test_firstled_switch.lua | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/drivers/SmartThings/zigbee-switch/src/test/test_firstled_switch.lua b/drivers/SmartThings/zigbee-switch/src/test/test_firstled_switch.lua index 3a3c4782ea..a9bc2ac8fe 100644 --- a/drivers/SmartThings/zigbee-switch/src/test/test_firstled_switch.lua +++ b/drivers/SmartThings/zigbee-switch/src/test/test_firstled_switch.lua @@ -195,7 +195,7 @@ test.register_coroutine_test("infoChanged - backlight 0", function() }) end, { - min_api_version = 19 + min_api_version = 20 } ) @@ -206,7 +206,7 @@ test.register_coroutine_test("infoChanged - backlight 1", function() }) end, { - min_api_version = 19 + min_api_version = 20 } ) @@ -217,7 +217,7 @@ test.register_coroutine_test("infoChanged - backlight 2", function() }) end, { - min_api_version = 19 + min_api_version = 20 } ) @@ -228,18 +228,18 @@ test.register_coroutine_test("infoChanged - powerOnStatus 0", function() }) end, { - min_api_version = 19 + min_api_version = 20 } ) -test.register_coroutine_test("infoChanged - powerOnStatus", function() +test.register_coroutine_test("infoChanged - powerOnStatus 1", function() test.socket.device_lifecycle:__queue_receive(mock_parent:generate_info_changed({ preferences = { powerOnStatus = "1" }})) test.socket.zigbee:__expect_send({ mock_parent.id, cluster_base.write_manufacturer_specific_attribute(mock_parent, PRIVATE_CLUSTER_ID, 0x0001, MFG_CODE, data_types.Uint8, 1) }) end, { - min_api_version = 19 + min_api_version = 20 } ) @@ -250,7 +250,7 @@ test.register_coroutine_test("infoChanged - powerOnStatus 2", function() }) end, { - min_api_version = 19 + min_api_version = 20 } ) @@ -262,7 +262,7 @@ test.register_coroutine_test("infoChanged - stse.changeToWirelessSwitch true", f mock_parent:expect_metadata_update({ profile = "switch-button-light-restore-wireless" }) end, { - min_api_version = 19 + min_api_version = 20 } ) @@ -274,7 +274,7 @@ test.register_coroutine_test("infoChanged - stse.changeToWirelessSwitch false", mock_parent:expect_metadata_update({ profile = "switch-light-restore-wireless" }) end, { - min_api_version = 19 + min_api_version = 20 } ) @@ -287,7 +287,7 @@ local function test_child_changeToWirelessSwitch_true(ep, name) mock_children[ep]:expect_metadata_update({ profile = "switch-button-wireless" }) end, { - min_api_version = 19 + min_api_version = 20 } ) end @@ -301,7 +301,7 @@ local function test_child_changeToWirelessSwitch_false(ep, name) mock_children[ep]:expect_metadata_update({ profile = "switch-wireless" }) end, { - min_api_version = 19 + min_api_version = 20 } ) end From 134045173a8f2486416ee01aab8cadde5fef598e Mon Sep 17 00:00:00 2001 From: Harrison Carter <137556605+hcarter-775@users.noreply.github.com> Date: Fri, 26 Jun 2026 11:31:06 -0500 Subject: [PATCH 2/7] Matter Sensor: Fix nil value logging and handling for soil sensor attribute (#3073) --- .../matter-sensor/src/sensor_handlers/attribute_handlers.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/SmartThings/matter-sensor/src/sensor_handlers/attribute_handlers.lua b/drivers/SmartThings/matter-sensor/src/sensor_handlers/attribute_handlers.lua index a81a03b4a6..eaa8730fc4 100644 --- a/drivers/SmartThings/matter-sensor/src/sensor_handlers/attribute_handlers.lua +++ b/drivers/SmartThings/matter-sensor/src/sensor_handlers/attribute_handlers.lua @@ -89,7 +89,8 @@ function AttributeHandlers.soil_moisture_measurement_limits_handler(driver, devi local min_val = ib.data.elements and ib.data.elements.min_measured_value and ib.data.elements.min_measured_value.value local max_val = ib.data.elements and ib.data.elements.max_measured_value and ib.data.elements.max_measured_value.value if not (min_val and max_val) or (min_val >= max_val) or (min_val < sensor_utils.SOIL_MOISTURE_MIN) or (max_val > sensor_utils.SOIL_MOISTURE_MAX) then - device.log.warn_with({hub_logs = true}, string.format("Device reported invalid soil moisture limits: min=%d, max=%d", min_val, max_val)) + device.log.warn_with({hub_logs = true}, string.format("Device reported invalid soil moisture limits: min=%s, max=%s", min_val, max_val)) + return end sensor_utils.set_field_for_endpoint(device, fields.SOIL_LIMIT_MIN, ib.endpoint_id, min_val) sensor_utils.set_field_for_endpoint(device, fields.SOIL_LIMIT_MAX, ib.endpoint_id, max_val) From 5695bdce538da76fc85ac8f4478b936b9241b587 Mon Sep 17 00:00:00 2001 From: Harrison Carter <137556605+hcarter-775@users.noreply.github.com> Date: Mon, 29 Jun 2026 08:53:09 -0500 Subject: [PATCH 3/7] Hue: fix conditional checking in hue command error logging (#3072) --- .../philips-hue/src/handlers/commands.lua | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/drivers/SmartThings/philips-hue/src/handlers/commands.lua b/drivers/SmartThings/philips-hue/src/handlers/commands.lua index 6bee932239..2c55f39452 100644 --- a/drivers/SmartThings/philips-hue/src/handlers/commands.lua +++ b/drivers/SmartThings/philips-hue/src/handlers/commands.lua @@ -54,13 +54,14 @@ end ---@param err string? Error message returned from the Hue API call, if any ---@param action_desc string Description of the action being performed, for logging purposes local function log_command_response_errors(response, err, action_desc) - if not response or (response.errors and #response.errors == 0) then - if err ~= nil then - log.error_with({ hub_logs = true }, "Error performing " .. action_desc .. ": " .. err) - elseif response and #response.errors > 0 then - for _, error in ipairs(response.errors) do - log.error_with({ hub_logs = true }, "Error returned in Hue response for " .. action_desc .. ": " .. error.description) - end + if err ~= nil then + log.error_with({ hub_logs = true }, "Error performing " .. action_desc .. ": " .. err) + end + + if response and response.errors and #response.errors > 0 then + for _, error in ipairs(response.errors) do + log.error_with({ hub_logs = true }, + "Error returned in Hue response for " .. action_desc .. ": " .. error.description) end end end From 85b84bf2c81300fdc8f6d4ba43ea35c503c1ad1a Mon Sep 17 00:00:00 2001 From: Alec Lorimer Date: Thu, 25 Jun 2026 09:46:27 -0500 Subject: [PATCH 4/7] Merge pull request #3049 from SmartThingsCommunity/Jenkins-driver-testing-61 Adding HCv0.61 to Jenkins driver test matrix --- .github/workflows/jenkins-driver-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/jenkins-driver-tests.yml b/.github/workflows/jenkins-driver-tests.yml index b9fc07f091..6494eadd15 100644 --- a/.github/workflows/jenkins-driver-tests.yml +++ b/.github/workflows/jenkins-driver-tests.yml @@ -9,7 +9,7 @@ jobs: strategy: matrix: version: - [ 59, 60, dev] + [ 59, 60, 61, dev] runs-on: ubuntu-latest steps: From d5293bf206f02ae8d84130072ef927fd42811a94 Mon Sep 17 00:00:00 2001 From: Chris Baumler Date: Thu, 25 Jun 2026 11:22:07 -0500 Subject: [PATCH 5/7] WWSTCERT-12419 Dual Socket Smart Plug (#3046) --- drivers/SmartThings/matter-switch/fingerprints.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/SmartThings/matter-switch/fingerprints.yml b/drivers/SmartThings/matter-switch/fingerprints.yml index e4602b4178..b17f2578cb 100644 --- a/drivers/SmartThings/matter-switch/fingerprints.yml +++ b/drivers/SmartThings/matter-switch/fingerprints.yml @@ -557,6 +557,11 @@ matterManufacturer: vendorId: 0x1339 productId: 0x0056 deviceProfileName: light-color-level + - id: "4921/85" + deviceLabel: Dual Socket Smart Plug + vendorId: 0x1339 + productId: 0x0055 + deviceProfileName: plug-binary #Govee - id: "4999/24740" deviceLabel: Govee Square Ceiling Light (12 inch) From 2aafb076e1a11ea1a728f9fbcd3ca24bc726ef06 Mon Sep 17 00:00:00 2001 From: Chris Baumler Date: Thu, 25 Jun 2026 11:44:25 -0500 Subject: [PATCH 6/7] WWSTCERT-12246 Floor Lamp (#3047) --- drivers/SmartThings/matter-switch/fingerprints.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/SmartThings/matter-switch/fingerprints.yml b/drivers/SmartThings/matter-switch/fingerprints.yml index b17f2578cb..8637b37713 100644 --- a/drivers/SmartThings/matter-switch/fingerprints.yml +++ b/drivers/SmartThings/matter-switch/fingerprints.yml @@ -4174,6 +4174,12 @@ matterManufacturer: vendorId: 0x1392 productId: 0x0106 deviceProfileName: plug-power-energy-powerConsumption +#GIANT LIGHTING + - id: "5707/1" + deviceLabel: Floor Lamp + vendorId: 0x164B + productId: 0x0001 + deviceProfileName: light-color-level matterGeneric: From 8c864bb3f80ebe5b773405b7f09fbc452dad8ecc Mon Sep 17 00:00:00 2001 From: Chris Baumler Date: Thu, 25 Jun 2026 12:02:21 -0500 Subject: [PATCH 7/7] WWSTCERT-12397 GELUBU Door Lock R60 (#3041) --- .../SmartThings/zigbee-lock/fingerprints.yml | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/drivers/SmartThings/zigbee-lock/fingerprints.yml b/drivers/SmartThings/zigbee-lock/fingerprints.yml index 083dd3a11e..309a0f2883 100644 --- a/drivers/SmartThings/zigbee-lock/fingerprints.yml +++ b/drivers/SmartThings/zigbee-lock/fingerprints.yml @@ -10,6 +10,26 @@ zigbeeManufacturer: manufacturer: GELUBU model: G30 deviceProfileName: lock-battery + - id: "GELUBU/R60" + deviceLabel: GELUBU Door Lock R60 + manufacturer: GELUBU + model: R60 + deviceProfileName: lock-battery + - id: "GELUBU/R50" + deviceLabel: GELUBU Door Lock R50 + manufacturer: GELUBU + model: R50 + deviceProfileName: lock-battery + - id: "GELUBU/P90" + deviceLabel: GELUBU Door Lock P90 + manufacturer: GELUBU + model: P90 + deviceProfileName: lock-battery + - id: "GELUBU/R71" + deviceLabel: GELUBU Door Lock R71 + manufacturer: GELUBU + model: R71 + deviceProfileName: lock-battery # YALE - id: "Yale YRD220/240" deviceLabel: "Yale Door Lock"