Skip to content
Draft
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
7 changes: 6 additions & 1 deletion drivers/SmartThings/zigbee-humidity-sensor/fingerprints.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,9 @@
zigbeeManufacturer:
- id: "Rti-Tek/STHZB"
deviceLabel: Rti-Tek STHZB
manufacturer: Rti-Tek
model: STHZB
deviceProfileName: rtitek-sthzb
- id: "LUMI/lumi.sensor_ht.agl02"
deviceLabel: Aqara Temperature and Humidity Sensor T1
manufacturer: LUMI
Expand Down Expand Up @@ -153,4 +158,4 @@ zigbeeGeneric:
- 0x0B04
client:
- 0x0003
deviceProfileName: humidity-battery
deviceProfileName: humidity-battery
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
name: rtitek-sthzb
components:
- id: main
capabilities:
- id: temperatureMeasurement
version: 1
- id: relativeHumidityMeasurement
version: 1
- id: battery
version: 1
- id: refresh
version: 1
categories:
- name: TempHumiditySensor
preferences:
- preferenceId: tempOffset
explicit: true
- preferenceId: humidityOffset
explicit: true
deviceConfig:
dashboard:
states:
- component: main
capability: temperatureMeasurement
version: 1
group: main
composite: true
- component: main
capability: relativeHumidityMeasurement
version: 1
group: main
values:
- label: " {{humidity.value}} {{humidity.unit}}"
composite: true
actions: []
basicPlus: []
detailView:
- component: main
capability: temperatureMeasurement
version: 1
- component: main
capability: relativeHumidityMeasurement
version: 1
- component: main
capability: battery
version: 1
- component: main
capability: refresh
version: 1
automation:
conditions:
- component: main
capability: temperatureMeasurement
version: 1
- component: main
capability: relativeHumidityMeasurement
version: 1
- component: main
capability: battery
version: 1
actions: []
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
-- Copyright 2026 SmartThings, Inc.
-- Licensed under the Apache License, Version 2.0

local test = require "integration_test"
local capabilities = require "st.capabilities"
local clusters = require "st.zigbee.zcl.clusters"
local t_utils = require "integration_test.utils"
local zigbee_test_utils = require "integration_test.zigbee_test_utils"

local PowerConfiguration = clusters.PowerConfiguration
local RelativeHumidity = clusters.RelativeHumidity
local TemperatureMeasurement = clusters.TemperatureMeasurement

local mock_device = test.mock_device.build_test_zigbee_device({
profile = t_utils.get_profile_definition("rtitek-sthzb.yml"),
zigbee_endpoints = {
[1] = {
id = 1,
manufacturer = "Rti-Tek",
model = "STHZB",
server_clusters = { 0x0001, 0x0402, 0x0405, 0xFD22 },
},
},
})

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_message_test(
"STHZB standard temperature report is exposed in Celsius",
{
{
channel = "zigbee",
direction = "receive",
message = {
mock_device.id,
TemperatureMeasurement.attributes.MeasuredValue:build_test_attr_report(mock_device, 2630),
},
},
{
channel = "capability",
direction = "send",
message = mock_device:generate_test_message(
"main", capabilities.temperatureMeasurement.temperature({ value = 26.3, unit = "C" })
),
},
},
{ min_api_version = 14 }
)

test.register_message_test(
"STHZB standard humidity report is exposed as percent",
{
{
channel = "zigbee",
direction = "receive",
message = {
mock_device.id,
RelativeHumidity.attributes.MeasuredValue:build_test_attr_report(mock_device, 5830),
},
},
{
channel = "capability",
direction = "send",
message = mock_device:generate_test_message(
"main", capabilities.relativeHumidityMeasurement.humidity({ value = 58.3 })
),
},
},
{ min_api_version = 14 }
)

test.register_message_test(
"STHZB standard battery percentage is exposed",
{
{
channel = "zigbee",
direction = "receive",
message = {
mock_device.id,
PowerConfiguration.attributes.BatteryPercentageRemaining:build_test_attr_report(mock_device, 150),
},
},
{
channel = "capability",
direction = "send",
message = mock_device:generate_test_message("main", capabilities.battery.battery(75)),
},
},
{ min_api_version = 14 }
)

test.register_coroutine_test(
"STHZB refresh reads standard measurement attributes",
function()
test.socket.capability:__queue_receive({
mock_device.id,
{ capability = "refresh", component = "main", command = "refresh", args = {} },
})
test.socket.zigbee:__expect_send({
mock_device.id,
TemperatureMeasurement.attributes.MeasuredValue:read(mock_device),
})
test.socket.zigbee:__expect_send({
mock_device.id,
RelativeHumidity.attributes.MeasuredValue:read(mock_device),
})
test.socket.zigbee:__expect_send({
mock_device.id,
PowerConfiguration.attributes.BatteryPercentageRemaining:read(mock_device),
})
test.wait_for_events()
end,
{ min_api_version = 14, inner_block_ordering = "relaxed" }
)

test.run_registered_tests()