智能照明产品开发包(一)

本文描述一款基于 TuyaOS 平台开发的 Zigbee 协议照明灯具 Demo,支持开关、亮度调节、色温调节、彩光调节等功能。

概述

功能特点

  • 支持涂鸦特色开关、亮度、色温、彩光 HSV、情景和音乐灯的远程控制,接入涂鸦网关即可使用涂鸦 App 控制。
  • 支持 Zigbee 3.0 标准指令控制,产品开发包中已经提供绝大部分的标准指令处理方式,接入标准 Zigbee 3.0 网关即可使用。
  • 支持 Zigbee Touchlink 组网及控制。

操作及现象

  • 进行网络配对:

    • 当 light_app_config.h 文件中的 POWER_ON_AUTO_JOIN 宏定义配置为 1 时,设备在无网络状态下上电,会自动进行网络配对。

    • 当 light_app_config.h 文件中的 POWER_ON_AUTO_JOIN 宏定义配置为 0 时,需要手动重置配网,此时您需要对灯进行上下电重置操作,上下电次数需要大于等于 SCAN_NETWORK_RESET_COUNT 宏定义的值,并且重置过程中上电时间不能超过 5s,否则需要重新计算次数。

    • 网络配对窗口期时长由宏定义 ZIGBEE_JOIN_TIMEOUT_MS 决定,超出窗口期时长则本次配网超时。

    • 当灯开启网络配对时,灯会进入灯闪提示。宏定义 SCAN_NETWORK_PROMPT_METHOD 为 0 时为闪烁提示,SCAN_NETWORK_PROMPT_METHOD 为 1 时为呼吸提示。网络配对灯闪提示时长由宏定义 SCAN_NETWORK_PROMPT_TIME_S 决定,通常 SCAN_NETWORK_PROMPT_TIME_S ≤ ZIGBEE_JOIN_TIMEOUT_MS

    • 网络配对期间灯闪提示的模式和 HSVBT 数据,以及网络配对完成后常亮的模式和 HSVBT 数据可由您在 app_light_prompt.c 文件的 app_light_prompt_ctrl_start 函数中编辑。

           //prompt start data
           prompt_start_data.on_off = TRUE;
        #if (APP_LIGHT_CHANNELS == 3)
           prompt_start_data.mode = COLOR_MODE;
        #else
           prompt_start_data.mode = WHITE_MODE;
        #endif
           prompt_start_data.b_data = 1000;    //range: 0-1000
           prompt_start_data.t_data = 1000;    //range: 0-1000
           prompt_start_data.h_data = 0;       //range: 0-360
           prompt_start_data.s_data = 1000;    //range: 0-1000
           prompt_start_data.v_data = 1000;    //range: 0-1000
      
           //prompt stop data
           prompt_stop_data.on_off = TRUE;
        #if (APP_LIGHT_CHANNELS == 3)
           prompt_stop_data.mode = COLOR_MODE;
        #else
           prompt_stop_data.mode = WHITE_MODE;
        #endif
           prompt_stop_data.b_data = 1000;     //range: 0-1000
           prompt_stop_data.t_data = 1000;     //range: 0-1000
           prompt_stop_data.h_data = 0;        //range: 0-360
           prompt_stop_data.s_data = 1000;     //range: 0-1000
           prompt_stop_data.v_data = 1000;     //range: 0-1000
      
    • 此时可将灯与网关进行配对,步骤参考 配网步骤

    • 配对成功时,灯会恢复到常亮状态,此时可在 App 页面看到此设备。

    • 配对超时(时间默认 180 秒)后,灯会恢复到常亮状态。

 

产品创建

关于产品创建流程,参考产品创建

设备协议介绍

Zigbee 基本信息

参数数值
Profile ID0x0104
Device ID
  • 0x0101:一路灯 C
  • 0x010C:二路灯 CW
  • 0x0102:三路灯 RGB
  • 0x010D:四路灯 RGBC,五路灯 RGBCW

Endpoint 描述

Endpoint描述
0x01当前灯具使用的端口号
0xF2Green Power 使用的端口号

支持的 cluster

Endpoint 0x01
Input clusters (Server)Output clusters (Client)
Basic (0x0000)OTA Upgrade (0x0019)
Identify (0x0003)Time (0x000A)
Groups (0x0004)/
Scenes (0x0005)/
On/Off (0x0006)/
Level Control (0x0008)/
Color Control (0x0300)/
Touchlink Commissioning (0x1000)/
Endpoint 0xF2
Input clusters (Server)Output clusters (Client)
/Green Power (0x0021)

支持的属性和命令

Basic cluster

Attributes

