Skip to content
Merged
Show file tree
Hide file tree
Changes from 35 commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
c8278e8
ledvance zigbee meter plug driver pull
LQ107 Jan 26, 2026
316276d
add the handle file
LQ107 Jan 26, 2026
c01a9d0
add driver fingerprints
LQ107 Jan 30, 2026
5e5a387
modify the ledvance zigbee meter plug device Label
LQ107 Jan 30, 2026
98aafe1
add driver for PLUG EU EM T
LQ107 Jan 30, 2026
6a76283
delete the PLUG EU EM T driver
LQ107 Jan 30, 2026
14de7ba
Update the PLUG COMPACT EU EM T device driver
LQ107 Feb 10, 2026
99ce6ea
set the multiplier and divisor fields in the initial handler
LQ107 Mar 3, 2026
22bc75b
disable the rely on the defaults to read the multiplier/divisor and A…
LQ107 Mar 4, 2026
b81fa6b
fixing the init.lua multiplier/divisor handle ,fixing the commit conf…
LQ107 Mar 4, 2026
328797c
update sub driver init.lua files
LQ107 Mar 4, 2026
8f598e7
Merge branch 'main' into ledvance_zigbee_meter_plug
LQ107 Mar 4, 2026
5004c95
Remove unnecessary files
LQ107 Mar 5, 2026
09b89b7
Merge branch 'main' into ledvance_zigbee_meter_plug
LQ107 Mar 5, 2026
3a46f9d
Remove redundant code
LQ107 Mar 6, 2026
b7eb6b6
Merge branch 'ledvance_zigbee_meter_plug' of https://github.com/LQ107…
LQ107 Mar 6, 2026
6b409cb
Merge branch 'main' into ledvance_zigbee_meter_plug
LQ107 Mar 6, 2026
41d31e7
Merge branch 'main' into ledvance_zigbee_meter_plug
LQ107 Mar 10, 2026
28e7783
1.add the test unit 2. add sub driver register 3.fixing the energy_me…
LQ107 Mar 11, 2026
875c75f
revert the gitgnore file to the default
LQ107 Mar 11, 2026
4011278
Merge branch 'ledvance_zigbee_meter_plug' of https://github.com/LQ107…
LQ107 Mar 11, 2026
3347541
Merge branch 'main' into ledvance_zigbee_meter_plug
LQ107 Mar 11, 2026
6063c89
Merge branch 'main' into ledvance_zigbee_meter_plug
LQ107 Mar 12, 2026
9424f57
Merge branch 'main' into ledvance_zigbee_meter_plug
LQ107 Mar 12, 2026
2f5fe4b
Merge branch 'main' into ledvance_zigbee_meter_plug
LQ107 Mar 13, 2026
d02ef90
1.fixing the energy meter value redundant processing 2.change the lo…
LQ107 Mar 16, 2026
c6d53e8
Merge branch 'ledvance_zigbee_meter_plug' of https://github.com/LQ107…
LQ107 Mar 16, 2026
6ee58b2
Merge branch 'main' into ledvance_zigbee_meter_plug
LQ107 Mar 19, 2026
2c5a233
Merge branch 'main' into ledvance_zigbee_meter_plug
LQ107 Mar 26, 2026
420f963
Merge branch 'main' into ledvance_zigbee_meter_plug
LQ107 Mar 31, 2026
4650e24
1.Use the default SmartThings simple metering handlers
LQ107 Apr 9, 2026
5e6d9d6
Merge branch 'ledvance_zigbee_meter_plug' of https://github.com/LQ107…
LQ107 Apr 14, 2026
542e724
Merge branch 'main' into ledvance_zigbee_meter_plug
LQ107 Apr 14, 2026
bea9429
fixing the following issue:
LQ107 Apr 15, 2026
d0f3ccb
Merge branch 'ledvance_zigbee_meter_plug' of https://github.com/LQ107…
LQ107 Apr 15, 2026
d555fe4
Merge branch 'main' into ledvance_zigbee_meter_plug
LQ107 Apr 15, 2026
0d04304
Fix the issues of missing trailing newline and remove trailing white …
LQ107 Apr 20, 2026
d25cf5c
Merge branch 'ledvance_zigbee_meter_plug' of https://github.com/LQ107…
LQ107 Apr 20, 2026
905fe30
Merge branch 'main' into ledvance_zigbee_meter_plug
LQ107 Apr 20, 2026
c4f13dd
1.rename the driver file name to ledvance-metering-plug 2.keep the g…
LQ107 Apr 21, 2026
c651f91
Merge branch 'ledvance_zigbee_meter_plug' of https://github.com/LQ107…
LQ107 Apr 21, 2026
c81e7e3
keep gitignore same to the main branch
LQ107 Apr 21, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Comment thread
greens marked this conversation as resolved.
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,4 @@ tools/coverage_output_html/
tools/__pycache__/
.DS_Store
.venv/

