设备类型代码
type 数字代码(hapi 内部)
hapi 的 device_info 中每个设备都有 type 字段,用于区分设备类型:
| type | 设备 | 说明 |
|---|---|---|
| 1 | 零火开关 | BLE Mesh 开关 |
| 2 | 单火开关 | BLE Mesh 开关 |
| 4 | 智能灯 | 支持亮度调节 |
| 5 | 窗帘电机 | 支持开/关/停/位置 |
| 9 | 插卡取电 | |
| 10 | 温控器/红外 | payload.type 区分子类型 |
| 22 | 插卡 |
小程序设备标识(device_info key)
| key | 中文名 | 说明 |
|---|---|---|
wangguanchazuo | 网关插座 | Zigbee 网关,作为 Mesh 主节点 |
kaiguan1 / kaiguan2 / kaiguan3 / kaiguan4 | 一/二/三/四位开关 | BLE Mesh 开关,按按键拆分 |
dimmingcontroller | 调光灯 | 支持亮度调节 |
tiaoguang2 | 调光调色灯 | 支持亮度+色温调节 |
curtainmotor | 窗帘电机 | 支持开/关/停/位置 |
chunagliankaiguan* | 窗帘开关 | 控制窗帘的开关面板 |
renticunzai | 人体存在传感器 | 人体感应检测 |
ble_lock | 蓝牙门锁 | 通过 system topic 控制 |
设备对象字段
| 字段 | 类型 | 说明 |
|---|---|---|
mac | string | 设备 MAC 地址(12 位 hex) |
type | number | 设备类型数字代码 |
naddr | string | BLE Mesh 网络地址 |
subtype | number | 子类型(>0 表示有子按键) |
subNum | number | 子设备数量(>4 时 oe=true,8 路开关) |
name | string | 设备名称 |
online | boolean | 在线状态 |
物模型定义
零火开关 (type=1)
属性
| 属性名 | opcode | 取值范围 | 说明 |
|---|---|---|---|
| on_off | 02 | on(01) / off(00) | 开关状态 |
服务:开 / 关(按路 index 控制)
事件:状态变更 → 上报 on_off
智能灯
属性
| 属性名 | opcode | 取值范围 | 说明 |
|---|---|---|---|
| on_off | 02 | on / off | 开关状态 |
| brightness | 03 | 0-100 | 亮度百分比 |
| colour_temperature | 04 | 0-100 | 色温 |
| sub_brightness | 9c | 0-100[] | 子灯亮度(按索引) |
| rgb | 4c | 6 字节 hex | RGB 颜色 |
服务:开 / 关 / 设置亮度 / 增减亮度 / 设置色温 / 增减色温 / 设置子灯亮度 / 增减子灯亮度 / 设置子灯色温 / 增减子灯色温
窗帘电机 (type=5)
属性
| 属性名 | opcode | 取值范围 | 说明 |
|---|---|---|---|
| curtain_run | 05 | open(01) / close(02) / stop(03) | 运行状态 |
| position | 06 | 0-100 | 位置百分比 |
服务:开窗帘 / 关窗帘 / 停窗帘 / 开到位置 / 关到位置
温控器
属性
| 属性名 | opcode | 取值范围 | 说明 |
|---|---|---|---|
| on_off | 02 | on / off | 开关 |
| ac_temperature | 1b | 16-30 | 空调温度 |
| ac_wind_speed | 1c | high / middle / low / auto | 风速 |
| ac_mode | 1d | cold / warm / fan / auto | 模式 |
服务:开 / 关 / 设置温度 / 增减温度 / 设置模式 / 设置风速 / 增减风速 / 组合设置(setACAdv)
红外遥控
属性
| 属性名 | opcode | 说明 |
|---|---|---|
| ir_data | 8f | 红外编码数据 |
服务:开/关(TV/机顶盒) / 增减音量 / 静音 / 增减频道 / 切换频道 / 红外学习
门磁传感器
属性
| 属性名 | opcode | 取值范围 | 说明 |
|---|---|---|---|
| door_sensor | 0a | open / close | 门磁状态 |
事件:开门 → door_sensor=open / 关门 → door_sensor=close
人体感应
属性
| 属性名 | opcode | 取值范围 | 说明 |
|---|---|---|---|
| human_body | 0c | true / false | 人体存在 |
事件:人体检测 → human_body=true / 人体离开 → human_body=false
插卡取电
属性
| 属性名 | opcode | 取值范围 | 说明 |
|---|---|---|---|
| plug_card | 0e | 有卡 / 无卡 | 插卡状态 |
data 值:00=无卡, 01=有卡, 02=上电插卡虚拟事件, 03=无卡取电拔卡
温度传感器
属性
| 属性名 | opcode | 取值范围 | 说明 |
|---|---|---|---|
| sensor_temperature | 16 | -40~85 | 环境温度(℃,2 字节有符号小端序 / 100) |
场景
场景不是物理设备,通过 BLE Mesh 广播地址执行。
服务:执行场景 → genExecuteScene(scene_id) → 广播地址 bcc0 + 01 + sceneId_hex
透传
服务:透传 → opcode 15 + 原始 hex 数据
BLE Mesh opcode 总表
| opcode | 设备类型 | 属性/服务 | 说明 |
|---|---|---|---|
02 | 开关/灯/空调 | on_off | 开关控制(status_byte 编码) |
03 | 灯 | brightness | 设置亮度 |
04 | 灯 | colour_temperature | 设置色温 |
05 | 窗帘 | curtain_run | 开/关/停 |
06 | 窗帘 | position | 位置控制 |
0a | 门磁 | door_sensor | 门磁状态 |
0c | 人体感应 | human_body | 人体存在 |
0e | 插卡取电 | plug_card | 插卡状态 |
15 | 透传 | passthrough | 原始数据透传 |
16 | 温度传感器 | sensor_temperature | 环境温度 |
1b | 温控器 | ac_temperature | 空调温度 |
1c | 温控器 | ac_wind_speed | 风速 |
1d | 温控器 | ac_mode | 空调模式 |
2f | 灯 | brightness+ | 增加亮度 |
30 | 灯 | brightness- | 降低亮度 |
31 | 灯 | colour_temp+ | 增加色温 |
32 | 灯 | colour_temp- | 降低色温 |
33 | 温控器 | ac_temp+ | 增加温度 |
34 | 温控器 | ac_temp- | 降低温度 |
35 | 温控器 | fan_speed+ | 增加风速 |
36 | 温控器 | fan_speed- | 降低风速 |
45 | 8 路开关 | sub_on_off | 8 路开关状态 |
4c | RGB 灯 | rgb | RGB 颜色 |
8f | 红外 | ir_data | 红外发射 |
9c | 灯 | sub_brightness | 子灯亮度 |
9d | 灯 | sub_colour_temp | 子灯色温 |
a1 | 灯 | sub_brightness+ | 增加子灯亮度 |
a2 | 灯 | sub_brightness- | 降低子灯亮度 |
a5 | 灯 | sub_colour_temp+ | 增加子灯色温 |
a6 | 灯 | sub_colour_temp- | 降低子灯色温 |
bcc0 | 场景/禁用 | scene/disable | 广播地址 |
msgType 定义
| msgType | 含义 |
|---|---|
30 | 控制指令(ble_in 下发) |
80 | 状态响应(ble_out 上报) |
32 | 查询指令 |
0c | 登录指令 |
04 | Mesh 配置 |
01 | BLE 名称设置 |
12 | 扫描指令 |
92 | 设备列表上报 |