IDNameData typeRangeDefault
0x0000ZCL Versionuint8-0x200x00-0xff0x03。
0x0001Application Versionuint8 -0x200x00-0xff例如,0b 01 00 0001 = 1.0.1,即 0x41 为 1.0.1。OTA 功能会用到该版本号,在 OTA 开始阶段,网关会读取 OTA 包的版本号推送给设备。在 OTA 成功重启后,网关会读取版本号来确定是否升级成功。只能往更高的版本升级。
0x0002Stack Versionuint8-0x200x00-0xff0x02。
0x0003Hardware Versionuint8-0x200x00-0xff0x01。
0x0004Manufacturer Namestring-0x420-32 bytesXXX…XXX(长度为 16 个字节,由 8 字节前缀和 8 字节的 PID 组成),0-7 bytes:_TZ3000_,8-16 bytes:PID(由产品经理在平台或者自助创建和提供)。该字段决定了手机 App 界面的 UI 和功能展现,如果对 PID 没有特殊要求,可采用默认 PID。
0x0005Model Identifierstring-0x420-32 bytesTS0505B。
0x0007Power Sourceenum8-0x300x00-0xff0x01。
0xFFFDCluster Revisionuint16-0x210x0000-0xffff0x0001。
Identify cluster

Attributes

IDNameData typeRangeDefault
0x0000Identify Timeuint16-0x210x0000-0xffff0x0000
0xFFFDCluster Revisionuint16-0x210x0000-0xffff0x0001

Commands

IDNameDirection
0x00IdentifyC->S
0x01Identify QueryC->S
Groups cluster

Attributes

IDNameData typeRangeDefault
0x0000Name Supportmap8-0x18desc0x00
0xFFFDCluster Revisionuint16-0x210x0000-0xffff0x0002

Commands

IDNameDirection
0x00Add GroupC->S
0x01View GroupC->S
0x02Get Group MembershipC->S
0x03Remove GroupC->S
0x04Remove All GroupsC->S
0x05Add Group If IdentifyingC->S
Scenes cluster

Attributes

IDNameData typeRangeDefault
0x0000Scene Countuint8-0x200x00-0xff0x00
0x0001Current Sceneuint8-0x200x00-0xff0x00
0x0002Current Groupuint16-0x210x0000-0xfff70x0000
0x0003Scene Validbool-0x100 or 10x00
0x0004Name Supportmap8-0x18desc0x00
0xFFFDCluster Revisionuint16-0x210x0000-0xffff0x0002

Commands

IDNameDirection
0x00Add GroupC->S
0x01View GroupC->S
0x02Get Group MembershipC->S
0x03Remove GroupC->S
0x04Remove All GroupsC->S
0x05Add Group If IdentifyingC->S
On off cluster

Attributes

IDNameData typeRangeDefault
0x0000On Offbool-0x10
  • 0:Off
  • 1:On
0x00
0xFFFDCluster Revisionuint16-0x210x0000-0xffff0x0002

Commands

IDNameDirection
0x00OffC->S
0x01OnC->S
0x02ToggleC->S
Level control cluster

Attributes

IDNameData typeRangeDefault
0x0000Current Leveluint8-0x200x01-0xfe0xfe
0x000FOptionsmap8-0x18desc0x00
0xFFFDCluster Revisionuint16-0x210x0000-0xffff0x0002
Commands
IDNameDirection
0x00Move to LevelC->S
0x01MoveC->S
0x02StepC->S
0x03StopC->S
0x04Move to Level (with On/Off)C->S
0x05Move (with On/Off)C->S
0x06Step (with On/Off)C->S
0x07Stop (with On/Off)C->S
Color control cluster

Attributes

IDNameData typeRangeDefault
0x0000Current Hueuint8-0x200x00-0xfe0x00
0x0001Current Saturationuint8-0x200x00-0xfe0xfe
0x0003Current Xuint16-0x210x0000-0xfeff0x0000
0x0004Current Yuint16-0x210x0000-0xfeff0x0000
0x0007Color Temperature Miredsuint16-0x210x0000-0xfeff0x0000
0x0008Color Modeenum8-0x300x00-0x020x02
0x000FOptionsmap8-0x18/0x00
0x0010Number Of Primariesuint8-0x200x00-0x060xff
0x4001Enhanced Color Modeenum8-0x300x00-0xff0x02
0x400AColor Capabilitiesmap16-0x190x0000-0x001f0x0019
0x400BColor Temp Physical Min Miredsuint16-0x210x0000-0xfeff0x0099
0x400CColor Temp Physical Max Miredsuint16-0x210x0000-0xfeff0x01F4
0x400DCouple Color Temp To Level Min Miredsuint16-0x21Color Temp Physical Min Mireds-Color Temp Physical Max Mireds0x0099
0x4010Start Up Color Temperature Miredsuint16-0x210x0000-0xfeff0x0099
0xFFFDCluster Revisionuint16-0x210x0000-0xffff0x0002

