2024年11月23日星期六 下午6:04:35

[discovery]绿米局域网通信协议原理(绿米网关自动发现)

2 年 前
#3463 引用
绿米局域网通信协议

1. 绿米局域网通信协议

绿米局域网通信协议就是一套API,用于对网关及其下属ZigBee子设备(传感器、控制器等)进行管理。绿米局域网通信协议有两个互不兼容的版本:

绿米局域网通信协议1.X,最新版本为1.1.1(2017.12.21)。
绿米局域网通信协议2.X,最新版本为2.0.1(2018.05.18)。
按照一般理解,1.X版本的协议,主要用于米家品牌的设备;而2.X版本的协议,主要用于Aqara品牌的设备。目前来说,这两个协议,其实差别并不大,所以PyXiaomiGateway同时提供了对这两个协议的支持。


https://bbs.hassbian.com/thread-4315-1-1.html

https://github.com/aleung/aqara-local-network-api/blob/master/device_discover.md
0
1 年 前
#20560 引用
aqara网关局域网通信协议V1.0

如需使用多功能网关,请参考网关局域网通信协议V1.0


绿米网关局域网通信协议V1.0.7_2017.05.25_01.doc
https://github.com/eltonfan/aqara-dotnet-sdk/blob/master/doc/%E7%BB%BF%E7%B1%B3%E7%BD%91%E5%85%B3%E5%B1%80%E5%9F%9F%E7%BD%91%E9%80%9A%E4%BF%A1%E5%8D%8F%E8%AE%AEV1.0.7_2017.05.25_01.doc

source:

https://github.com/eltonfan/aqara-dotnet-sdk
0
1 年 前
#20601 引用
1
0
1 年 前
#20602 引用
aqara网关局域网通信协议V2.0

https://blog.csdn.net/weixin_34342992/article/details/86364816

https://blog.csdn.net/weixin_30751947/article/details/95395173

http://docs.opencloud.aqara.cn/development/gateway-LAN-communication/
https://github.com/aqara/opencloud-docs/

绿米网关局域网通信协议V2.0各版本的主要变更内容




更新时间  文档版本  更新日志
2018.07.16  V2.0.2  新增:空调伴侣空调状态上报和控制功能,空调伴侣继电器控制功能;新增:RGB控制器和空调温控器
2018.05.18  V2.0.1  新增:魔方传感器 (sensor_cube.aqgl01)、墙壁插座(ctrl_86plug.aq1)、墙壁开关(ctrl_ln1.aq1)
2017.10.09  V2.0.1  修改:水浸传感器的属性上报
2017.09.20  V2.0.0  修改:基本的JSON格式变更;部分设备的model值和属性名称变更;对于属性的取值类型,模拟量统一取值为数值型。


概述
绿米智能网关支持局域网通讯功能,通过开放局域网通信API,允许开发者通过局域网通信对网关下各ZigBee子设备(传感器、控制器等)进行管理。

相比HTTP通讯,局域网通讯的速度更快,控制延迟更低。但是,局域网对接方式的开发成本更高,需要一台支持开发的第三方网关,并且开发者有嵌入式开发经验。

目前主要开放的API功能有:

发现与查询设备
设备状态上报
0
1 年 前
#20625 引用
aqara网关通信协议V3.0
0
1 年 前
#20626 引用
绿米网关自动发现与查询

https://github.com/aleung/aqara-local-network-api/blob/master/device_discover.md



设备发现与查询
1. 网关设备发现(设备发现不加密)
设备发现用来在局域网中发现网关,使用组播 (ip: 224.0.0.50, peer_port: 4321) ,所有网关收到Whois命令都要应答、回复自己的IP信息:

PC 组播方式 ->网关: {"cmd":"whois"}
网关 单播方式->PC:{"cmd":"iam","ip" : "192.168.0.42","port" : "9898","model" : "gateway",.....}
2. 加密机制
局域网通信采用key加密方式,需要在米家智能家庭APP上对网关设置KEY(使用AES-CBC 128加密,APP下发随机的16个字节长度的字符串KEY)。必须拥有该网关的KEY,才能与该网关进行局域网通信。

注: AES-CBC 128 初始向量定义为:
unsigned char const AES_KEY_IV[16] = {0x17, 0x99, 0x6d, 0x09, 0x3d, 0x28, 0xdd, 0xb3, 0xba, 0x69, 0x5a, 0x2e, 0x6f, 0x58, 0x56, 0x2e};

在米家智能家庭APP中设置KEY的步骤如下:

  

3. 查询子设备id列表
命令以单播方式发送给网关的udp 9898端口,网关以单播方式回复,用来获取网关中有哪些设备(网关返回子设备的设备id)。

PC->网关: {"cmd" : "get_id_list"}
网关->PC: {"cmd" : "get_id_list_ack","sid":"1022780","data":"[\"sid1\",\"sid2\",\"sid3\"]"}
其中的“sid”为网关did

4. 子设备状态上报
以组播方式发送给 (ip: 224.0.0.50, port: 9898) 。当子设备状态发生变化时,子设备会上报状态。例如窗磁上报open/close信息。用户可以拿这个状态去做联动。例如:开窗报警,开窗关空调。

网关->PC:{"cmd":"report","model":"magnet","sid":"89234324","short_id":4343,"data":"{\"status\":\"open\"}"}

0