From c8278e832869a75a4f5f5e4f4e84b024ab03e0f9 Mon Sep 17 00:00:00 2001 From: jack Date: Mon, 26 Jan 2026 17:55:35 +0800 Subject: [PATCH 1/6] ledvance zigbee meter plug driver pull --- .../zigbee-switch/fingerprints.yml | 16 ++--- .../simple-metering-config/fingerprints.lua | 10 +++ .../src/simple-metering-config/init.lua | 68 +++++++++++++++++++ 3 files changed, 83 insertions(+), 11 deletions(-) create mode 100644 drivers/SmartThings/zigbee-switch/src/simple-metering-config/fingerprints.lua create mode 100644 drivers/SmartThings/zigbee-switch/src/simple-metering-config/init.lua diff --git a/drivers/SmartThings/zigbee-switch/fingerprints.yml b/drivers/SmartThings/zigbee-switch/fingerprints.yml index 3d598372fa..abe73221d6 100644 --- a/drivers/SmartThings/zigbee-switch/fingerprints.yml +++ b/drivers/SmartThings/zigbee-switch/fingerprints.yml @@ -1715,6 +1715,11 @@ zigbeeManufacturer: manufacturer: LEDVANCE model: RT TW deviceProfileName: color-temp-bulb + - id: "LEDVANCE/PLUG COMPACT EU EM T" + deviceLabel: SMART+ ZIGBEE COMPACT OUTDOOR PLUG EU + manufacturer: LEDVANCE + model: PLUG COMPACT EU EM T + deviceProfileName: switch-power-energy - id: "OSRAM/LIGHTIFY Edge-lit flushmount" deviceLabel: SYLVANIA Light manufacturer: OSRAM @@ -2400,22 +2405,11 @@ zigbeeManufacturer: manufacturer: NodOn model: SIN-4-1-21 deviceProfileName: switch-power-energy - #Yanmi - id: "JNL/Y-K003-001" deviceLabel: Yanmi Switch (3 Way) 1 manufacturer: JNL model: Y-K003-001 deviceProfileName: basic-switch - - id: "JNL/Y-K001-001" - deviceLabel: Yanmi Switch (1 Way) - manufacturer: JNL - model: Y-K001-001 - deviceProfileName: basic-switch - - id: "JNL/Y-K002-001" - deviceLabel: Yanmi Switch (2 Way) 1 - manufacturer: JNL - model: Y-K002-001 - deviceProfileName: basic-switch zigbeeGeneric: - id: "genericSwitch" deviceLabel: Zigbee Switch diff --git a/drivers/SmartThings/zigbee-switch/src/simple-metering-config/fingerprints.lua b/drivers/SmartThings/zigbee-switch/src/simple-metering-config/fingerprints.lua new file mode 100644 index 0000000000..f05e7c7d63 --- /dev/null +++ b/drivers/SmartThings/zigbee-switch/src/simple-metering-config/fingerprints.lua @@ -0,0 +1,10 @@ +-- Copyright 2025 SmartThings, Inc. +-- Licensed under the Apache License, Version 2.0 + +-- 定义支持该子驱动程序的设备指纹 +-- 这里可以指定特定的制造商和型号 +return { + ["Generic"] = { + ["SimpleMeteringDevice"] = true + } +} \ No newline at end of file diff --git a/drivers/SmartThings/zigbee-switch/src/simple-metering-config/init.lua b/drivers/SmartThings/zigbee-switch/src/simple-metering-config/init.lua new file mode 100644 index 0000000000..fc3aca3367 --- /dev/null +++ b/drivers/SmartThings/zigbee-switch/src/simple-metering-config/init.lua @@ -0,0 +1,68 @@ +-- Copyright 2025 SmartThings, Inc. +-- Licensed under the Apache License, Version 2.0 + +local capabilities = require "st.capabilities" +local zigbee_constants = require "st.zigbee.constants" +local SimpleMetering = require "st.zigbee.cluster".clusters.SimpleMetering +local zigbee_handlers = require "st.zigbee.handlers" + +-- 设置 Simple Metering 集群的 multipliers 和 divisors 属性 +local function device_init(driver, device) + -- 在设备初始化时设置 multipliers 和 divisors + device:configure() + + -- 设置 Multiplier 为 1 + local write_multiplier_cmd = SimpleMetering.server.commands.WriteAttributes(device) + if write_multiplier_cmd then + device:send_to_component( + write_multiplier_cmd({ + {id = SimpleMetering.attributes.Multiplier.ID, value = 1, DataType = 0x22} -- 0x22 is 24-bit integer + }), + "main" + ) + end + + -- 设置 Divisor 为 100 + local write_divisor_cmd = SimpleMetering.server.commands.WriteAttributes(device) + if write_divisor_cmd then + device:send_to_component( + write_divisor_cmd({ + {id = SimpleMetering.attributes.Divisor.ID, value = 100, DataType = 0x23} -- 0x23 is 32-bit integer + }), + "main" + ) + end +end + +-- 处理能量计量事件 +local function energy_meter_handler(driver, device, value, zb_rx) + local raw_value = value.value + local divisor = device:get_field(SimpleMetering.attributes.Divisor.ID) or 100 + local multiplier = device:get_field(SimpleMetering.attributes.Multiplier.ID) or 1 + + local calculated_value = (raw_value * multiplier) / divisor + device:emit_event_for_endpoint( + zb_rx.address_header.src_endpoint.value, + capabilities.energyMeter.energy({value = calculated_value, unit = "kWh"}) + ) +end + +-- 定义子驱动程序模板 +local simple_metering_config_subdriver = { + supported_capabilities = { + capabilities.energyMeter, + capabilities.powerMeter + }, + lifecycle_handlers = { + init = device_init + }, + zigbee_handlers = { + cluster = { + [SimpleMetering.ID] = { + [SimpleMetering.attributes.CurrentSummationDelivered.ID] = energy_meter_handler + } + } + } +} + +return simple_metering_config_subdriver \ No newline at end of file From 316276dd2789563a4a0bbb60301f5e2c2e0d1c8e Mon Sep 17 00:00:00 2001 From: jack Date: Mon, 26 Jan 2026 18:04:08 +0800 Subject: [PATCH 2/6] add the handle file --- .../src/simple-metering-config/can_handle.lua | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 drivers/SmartThings/zigbee-switch/src/simple-metering-config/can_handle.lua diff --git a/drivers/SmartThings/zigbee-switch/src/simple-metering-config/can_handle.lua b/drivers/SmartThings/zigbee-switch/src/simple-metering-config/can_handle.lua new file mode 100644 index 0000000000..7ad2a4e0a3 --- /dev/null +++ b/drivers/SmartThings/zigbee-switch/src/simple-metering-config/can_handle.lua @@ -0,0 +1,14 @@ +-- Copyright 2025 SmartThings, Inc. +-- Licensed under the Apache License, Version 2.0 + +local can_handle_simple_metering_config = function(opts, driver, device) + -- 检查设备是否支持 Simple Metering 集群 (0x0702) + for _, cluster in ipairs(device.server_clusters) do + if cluster == 0x0702 then + return true + end + end + return false +end + +return can_handle_simple_metering_config \ No newline at end of file From c01a9d081d9cfaa17dc2ab9a81b385b1b78e7d6a Mon Sep 17 00:00:00 2001 From: jack Date: Fri, 30 Jan 2026 14:04:53 +0800 Subject: [PATCH 3/6] add driver fingerprints --- drivers/SmartThings/zigbee-switch/config.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/drivers/SmartThings/zigbee-switch/config.yml b/drivers/SmartThings/zigbee-switch/config.yml index 32ad44a36e..242e9e6631 100644 --- a/drivers/SmartThings/zigbee-switch/config.yml +++ b/drivers/SmartThings/zigbee-switch/config.yml @@ -4,3 +4,10 @@ permissions: zigbee: {} description: "SmartThings driver for Zigbee switch devices" vendorSupportInformation: "https://support.smartthings.com" + +fingerprints: + - manufacturer: "LEDVANCE" + model: "PLUG COMPACT EU EM T" + deviceProfileName: "switch-power-energy" + id: "LEDVANCE/PLUG COMPACT EU EM T" + deviceLabel: "SMART+ ZIGBEE COMPACT OUTDOOR PLUG EU" From 5e5a3876a6ba8fda08a07875dc8809ea1ccefc96 Mon Sep 17 00:00:00 2001 From: jack Date: Fri, 30 Jan 2026 15:13:48 +0800 Subject: [PATCH 4/6] modify the ledvance zigbee meter plug device Label --- drivers/SmartThings/zigbee-switch/fingerprints.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/SmartThings/zigbee-switch/fingerprints.yml b/drivers/SmartThings/zigbee-switch/fingerprints.yml index abe73221d6..3c8180e4c0 100644 --- a/drivers/SmartThings/zigbee-switch/fingerprints.yml +++ b/drivers/SmartThings/zigbee-switch/fingerprints.yml @@ -1716,7 +1716,7 @@ zigbeeManufacturer: model: RT TW deviceProfileName: color-temp-bulb - id: "LEDVANCE/PLUG COMPACT EU EM T" - deviceLabel: SMART+ ZIGBEE COMPACT OUTDOOR PLUG EU + deviceLabel: SMART ZIGBEE COMPACT OUTDOOR PLUG EU manufacturer: LEDVANCE model: PLUG COMPACT EU EM T deviceProfileName: switch-power-energy From 98aafe1eb50aafd2626ad11dd488c23c12fd3071 Mon Sep 17 00:00:00 2001 From: jack Date: Fri, 30 Jan 2026 16:00:40 +0800 Subject: [PATCH 5/6] add driver for PLUG EU EM T --- drivers/SmartThings/zigbee-switch/config.yml | 7 ++++++- drivers/SmartThings/zigbee-switch/fingerprints.yml | 5 +++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/drivers/SmartThings/zigbee-switch/config.yml b/drivers/SmartThings/zigbee-switch/config.yml index 242e9e6631..8737165704 100644 --- a/drivers/SmartThings/zigbee-switch/config.yml +++ b/drivers/SmartThings/zigbee-switch/config.yml @@ -10,4 +10,9 @@ fingerprints: model: "PLUG COMPACT EU EM T" deviceProfileName: "switch-power-energy" id: "LEDVANCE/PLUG COMPACT EU EM T" - deviceLabel: "SMART+ ZIGBEE COMPACT OUTDOOR PLUG EU" + deviceLabel: "SMART ZIGBEE COMPACT OUTDOOR PLUG EU" + - manufacturer: "LEDVANCE" + model: "PLUG EU EM T" + deviceProfileName: "switch-power-energy" + id: "LEDVANCE/PLUG COMPACT EU EM T" + deviceLabel: "SMART ZIGBEE PLUG EU" \ No newline at end of file diff --git a/drivers/SmartThings/zigbee-switch/fingerprints.yml b/drivers/SmartThings/zigbee-switch/fingerprints.yml index 3c8180e4c0..08aee5ad85 100644 --- a/drivers/SmartThings/zigbee-switch/fingerprints.yml +++ b/drivers/SmartThings/zigbee-switch/fingerprints.yml @@ -1719,6 +1719,11 @@ zigbeeManufacturer: deviceLabel: SMART ZIGBEE COMPACT OUTDOOR PLUG EU manufacturer: LEDVANCE model: PLUG COMPACT EU EM T + deviceProfileName: switch-power-energy + - id: "LEDVANCE/PLUG EU EM T" + deviceLabel: SMART ZIGBEE PLUG EU + manufacturer: LEDVANCE + model: PLUG EU EM T deviceProfileName: switch-power-energy - id: "OSRAM/LIGHTIFY Edge-lit flushmount" deviceLabel: SYLVANIA Light From 6a7628385dc7da7d7d4b5a4a8b25b4b765159414 Mon Sep 17 00:00:00 2001 From: jack Date: Fri, 30 Jan 2026 16:08:23 +0800 Subject: [PATCH 6/6] delete the PLUG EU EM T driver --- drivers/SmartThings/zigbee-switch/config.yml | 7 +------ drivers/SmartThings/zigbee-switch/fingerprints.yml | 7 +------ 2 files changed, 2 insertions(+), 12 deletions(-) diff --git a/drivers/SmartThings/zigbee-switch/config.yml b/drivers/SmartThings/zigbee-switch/config.yml index 8737165704..9fd141694f 100644 --- a/drivers/SmartThings/zigbee-switch/config.yml +++ b/drivers/SmartThings/zigbee-switch/config.yml @@ -10,9 +10,4 @@ fingerprints: model: "PLUG COMPACT EU EM T" deviceProfileName: "switch-power-energy" id: "LEDVANCE/PLUG COMPACT EU EM T" - deviceLabel: "SMART ZIGBEE COMPACT OUTDOOR PLUG EU" - - manufacturer: "LEDVANCE" - model: "PLUG EU EM T" - deviceProfileName: "switch-power-energy" - id: "LEDVANCE/PLUG COMPACT EU EM T" - deviceLabel: "SMART ZIGBEE PLUG EU" \ No newline at end of file + deviceLabel: "SMART ZIGBEE COMPACT OUTDOOR PLUG EU" \ No newline at end of file diff --git a/drivers/SmartThings/zigbee-switch/fingerprints.yml b/drivers/SmartThings/zigbee-switch/fingerprints.yml index 08aee5ad85..30d951445f 100644 --- a/drivers/SmartThings/zigbee-switch/fingerprints.yml +++ b/drivers/SmartThings/zigbee-switch/fingerprints.yml @@ -1719,12 +1719,7 @@ zigbeeManufacturer: deviceLabel: SMART ZIGBEE COMPACT OUTDOOR PLUG EU manufacturer: LEDVANCE model: PLUG COMPACT EU EM T - deviceProfileName: switch-power-energy - - id: "LEDVANCE/PLUG EU EM T" - deviceLabel: SMART ZIGBEE PLUG EU - manufacturer: LEDVANCE - model: PLUG EU EM T - deviceProfileName: switch-power-energy + deviceProfileName: switch-power-energy - id: "OSRAM/LIGHTIFY Edge-lit flushmount" deviceLabel: SYLVANIA Light manufacturer: OSRAM