Commands

IDNameDirection
0x00Move to HueC->S
0x01Move HueC->S
0x02Step HueC->S
0x03Move to SaturationC->S
0x04Move SaturationC->S
0x05Step SaturationC->S
0x06Move to Hue and SaturationC->S
0x07Move to ColorC->S
0x08Move ColorC->S
0x09Step ColorC->S
0x0aMove to Color TemperatureC->S
0x47Stop Move StepC->S
0x4bMove Color TemperatureC->S
0x4cStep Color TemperatureC->S
Touchlink commissioning cluster

Attributes

IDNameData typeRangeDefault
0xFFFDCluster Revisionuint16-0x210x0000-0xffff0x0001

Commands

IDNameDirection
0x00Scan requestC->S
0x02Device information requestC->S
0x06Identify requestC->S
0x07Reset to factory new requestC->S
0x10Network start requestC->S
0x12Network join router requestC->S
0x14Network join end device requestC->S
0x16Network update requestC->S
Over the air upgrade

Attributes

IDNameData typeRangeDefault
0x0000UpgradeServerIDEUI64 - 0xF0/0xffffffffffffffff
0x0001FileOffsetuint32 - 0x23/0x00000000
0x0002CurrentFileVersionuint32 - 0x23/0x00000040
0x0006ImageUpgradeStatusenum8 - 0x30/0x00
0x0007Manufacturer IDuint16 - 0x21/0x1002
0x0008Image Type IDuint16 - 0x21/0x1602
0x0009MinimumBlockPerioduint16 - 0x21/0x0000
0xfffdClusterRevisionuint16 - 0x210x0000 -0xffff0x0001

Commands

IDNameDirection
0x00Image NotifyS->C
0x01Query Next Image RequestC->S
0x02Query Next Image ResponseS->C
0x03Image Block RequestC->S
0x05Image Block ResponseS->C
0x06Upgrade End RequestC->S
0x07Upgrade End ResponseS->C

常用 DP 与 cluster 对应关系

DPIDDP 含义
1开关
2模式
3白光亮度
4白光色温
5彩光颜色
6情景
8音乐律动
9实时调节
DP1 开关
指令方向Cluster IDATTR IDTypeValue
下发0x0006
  • 0x00:off
  • 0x01:on
--
上报0x00060x0000bool
  • 0:Off
  • 1:On
DP2 模式
指令方向Cluster IDATTR IDTypeValue
下发0x03000xF0:私有指令-
  • 0:白光模式
  • 1:彩光模式
  • 2:场景模式
  • 3:音乐模式
上报0x03000xF000:私有属性uint8
  • 0:白光模式
  • 1:彩光模式
  • 2:场景模式
  • 3:音乐模式
DP3 白光亮度
指令方向Cluster IDATTR IDTypeValue
下发0x00080xF0:私有指令-2 Bytes,范围 0x0000-0x03E8
上报0x00080xF000:私有属性uint162 Bytes,范围 0x0000-0x03E8
DP4 白光色温
指令方向Cluster IDATTR IDTypeValue
下发0x03000xE0:私有指令-2 Bytes,范围 0x0000-0x03E8
上报0x03000xE000:私有属性uint162 Bytes,范围 0x0000-0x03E8
DP5 彩光颜色
指令方向Cluster IDATTR IDTypeValue
下发0x03000xE1:私有指令-
  • H:2 Bytes,范围 0x0000-0x0168
  • S:2 Bytes,范围 0x0000-0x03E8
  • V:2 Bytes,范围 0x0000-0x03E8
上报0x03000xE100:私有属性uint4
  • H:2 Bytes,范围 0x0000-0x0168
  • S:2 Bytes,范围 0x0000-0x03E8
  • V:2 Bytes,范围 0x0000-0x03E8
DP6 情景
指令方向Cluster IDATTR IDTypeValue
下发0x03000xF1:私有指令-数据长度:2 + 8 × n,n 是场景的单元个数,n ≤ 8
上报0x03000xF003:私有属性uint162 Bytes,范围 0x0000-0x03E8

情景 DP 的数据域详细解析,参考 情景 DP

DP8 音乐/DP9 实时调节
指令方向Cluster IDATTR IDTypeValue
下发0x03000xF2:私有指令-11 Bytes

音乐 DP 和实时调节 DP 的 Zigbee 协议相同。

默认心跳

150s-180s 随机上报,上报内容为 App Version。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IoT砖家涂拉拉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值