【Zigbee】涂鸦Zigbee场景遥控器开发分享
1、Zigbee设备开发快速入门
https://www.tuyaos.com/viewtopic.php?t=258
该文详细介绍了
a)环境安装
b)TuyaOS subdev-zg 开发包介绍
c)开发框架与产品开发包获取
d)编译与烧录
以上步骤,可以快速的搭建环境,编译固件,固件烧录,程序就可以在板子上跑起来了。
2、Zigbee场景遥控器必需基本信息
遥控器分类 | Profile ID | Device ID | 能力值 | Model ID |
---|---|---|---|---|
Color Dimmer Switch | 0x0104 | 0x0105 | TZ3000 | TS1002 |
2.1支持的Cluster
Server Cluster | Client Cluster |
---|---|
Basic (0x0000) | Identify (0x0003) |
Power Configuration (0x0001) | Groups (0x0004) |
Identify (0x0003) | Scenes (0x0005) |
Groups (0x0004) | On/Off (0x0006) |
Touchlink Commissioning (0x1000) | Level Control (0x0008) |
Color Control (0x0300) | |
Touchlink Commissioning (0x1000) | |
OTA Upgrade(0x0019) |
2.2 Zigbee遥控器标准照明指令
Zigbee标准照明指令详见ZCL文档,遥控器与灯具建立连接后可以使用标准Zigbee开关,调光调色指令控制灯具。
2.3 Zigbee照明调光遥控器接入标准
具体接入标准及协议请参考涂鸦IOT开发平台:Zigbee照明调光遥控器接入标准
3、涂鸦场景遥控器特色功能
DP协议
DP ID | 功能点名称 | 标识符 | 传输类型 | 数据类型 | 功能点属性 |
---|---|---|---|---|---|
6 | 开关遥控 | switch_controller | 只下发(wr) | 布尔(bool) | {"type":"bool"} |
7 | 模式控制 | mode_controller | 只下发(wr) | 枚举(enum) | {"range":["white","colour","scene"],"type":"enum"} |
8 | 亮度遥控 | bright_controller | 只下发(wr) | 数值(value) | {"min":10,"max":1000,"step":1,"unit":null,"scale":0,"type":"value"} |
9 | 色温遥控 | temp_controller | 只下发(wr) | 数值(value) | {"min":0,"max":1000,"step":1,"unit":null,"scale":0,"type":"value"} |
10 | 彩光遥控 | color_controller | 只下发(wr) | 字符串(string) | {"maxlen":255,"type":"string"} |
30 | 场景 | scene_data | 只下发(wr) | 字符串(string) | {"maxlen":255,"type":"string"} |
21 | 按键1模式 | button_mode_1 | 可下发可上报(rw) | 枚举(enum) | {"range":["no_initialize","remote_control","wireless_switch"],"type":"enum"} |
22 | 按键2模式 | button_mode_2 | 可下发可上报(rw) | 枚举(enum) | {"range":["no_initialize","remote_control","wireless_switch"],"type":"enum"} |
23 | 按键3模式 | button_mode_3 | 可下发可上报(rw) | 枚举(enum) | {"range":["no_initialize","remote_control","wireless_switch"],"type":"enum"} |
24 | 按键4模式 | button_mode_4 | 可下发可上报(rw) | 枚举(enum) | {"range":["no_initialize","remote_control","wireless_switch"],"type":"enum"} |
25 | 按键5模式 | button_mode_5 | 可下发可上报(rw) | 枚举(enum) | {"range":["no_initialize","remote_control","wireless_switch"],"type":"enum"} |
26 | 按键6模式 | button_mode_6 | 可下发可上报(rw) | 枚举(enum) | {"range":["no_initialize","remote_control","wireless_switch"],"type":"enum"} |
27 | 按键7模式 | button_mode_7 | 可下发可上报(rw) | 枚举(enum) | {"range":["no_initialize","remote_control","wireless_switch"],"type":"enum"} |
28 | 按键8模式 | button_mode_8 | 可下发可上报(rw) | 枚举(enum) | {"range":["no_initialize","remote_control","wireless_switch"],"type":"enum"} |
52 | 按键选择 | scene_switch | 可下发可上报(rw) | 枚举(enum) | {"range":["switch_1","switch_2","switch_3","switch_4","switch_5","switch_6","switch_7","switch_8"],"type":"enum"} |
DP说明:DP6-DP10,DP30是场景遥控器面板必须用到的在创建产品时不可删除。DP21-DP28,根据你开发的遥控器需要支持群组控制和场景控制的按键个数决定。DP52是在入网后,云端通过网关给遥控器下发群组号和按键号的绑定关系时使用的。
Zigbee私有协议
DP52对应私有协议,入网时云端给遥控器按键分配群组ID
下发:
Cluster ID | Command ID | 数据 | 备注 |
---|---|---|---|
0x0004 | 0xF0 | 按键个数+群组ID+按键ID+群组ID+按键ID... |
上报:
Cluster ID | Command ID | 数据 | 备注 |
---|---|---|---|
0xE002 | 0xD011 | 0 / 1 | 0表示成功,1表示失败 |
遥控器按键触发键值上报给网关:
Cluster ID | Command ID | 数据 | 备注 |
---|---|---|---|
0x0006 | 0xFD | 群组ID+按键ID |
入网时给按键分配群组ID的抓包截图:
遥控器按键触发键值上报的抓包截图:
备注:
涂鸦场景遥控器共有三种模式。
第一种是通过touchlink与灯直接配对,这种模式下,仅支持遥控器通过Zigbee3.0标准控制指令去控制灯具。
第二种和第三种都是加入到涂鸦网关后去和灯进行关联,分别是群组控制模式和联动控制模式。
在群组控制模式时,点击遥控器面板选择对应的灯具,APP会给添加到这个按键的灯具发送添加群组的指令,然后将遥控器的DP点6,7,8,9,10的联动规则添加到云端,实体ID是遥控器。此时点击遥控器的群组按键时,遥控器上报键值,网关会去查对应的联动规则将遥控器联动规则里面的DP点6,7,8,9,10转换为开关,模式,亮度,色温,彩光的涂鸦私有zigbee指令通过组播发出,达到控制灯的效果(此时与灯的DPID是多少无关)。若遥控器还有单独的控制按键,点击遥控器开关亮度色温彩光按键控制时,下发的是就是这个群组ID的组播zigbee3.0标准步进指令。
在联动控制模式下,点击进入面板选择对应的灯具,创建联动规则,点击遥控器对应的按键时,会触发对应的联动去控制灯。