diff --git a/drivers/SmartThings/zigbee-switch/fingerprints.yml b/drivers/SmartThings/zigbee-switch/fingerprints.yml index 3d598372fa..a55c45d371 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 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..6a7ee71b17 --- /dev/null +++ b/drivers/SmartThings/zigbee-switch/src/simple-metering-config/can_handle.lua @@ -0,0 +1,8 @@ +-- Copyright 2025 SmartThings, Inc. +-- Licensed under the Apache License, Version 2.0 + +local can_handle_simple_metering_config = function(opts, driver, device) + return device.fingerprinted == true +end + +return can_handle_simple_metering_config \ No newline at end of file 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..64f6414810 --- /dev/null +++ b/drivers/SmartThings/zigbee-switch/src/simple-metering-config/fingerprints.lua @@ -0,0 +1,12 @@ +-- Copyright 2025 SmartThings, Inc. +-- Licensed under the Apache License, Version 2.0 + +return { + ["LEDVANCE"] = { + ["PLUG COMPACT EU EM T"] = { + deviceProfileName = "switch-power-energy", + --id = "LEDVANCE/PLUG COMPACT EU EM T", + --deviceLabel = "SMART ZIGBEE COMPACT OUTDOOR PLUG EU" + } + } +} \ 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..1c21e3f83c --- /dev/null +++ b/drivers/SmartThings/zigbee-switch/src/simple-metering-config/init.lua @@ -0,0 +1,44 @@ +-- 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 function energy_meter_handler(driver, device, value, zb_rx) + local raw_value = value.value + + if type(raw_value) ~= "number" or raw_value < 0 then + return + end + + local divisor = device:get_field(zigbee_constants.SIMPLE_METERING_DIVISOR_KEY) or 100 + local multiplier = device:get_field(zigbee_constants.SIMPLE_METERING_MULTIPLIER_KEY) or 1 + + if divisor == 0 then + return + end + + 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 + }, + zigbee_handlers = { + cluster = { + [SimpleMetering.ID] = { + [SimpleMetering.attributes.CurrentSummationDelivered.ID] = energy_meter_handler + } + } + } +} + +return simple_metering_config_subdriver \ No newline at end of file