资源描述:
《网关局域网通讯命令-绿米联创》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、网关局域网通讯命令V1.0.4一、设备发现与查询21.网关设备发现(设备发现不加密)22.加密机制23.查询子设备id列表24.子设备状态上报2二、对设备进行读写操作31.读设备32.写设备3三、设备心跳41.网关心跳42.子设备心跳4四、设备上报和控制报文格式4五、传感器上报属性和心跳5a.窗磁传感器5b.人体传感器5c.无线开关传感器5d.智能插座6e.86单火开关单键6f.86单火开关双键7g.86无线开关单键7h.86无线开关双键7i.温湿度传感器:8j.LUMI.LIGHT.RGBW8一、设备发现与查询1.网关设备发现(设
2、备发现不加密)设备发现用来在局域网中发现网关,使用组播(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上对网关设置密钥(使用AES-CB
3、C128加密,app下发随机的16个字节长度的字符串密钥)。若没有设置密钥(即app里设置密钥为空字符串””)则其他人均有权限可以控制网关及其子设备。注:AES-CBC128初始向量定义为:unsignedcharconstAES_KEY_IV[16]={0x17,0x99,0x6d,0x09,0x3d,0x28,0xdd,0xb3,0xba,0x69,0x5a,0x2e,0x6f,0x58,0x56,0x2e};3.查询子设备id列表命令以单播方式发送给网关的udp9898端口,网关以单播方式回复,用来获取网关中有哪些设备(网关返
4、回子设备的设备id)。PC->网关:{"cmd":"get_id_list"}网关->PC:{"cmd":"get_id_list_ack","sid":"1022780","token":"1234567890abcdef","data":"["sid1","sid2","sid3"]"},其中的“sid”为网关did,“token”为网关生成的随机字符串,用于用户生成写设备时的“key”。4.子设备状态上报以组播方式发送给(ip:224.0.0.50,port:9898)。当子设备状态发生变化时,子设备会上报状态。例
5、如窗磁上报open/close信息。用户可以拿这个状态去做联动。例如:开窗报警,开窗关空调网关->PC:{"cmd":"report","model":"magnet","sid":"89234324","short_id":4343,"data":"{"status":"open"}"}二、对设备进行读写操作1.读设备命令以单播方式发送给网关的udp9898端口。用户可以主动读取墙壁开关,插座的属性状态,网关返回设备的全部属性信息。{"cmd":"read","sid":"158d0000123456"}网关以单播方式回复
6、格式:{"cmd":"read_ack","model":"ctrl_neutral2","sid":"158d0000123456","short_id":4343,"data":"{"channel_0":"on","channel_1":"off"}"}2.写设备命令以单播方式发送给网关的udp9898端口。当用户需要控制墙壁开关,插座等设备时使用write命令。{"cmd":"write","model":"ctrl_neutral1","sid":"158d0000123456","short_id":43
7、43,"data":"{"channel_0":"on","key":"3EB43E37C20AFF4C5872CC0D04D81314"}"}网关以单播方式回复格式:{"cmd":"write_ack","model":"ctrl_neutral2","sid":"158d0000123456","short_id":4343,"data":"{"channel_0":"on","channel_1":"off"}"},该write_ack只是代表网关收到了write命令,data里的属性状态为当前
8、的设备最新状态,不是write之后的最终设备状态。最终的设备状态靠report报文进行上报。注:其中的“key”为32个字节长度的字符串。当网关启用了加密模式时,会对该key进行解密并校验,以验证写命令的合法性。该“key”的生成规则