冠榕智能灯光控制协议分析(controller->node) 2


z-wave第一篇,我们用COMMAND_CLASS_BASIC - BASIC_SET控制智能开关。但是智能开关上有两个执行器,我们只能控制其中一路,那么我们如何控制另一路的开关的。在z-wave第二篇,我们分析了智能开关两个按键发送的消息,发现,用的是COMMAND_CLASS_MULTI_CHANNEL - MULTI_CHANNEL_CMD_ENCAP。


查看<<SDS12657-5 - Z-Wave Command Class Specification,A-M.pdf>>这个文档。

可以看到,实际但一个z-wave结点上有多个执行器的时候,实际可以有多个通道来控制的。

COMMAND_CLASS_MULTI_CHANNEL- MULTI_CHANNEL_CMD_ENCAP后面再封装真正的控制指令。比如COMMAND_CLASS_BASIC - BASIC_SET,如下图。


接下来,我们来验证这个事情。

 

1. 在Z-WAVE PC Controller软件选择已配对的智能开关。


从上图中可以看到,我们的智能开关的node id是11,即0x0B。

                                        

2. 向智能开关发送灯光的开闭数据。


分析如下

Command Classes

COMMAND_CLASS_MULTI_CHANNEL

60

Command Name

MULTI_CHANNEL_CMD_ENCAP

0D

Source End Point

controller的结点号,从第一节的那个图中可以看到

01

Destination End Point

经测试,是智能开关上的两个通道

01或02

Command Class

封装的实际命令类COMMAND_CLASS_BASIC

20

Commands

封装的实际命令BASIC_SET

01

Parameter

开关数据

FF或00

 

3. 从Z-WAVE PC Controller软件的log区可以看到如下信息

     

可以看到这帧数据的Series Api编号是0x13。

<<INS12308-6 - Z-Wave 500 Series Appl.Prg. Guide v6.51.03.pdf>>这个手册上找到0x13这条协议,可以看到此条串口协议的整体格式。


并且pData[]里的数据就是第2节分析的所有数据。

nodeID

Z-Wave结点ID

0B

dataLength

 

07

pData[]

 

60  0D  01  01或02  20  01  FF或00

txOptions

 

25

funcID

 

03,这个编号是需要以此递增的,不递增也不影响功能

 

4.在<<INS12350-4 - Serial API Host Appl. Prg.Guide.pdf>>这个手册里找到下图,这是z-wave串口协议的一个整体结构图。


各个字段的说明都可以在这个文档里找到,包括Checksum的计算方式 。

 

 

5.至此,我们就可以组成一个完整的串口报文了。

 

通道1

01 0E 00 13 0B 07 60 0D 01 01 20 01FF 25 03 7B     开

01 0E 00 13 0B 07 60 0D 01 01 20 0100 25 03 84   关


通道2

01 0E 00 13 0B 07 60 0D 01 02 20 01FF 25 03 78       开

01 0E 00 13 0B 07 60 0D 01 02 20 0100 25 03 87      关

 

6.下面我们来分析一下,z-wave结点的反馈信息

上面4条协议的反馈信息均一样。

06  ACK

01 04 01 13 01 E8

01 04 01 13 01 E8

01 04 01 13 01 E8

01 04 01 13 01 E8

01 05 00 13 03 00 EA

01 05 00 13 03 00 EA

01 05 00 13 03 00 EA

01 05 00 13 03 00 EA

上面红色字03是和发送端的funcID匹配的,是依次递增的。

 


01

SOF

04

Length,从上图看length应该不包括checksum????????????

01

RES

13

Series Api编号

01

RetVal

E8

checksum

 

01

SOF

05

Length,从上图看length应该不包括checksum????????????

00

REQ

13

Series Api编号

03

funcID

00

txStatus

E8

checksum

 

如果用z-wave pc controller来发送的话,会在log窗口看到如下信息

 

就是说,z-wave结点反馈的两条数据,需要我们用ACK来回复,否则z-wave结点会重发4次。并且在重发的过程中,我们没法再发送信息给z-wave结点。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值