Skip to content

Latest commit

 

History

History
38 lines (20 loc) · 1.81 KB

device_discover.md

File metadata and controls

38 lines (20 loc) · 1.81 KB

设备发现与查询

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\"}"}