Comment thread
LQ107 marked this conversation as resolved.
Outdated
5 changes: 5 additions & 0 deletions drivers/SmartThings/zigbee-switch/fingerprints.yml
Original file line number Diff line number Diff line change
Expand Up @@ -1730,6 +1730,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
Comment thread
LQ107 marked this conversation as resolved.
Outdated
- id: "OSRAM/LIGHTIFY Edge-lit flushmount"
deviceLabel: SYLVANIA Light
manufacturer: OSRAM
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
-- Copyright 2026 SmartThings, Inc.
-- Licensed under the Apache License, Version 2.0

return function(opts, driver, device, ...)
local FINGERPRINTS = require("simple-metering-config.fingerprints")
for _, fingerprint in ipairs(FINGERPRINTS) do
if device:get_manufacturer() == fingerprint.mfr and device:get_model() == fingerprint.model then
local subdriver = require("simple-metering-config")
return true, subdriver
end
end
return false
end
Comment thread
LQ107 marked this conversation as resolved.
Outdated
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
-- Copyright 2026 SmartThings, Inc.
-- Licensed under the Apache License, Version 2.0

return {
{ mfr = "LEDVANCE", model = "PLUG COMPACT EU EM T" }
}
Comment thread
LQ107 marked this conversation as resolved.
Outdated
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
-- Copyright 2026 SmartThings, Inc.
-- Licensed under the Apache License, Version 2.0

local capabilities = require "st.capabilities"
local zigbee_constants = require "st.zigbee.constants"

local function device_init(driver, device)
if device:get_field(zigbee_constants.SIMPLE_METERING_MULTIPLIER_KEY) == nil then
device:set_field(zigbee_constants.SIMPLE_METERING_MULTIPLIER_KEY, 1, {persist = true})
end
if device:get_field(zigbee_constants.SIMPLE_METERING_DIVISOR_KEY) == nil then
device:set_field(zigbee_constants.SIMPLE_METERING_DIVISOR_KEY, 100, {persist = true})
end
end
Comment thread
LQ107 marked this conversation as resolved.

local simple_metering_config_subdriver = {
NAME = "Simple Metering Config",
supported_capabilities = {
capabilities.energyMeter,
capabilities.powerMeter
},
Comment thread
LQ107 marked this conversation as resolved.
Outdated
lifecycle_handlers = {
init = device_init
},
can_handle = require("simple-metering-config.can_handle")
}

return simple_metering_config_subdriver
1 change: 1 addition & 0 deletions drivers/SmartThings/zigbee-switch/src/sub_drivers.lua
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ return {
lazy_load_if_possible("sinope"),
lazy_load_if_possible("sinope-dimmer"),
lazy_load_if_possible("zigbee-dimmer-power-energy"),
lazy_load_if_possible("simple-metering-config"),
Comment thread
LQ107 marked this conversation as resolved.
Outdated
lazy_load_if_possible("zigbee-metering-plug-power-consumption-report"),
lazy_load_if_possible("jasco"),
lazy_load_if_possible("multi-switch-no-master"),
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
-- Copyright 2026 SmartThings, Inc.
-- Licensed under the Apache License, Version 2.0

local test = require "integration_test"
local zigbee_test_utils = require "integration_test.zigbee_test_utils"
local t_utils = require "integration_test.utils"
local zigbee_constants = require "st.zigbee.constants"

local mock_device = test.mock_device.build_test_zigbee_device(
{
profile = t_utils.get_profile_definition("switch-power-energy.yml"),
zigbee_endpoints = {
[1] = {
id = 1,
manufacturer = "LEDVANCE",
model = "PLUG COMPACT EU EM T",
server_clusters = { 0x0006, 0x0702 }
}
}
}
)

zigbee_test_utils.prepare_zigbee_env_info()

local function test_init()
test.mock_device.add_test_device(mock_device)
end

test.set_test_init_function(test_init)

test.register_coroutine_test(
"Device init should set default multiplier and divisor only when not already set",
function()
assert(mock_device:get_field(zigbee_constants.SIMPLE_METERING_MULTIPLIER_KEY) == nil)
assert(mock_device:get_field(zigbee_constants.SIMPLE_METERING_DIVISOR_KEY) == nil)
test.socket.device_lifecycle:__queue_receive({ mock_device.id, "init" })
test.wait_for_events()
assert(mock_device:get_field(zigbee_constants.SIMPLE_METERING_MULTIPLIER_KEY) == 1)
assert(mock_device:get_field(zigbee_constants.SIMPLE_METERING_DIVISOR_KEY) == 100)
end
)

test.register_coroutine_test(
"Device init should preserve device-reported multiplier and divisor",
function()
mock_device:set_field(zigbee_constants.SIMPLE_METERING_MULTIPLIER_KEY, 5, {persist = true})
mock_device:set_field(zigbee_constants.SIMPLE_METERING_DIVISOR_KEY, 1000, {persist = true})
test.socket.device_lifecycle:__queue_receive({ mock_device.id, "init" })
test.wait_for_events()
assert(mock_device:get_field(zigbee_constants.SIMPLE_METERING_MULTIPLIER_KEY) == 5)
assert(mock_device:get_field(zigbee_constants.SIMPLE_METERING_DIVISOR_KEY) == 1000)
end
)

test.run_registered_tests()
Loading