Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
5 changes: 5 additions & 0 deletions drivers/SmartThings/zigbee-switch/fingerprints.yml
Original file line number Diff line number Diff line change
Expand Up @@ -505,6 +505,11 @@ zigbeeManufacturer:
manufacturer: frient A/S
model: SMRZB-342
deviceProfileName: frient-switch-power-energy-voltage
- id: "frient/IOMZB-110"
deviceLabel: frient IO Module
manufacturer: frient A/S
model: IOMZB-110
deviceProfileName: switch-4inputs-2outputs
- id: "AduroSmart Eria/AD-DimmableLight3001"
deviceLabel: Eria Light
manufacturer: AduroSmart Eria
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
name: frient-io-output-switch
components:
- id: main
capabilities:
- id: switch
version: 1
- id: refresh
version: 1
preferences:
- title: "Output: On Time"
name: configOnTime
required: true
preferenceType: integer
definition:
minimum: 0
maximum: 6553
default: 0
- title: "Output: Off Wait Time"
name: configOffWaitTime
required: true
preferenceType: integer
definition:
minimum: 0
maximum: 6553
default: 0
107 changes: 107 additions & 0 deletions drivers/SmartThings/zigbee-switch/profiles/switch-4inputs-2outputs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
name: switch-4inputs-2outputs
components:
- id: main
capabilities:
- id: firmwareUpdate
version: 1
- id: refresh
version: 1
categories:
- name: Switch
- id: input1
label: "Input 1"
capabilities:
- id: switch
version: 1
- id: input2
label: "Input 2"
capabilities:
- id: switch
version: 1
- id: input3
label: "Input 3"
capabilities:
- id: switch
version: 1
- id: input4
label: "Input 4"
capabilities:
- id: switch
version: 1
preferences:
# Input 1
- title: "Input 1: Reverse Polarity"
name: reversePolarity1
required: true
preferenceType: boolean
definition:
default: false
- title: "Input 1: Control Output 1"
name: controlOutput11
required: true
preferenceType: boolean
definition:
default: false
- title: "Input 1: Control Output 2"
name: controlOutput21
required: true
preferenceType: boolean
definition:
default: false
# Input 2
- title: "Input 2: Reverse Polarity"
name: reversePolarity2
required: true
preferenceType: boolean
definition:
default: false
- title: "Input 2: Control Output 1"
name: controlOutput12
required: true
preferenceType: boolean
definition:
default: false
- title: "Input 2: Control Output 2"
name: controlOutput22
required: true
preferenceType: boolean
definition:
default: false
# Input 3
- title: "Input 3: Reverse Polarity"
name: reversePolarity3
required: true
preferenceType: boolean
definition:
default: false
- title: "Input 3: Control Output 1"
name: controlOutput13
required: true
preferenceType: boolean
definition:
default: false
- title: "Input 3: Control Output 2"
name: controlOutput23
required: true
preferenceType: boolean
definition:
default: false
# Input 4
- title: "Input 4: Reverse Polarity"
name: reversePolarity4
required: true
preferenceType: boolean
definition:
default: false
- title: "Input 4: Control Output 1"
name: controlOutput14
required: true
preferenceType: boolean
definition:
default: false
- title: "Input 4: Control Output 2"
name: controlOutput24
required: true
preferenceType: boolean
definition:
default: false
61 changes: 61 additions & 0 deletions drivers/SmartThings/zigbee-switch/src/configurations/devices.lua
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,10 @@ local IASZone = clusters.IASZone
local ElectricalMeasurement = clusters.ElectricalMeasurement
local SimpleMetering = clusters.SimpleMetering
local Alarms = clusters.Alarms
local BasicInput = clusters.BasicInput
local OnOff = clusters.OnOff
local constants = require "st.zigbee.constants"
local data_types = require "st.zigbee.data_types"

local devices = {
IKEA_RGB_BULB = {
Expand Down Expand Up @@ -110,6 +113,64 @@ local devices = {
},
}
},
FRIENT_IO_MODULE = {
FINGERPRINTS = {
{ mfr = "frient A/S", model = "IOMZB-110" }
},
CONFIGURATION = {
{
cluster = OnOff.ID,
attribute = OnOff.attributes.OnTime.ID,
minimum_interval = 10,
maximum_interval = 600,
reportable_change = 1,
data_type = OnOff.attributes.OnOff.base_type,
configurable = true,
monitored = true
},
{
cluster = OnOff.ID,
attribute = OnOff.attributes.OffWaitTime.ID,
minimum_interval = 10,
maximum_interval = 600,
reportable_change = 1,
data_type = OnOff.attributes.OffWaitTime.base_type,
configurable = true,
monitored = true
},
{
cluster = BasicInput.ID,
attribute = BasicInput.attributes.PresentValue.ID,
minimum_interval = 10,
maximum_interval = 600,
reportable_change = 0,
data_type = BasicInput.attributes.PresentValue.base_type,
configurable = true,
monitored = true
},
{
cluster = BasicInput.ID,
attribute = BasicInput.attributes.Polarity.ID,
minimum_interval = 10,
maximum_interval = 600,
reportable_change = 0,
data_type = BasicInput.attributes.Polarity.base_type,
configurable = true,
monitored = true
},
{
cluster = BasicInput.ID,
attribute = 0x8000, -- IASActivation
minimum_interval = 10,
maximum_interval = 600,
reportable_change = 0,
data_type = data_types.Uint16,
mfg_code = 0x1015,
configurable = true,
monitored = true
}
}
}
}

return devices
12 changes: 12 additions & 0 deletions drivers/SmartThings/zigbee-switch/src/frient-IO/can_handle.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
-- Copyright 2025 SmartThings, Inc.
-- Licensed under the Apache License, Version 2.0

-- Function to determine if the driver can handle this device
return function(opts, driver, device, ...)
if device:get_manufacturer() == "frient A/S" and device:get_model() == "IOMZB-110" then
local subdriver = require("frient-IO")
return true, subdriver
else
return false
end
end
Loading
Loading