冠榕智能灯光控制协议分析(controller-node) 2
z-wave第一篇,我們用COMMAND_CLASS_BASIC - BASIC_SET控制智能開關(guān)。但是智能開關(guān)上有兩個(gè)執(zhí)行器,我們只能控制其中一路,那么我們?nèi)绾慰刂屏硪宦返拈_關(guān)的。在z-wave第二篇,我們分析了智能開關(guān)兩個(gè)按鍵發(fā)送的消息,發(fā)現(xiàn),用的是COMMAND_CLASS_MULTI_CHANNEL - MULTI_CHANNEL_CMD_ENCAP。
查看<<SDS12657-5 - Z-Wave Command Class Specification,A-M.pdf>>這個(gè)文檔。
可以看到,實(shí)際但一個(gè)z-wave結(jié)點(diǎn)上有多個(gè)執(zhí)行器的時(shí)候,實(shí)際可以有多個(gè)通道來控制的。
COMMAND_CLASS_MULTI_CHANNEL- MULTI_CHANNEL_CMD_ENCAP后面再封裝真正的控制指令。比如COMMAND_CLASS_BASIC - BASIC_SET,如下圖。
接下來,我們來驗(yàn)證這個(gè)事情。
?
1.?在Z-WAVE PC Controller軟件選擇已配對的智能開關(guān)。
從上圖中可以看到,我們的智能開關(guān)的node id是11,即0x0B。
????????????????????????????????????????
2.?向智能開關(guān)發(fā)送燈光的開閉數(shù)據(jù)。
分析如下
| Command Classes | COMMAND_CLASS_MULTI_CHANNEL | 60 |
| Command Name | MULTI_CHANNEL_CMD_ENCAP | 0D |
| Source End Point | controller的結(jié)點(diǎn)號,從第一節(jié)的那個(gè)圖中可以看到 | 01 |
| Destination End Point | 經(jīng)測試,是智能開關(guān)上的兩個(gè)通道 | 01或02 |
| Command Class | 封裝的實(shí)際命令類COMMAND_CLASS_BASIC | 20 |
| Commands | 封裝的實(shí)際命令BASIC_SET | 01 |
| Parameter | 開關(guān)數(shù)據(jù) | FF或00 |
?
3.?從Z-WAVE PC Controller軟件的log區(qū)可以看到如下信息
??? ?
可以看到這幀數(shù)據(jù)的Series Api編號是0x13。
從<<INS12308-6 - Z-Wave 500 Series Appl.Prg. Guide v6.51.03.pdf>>這個(gè)手冊上找到0x13這條協(xié)議,可以看到此條串口協(xié)議的整體格式。
并且pData[]里的數(shù)據(jù)就是第2節(jié)分析的所有數(shù)據(jù)。
| nodeID | Z-Wave結(jié)點(diǎn)ID | 0B |
| dataLength | ? | 07 |
| pData[] | ? | 60? 0D? 01? 01或02? 20? 01? FF或00 |
| txOptions | ? | 25 |
| funcID | ? | 03,這個(gè)編號是需要以此遞增的,不遞增也不影響功能 |
?
4.在<<INS12350-4 - Serial API Host Appl. Prg.Guide.pdf>>這個(gè)手冊里找到下圖,這是z-wave串口協(xié)議的一個(gè)整體結(jié)構(gòu)圖。
各個(gè)字段的說明都可以在這個(gè)文檔里找到,包括Checksum的計(jì)算方式 。
?
?
5.至此,我們就可以組成一個(gè)完整的串口報(bào)文了。
?
通道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? ?關(guān)
通道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????? 關(guān)
?
6.下面我們來分析一下,z-wave結(jié)點(diǎn)的反饋信息
上面4條協(xié)議的反饋信息均一樣。
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是和發(fā)送端的funcID匹配的,是依次遞增的。
?
| 01 | SOF |
| 04 | Length,從上圖看length應(yīng)該不包括checksum???????????? |
| 01 | RES |
| 13 | Series Api編號 |
| 01 | RetVal |
| E8 | checksum |
?
| 01 | SOF |
| 05 | Length,從上圖看length應(yīng)該不包括checksum???????????? |
| 00 | REQ |
| 13 | Series Api編號 |
| 03 | funcID |
| 00 | txStatus |
| E8 | checksum |
?
如果用z-wave pc controller來發(fā)送的話,會在log窗口看到如下信息
?
就是說,z-wave結(jié)點(diǎn)反饋的兩條數(shù)據(jù),需要我們用ACK來回復(fù),否則z-wave結(jié)點(diǎn)會重發(fā)4次。并且在重發(fā)的過程中,我們沒法再發(fā)送信息給z-wave結(jié)點(diǎn)。
總結(jié)
以上是生活随笔為你收集整理的冠榕智能灯光控制协议分析(controller-node) 2的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《黑袍纠察队》第三季首播IGN评分8分
- 下一篇: CMake PROJECT_BINARY