温控器界面配置 Cluster(Thermostat User Interface Configuration)

Cluster ID: 0x0204  |  所在 Endpoint: 与 Thermostat(0x0201)同一 Endpoint,通常在 Endpoint 1

ThermostatUserInterfaceConfiguration 用于配置温控器物理面板的显示和操作行为 —— 面板上温度用摄氏还是华氏显示、按键是否锁定、日程编排功能是否可见。 这是一个纯配置型 Cluster,只有 3 个属性、没有命令,全部通过 Write 操作完成配置。

与 Thermostat Cluster 的关系

Thermostat(0x0201) 负责温控的核心逻辑 —— 温度读取、设定点、运行模式、命令控制。 ThermostatUserInterfaceConfiguration(0x0204)则只管用户界面 —— 面板显示什么、用户能操作什么。 两者在同一个 Endpoint 上共存,各司其职。

与 Unit Localization 的区别

Unit Localization(0x002D) 在 Endpoint 0 上,控制的是全设备的温度显示偏好。 而这里的 TemperatureDisplayMode 控制的是温控器自身面板的温度显示。 两者可以独立设置,但通常建议保持一致以免造成用户困惑。

属性详解

ThermostatUserInterfaceConfiguration 共有 3 个属性,全部可读写。 点击下方汇总表中的属性 ID 可跳转到对应的详细说明。

ID 名称 类型 读写 说明
0x00 TemperatureDisplayMode enum8 读写 面板温度显示单位(摄氏 / 华氏)
0x01 KeypadLockout enum8 读写 面板按键锁定级别(无锁定 / 1~5 级)
0x02 ScheduleProgrammingVisibility enum8 读写 日程编排功能是否在面板上可见

TemperatureDisplayMode(温度显示模式)

控制温控器物理面板上温度的显示单位。写入后,面板上的温度数字会立即按新单位显示。 这个属性不影响 Thermostat Cluster 通过 Matter 协议上报的温度值 —— 协议传输的温度始终以 0.01°C 为单位。

TemperatureDisplayModeEnum 枚举值

0
Celsius 摄氏度(°C)—— 默认值,全球大多数地区使用
1
Fahrenheit 华氏度(°F)—— 美国等地区使用

KeypadLockout(按键锁定)

控制温控器面板上的按键锁定级别。锁定后,用户无法通过物理按键修改特定的设置项, 只能通过 Matter 协议(App / 自动化)远程修改。这在商业和公共场所非常有用 —— 防止人为随意调温。

锁定级别说明

Matter 规范定义了 5 个锁定级别,但每个级别具体锁定哪些功能由厂商自行决定。 规范只要求级别越高、锁定的范围越大。Level 5 锁定全部本地操作。 下方的功能限制描述是典型实现参考,实际以设备厂商文档为准。

KeypadLockoutEnum 枚举值

0
NoLockout 无锁定 —— 面板按键全部可用(默认值)
1
LockoutLevel1 一级锁定 —— 通常锁定日程编排功能
2
LockoutLevel2 二级锁定 —— 通常额外锁定模式切换(制热/制冷/自动)
3
LockoutLevel3 三级锁定 —— 通常额外锁定风速调节
4
LockoutLevel4 四级锁定 —— 通常额外锁定温度设定点调节
5
LockoutLevel5 五级锁定 —— 锁定全部本地操作,面板只能查看不能修改
锁定 ≠ 禁用

按键锁定只是阻止通过物理面板修改设置,不影响通过 Matter 协议的远程操作。 即使 KeypadLockout = Level5,App 和自动化规则依然可以正常调节温度、切换模式。 这正是这个属性的核心用途 —— 把操作权集中在远程管理端。

ScheduleProgrammingVisibility(日程编排可见性)

控制温控器面板上是否显示日程编排(Schedule Programming)功能入口。 隐藏后,用户在面板上看不到日程相关的菜单或按钮,只能通过 App 管理日程。

