冠榕智能灯光控制协议分析(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結點。
總結
以上是生活随笔為你收集整理的冠榕智能灯光控制协议分析(controller-node) 2的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《黑袍纠察队》第三季首播IGN评分8分
- 下一篇: CMake PROJECT_BINARY