ScheduleProgrammingVisibilityEnum 枚举值

0
ScheduleProgrammingPermitted 日程可见 —— 用户可以在面板上查看和编辑日程(默认值)
1
ScheduleProgrammingDenied 日程隐藏 —— 面板上不显示日程功能,只能通过 App 管理

命令(Commands)

ThermostatUserInterfaceConfiguration 没有定义任何命令。 所有配置通过直接 Write 属性完成。这在 Matter 中是常见的模式 —— 对于纯配置类的 Cluster,直接读写属性比定义专用命令更简洁。

怎么配置

想切换温度显示单位?直接对 TemperatureDisplayMode 属性发一个 Write 请求。 想锁定面板?写入 KeypadLockout 即可。不需要 Timed Interaction。

Write 请求示例 —— 切换到华氏度显示:

{
  "writeRequests": [{
    "attributePath": {
      "endpointId": 1,
      "clusterId": "0x0204",
      "attributeId": "0x00"           // TemperatureDisplayMode
    },
    "attributeValue": 1               // Fahrenheit(华氏度)
  }]
}

Write 请求示例 —— 设置按键一级锁定:

{
  "writeRequests": [{
    "attributePath": {
      "endpointId": 1,
      "clusterId": "0x0204",
      "attributeId": "0x01"           // KeypadLockout
    },
    "attributeValue": 1               // LockoutLevel1(锁定一级)
  }]
}

示例数据

读取一台温控器 Endpoint 1 上的 ThermostatUserInterfaceConfiguration 属性:

{
  // --- 显示配置 ---
  "0x00": 0,             // TemperatureDisplayMode = Celsius(摄氏度显示)
  "0x01": 0,             // KeypadLockout = NoLockout(按键无锁定)
  "0x02": 0              // ScheduleProgrammingVisibility = ScheduleProgrammingPermitted(日程可见)
}
属性数量

这个 Cluster 没有 Feature Map 控制属性可见性 —— 3 个属性始终全部暴露。 如果读取某个属性返回 UNSUPPORTED_ATTRIBUTE,说明设备没有实现这个可选属性 (ScheduleProgrammingVisibility 在 Matter 规范中是可选的)。

实际场景

场景一:酒店客房温控器 —— 锁定面板防止乱调

展开场景

一家酒店使用 Matter 温控器管理客房空调。为了防止客人随意修改空调模式和日程, 物业管理系统在每台温控器上做了如下配置:

  1. 写入 KeypadLockout = 4(LockoutLevel4)—— 客人只能看到温度,不能通过面板调温度和切换模式
  2. 写入 ScheduleProgrammingVisibility = 1(ScheduleProgrammingDenied)—— 隐藏日程功能
  3. 写入 TemperatureDisplayMode = 0(Celsius)—— 统一显示摄氏度

客人只能在面板上看到当前温度。所有温度调节通过客房 App 完成, App 可以限制调节范围(比如只允许 20~26°C),避免客人把空调开到极端温度。 物业保洁时通过管理系统远程统一设置到节能温度。

场景二:出口到不同地区 —— 配网时自动设置显示单位

展开场景

一款面向全球市场的 Matter 温控器,出厂默认显示摄氏度。 App 在配网完成后,根据用户手机的地区设置自动配置温度显示:

  1. 读取手机 Locale:如果是 en_US(美国)或 en_LR(利比里亚)等,温度偏好为华氏度
  2. 向 Endpoint 1 写入 TemperatureDisplayMode = 1(Fahrenheit)
  3. 同时向 Endpoint 0 的 Unit Localization(0x002D) 写入 TemperatureUnit = 0(Fahrenheit),保持全设备显示一致
  4. App 界面也同步以 °F 显示温度

这样用户拿到设备后,面板、App 看到的都是自己熟悉的温度单位,无需手动切换。 如果用户后续想改,在 App 设置中选择另一个单位即可,App 同时更新两个 Cluster 的属性。