『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 10857|回复: 11

[技术探讨] 小米网关局域网通信协议探讨

[复制链接]

8

主题

63

帖子

433

积分

中级会员

Rank: 3Rank: 3

积分
433
金钱
370
HASS币
0
发表于 2019-12-19 11:32:23 | 显示全部楼层 |阅读模式
本帖最后由 tangqmxf 于 2019-12-19 11:45 编辑

按照AIOT开发平台上面的说明文档:[url=按照AIOT开发平台上面的说明文档:http://docs.opencloud.aqara.com/development/gateway-LAN-communication/
读设备
使用“read”命令以单播方式发送给网关的UDP 9898端口。用户可以用主动读取各设备的属性状态,网关返回该设备的全部属性信息。
例如:
读取墙壁开关的状态:
{
   "cmd":"read",
   "sid":"xxxxxxxx"   //墙壁开关did
}

网关以单播方式回复,格式如下:
{
   "cmd":"read_rsp",
   "model":"ctrl_neutral2",
   "sid":"xxxxxxxx",
   "params":[{"channel_0":"on"},{"channel_1":"off"}]  
}

———————————————————————————————————————————————
但是问题来了,为何我回复的内容中只有battery_voltage,其他的设备属性值都没有啊!有人遇到过么?
2019-12-19 03:13:04 INFO (SyncWorker_14) [custom_components.refresh_water_leak_sensor.sensor] Update the state...
2019-12-19 03:13:15 DEBUG (SyncWorker_15) [custom_components.refresh_water_leak_sensor.sensor] _send_cmd >> b'{ "cmd":"read","sid":"158d0004117248"}'
2019-12-19 03:13:15 DEBUG (SyncWorker_15) [custom_components.refresh_water_leak_sensor.sensor] _send_cmd resp << {'cmd': 'read_rsp', 'model': 'ctrl_86plug.aq1', 'sid': '158d0004117248', 'params': [{'battery_voltage': 3600}]}
2019-12-19 03:13:15 DEBUG (SyncWorker_15) [custom_components.refresh_water_leak_sensor.sensor] read_ack << {'cmd': 'read_rsp', 'model': 'ctrl_86plug.aq1', 'sid': '158d0004117248', 'params': [{'battery_voltage': 3600}]}
2019-12-19 03:13:15 INFO (SyncWorker_15) [custom_components.refresh_water_leak_sensor.sensor] A______________01: {'cmd': 'read_rsp', 'model': 'ctrl_86plug.aq1', 'sid': '158d0004117248', 'params': [{'battery_voltage': 3600}]}
2019-12-19 03:13:15 INFO (SyncWorker_15) [custom_components.refresh_water_leak_sensor.sensor] Update the state...
2019-12-19 03:13:15 DEBUG (SyncWorker_7) [custom_components.refresh_water_leak_sensor.sensor] _send_cmd >> b'{ "cmd":"read","sid":"158d00040567c2"}'
2019-12-19 03:13:15 DEBUG (SyncWorker_7) [custom_components.refresh_water_leak_sensor.sensor] _send_cmd resp << {'cmd': 'read_rsp', 'model': 'sensor_wleak.aq1', 'sid': '158d00040567c2', 'params': [{'battery_voltage': 3085}]}
2019-12-19 03:13:15 DEBUG (SyncWorker_7) [custom_components.refresh_water_leak_sensor.sensor] read_ack << {'cmd': 'read_rsp', 'model': 'sensor_wleak.aq1', 'sid': '158d00040567c2', 'params': [{'battery_voltage': 3085}]}
2019-12-19 03:13:15 INFO (SyncWorker_7) [custom_components.refresh_water_leak_sensor.sensor] A______________01: {'cmd': 'read_rsp', 'model': 'sensor_wleak.aq1', 'sid': '158d00040567c2', 'params': [{'battery_voltage': 3085}]}


官方说明文档中params应该还会有详细的信息的啊,搞得我获得的数据比心跳上报的数据还少了


纯新手,非科班,求赐教!!!!跪求!!!脱光了跪求!!!脱光了埋雪里跪求!!!




回复

使用道具 举报

6

主题

287

帖子

4151

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4151
金钱
3859
HASS币
0
发表于 2019-12-19 12:04:08 | 显示全部楼层
建议放弃小米网关吧,已经开始封闭局域网协议了。还是用zigbee2mqtt吧,纯纯纯的局域网通讯
回复

使用道具 举报

10

主题

270

帖子

2261

积分

超级版主

Rank: 8Rank: 8

积分
2261
金钱
1971
HASS币
61

教程狂人

QQ
发表于 2019-12-19 12:41:27 | 显示全部楼层
我看它上面有 "report" 指令,你可以试试 "report" 指令啊
回复

使用道具 举报

8

主题

63

帖子

433

积分

中级会员

Rank: 3Rank: 3

积分
433
金钱
370
HASS币
0
 楼主| 发表于 2019-12-19 13:00:07 | 显示全部楼层
893399065 发表于 2019-12-19 12:41
我看它上面有 "report" 指令,你可以试试 "report" 指令啊

"report" 指令是网关向你发送消息的时候用的指令额~~~
回复

使用道具 举报

8

主题

63

帖子

433

积分

中级会员

Rank: 3Rank: 3

积分
433
金钱
370
HASS币
0
 楼主| 发表于 2019-12-19 13:01:08 | 显示全部楼层
Roger 发表于 2019-12-19 12:04
建议放弃小米网关吧,已经开始封闭局域网协议了。还是用zigbee2mqtt吧,纯纯纯的局域网通讯 ...

主要是已经有一堆的小米网关设备了,而且自制的zigbee网关主要是没壳子,不好看额~
回复

使用道具 举报

3

主题

321

帖子

2893

积分

论坛积极会员

积分
2893
金钱
2572
HASS币
10
发表于 2019-12-19 15:09:21 | 显示全部楼层
我看了下PyXiaomiGateway的库,貌似并没有什么特别的操作呀,是不是网关真的封闭了?
库的github:https://github.com/Danielhiverse ... gateway/__init__.py
回复

使用道具 举报

3

主题

321

帖子

2893

积分

论坛积极会员

积分
2893
金钱
2572
HASS币
10
发表于 2019-12-19 16:19:55 | 显示全部楼层
本帖最后由 tcwj2008 于 2019-12-19 16:24 编辑

我又试了一下,read是可以读取设备信息的
比如
{"cmd":"read_ack","model":"plug","sid":"158d0001138888","short_id":45060,"data":"{"voltage":3600,"status":"off","inuse":"0","power_consumed":"241323","load_power":"0.00"}"}
你那个没读出来可能是网关并不能通过read读设备的其他信息,可能是通过report或者心跳来主动发送信息的吧。或者,你的是1代网关??
或者你的子设备贴牌是不是quara的?不是小米的?
我这里plug,sensor_ht,ctrl_neutral2, magnet,curtain都是可以正常读出来的
回复

使用道具 举报

25

主题

416

帖子

3027

积分

元老级技术达人

积分
3027
金钱
2601
HASS币
40
发表于 2019-12-20 21:23:15 | 显示全部楼层
Roger 发表于 2019-12-19 12:04
建议放弃小米网关吧,已经开始封闭局域网协议了。还是用zigbee2mqtt吧,纯纯纯的局域网通讯 ...

我家网关灯用hass控制不了(hass显示开,实际并没开) 是不是就是这玩意闹的?
回复

使用道具 举报

17

主题

800

帖子

5738

积分

论坛元老

Rank: 8Rank: 8

积分
5738
金钱
4933
HASS币
0
发表于 2019-12-20 21:43:24 | 显示全部楼层
Roger 发表于 2019-12-19 12:04
建议放弃小米网关吧,已经开始封闭局域网协议了。还是用zigbee2mqtt吧,纯纯纯的局域网通讯 ...

老网关还是可以的,网关下的设备小爱操作方便,不用折腾。
zigbee2mqtt和老网关可以互补。
亮度温湿度这类不要求实时的,其实新网关通过HK接进去也可以。

目前就是看粗粮会不会停产老网关了,要真停产了,估计买两个存着- -!
回复

使用道具 举报

8

主题

63

帖子

433

积分

中级会员

Rank: 3Rank: 3

积分
433
金钱
370
HASS币
0
 楼主| 发表于 2019-12-21 14:37:36 | 显示全部楼层
tcwj2008 发表于 2019-12-19 16:19
我又试了一下,read是可以读取设备信息的
比如
{"cmd":"read_ack","model":"plug","sid":"158d0001138888", ...

我用的空调伴侣2升级版做的网关,read空调伴侣的开关、功率等数据是有的,但是子设备的数据都报的电池信息
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-25 16:25 , Processed in 1.263773 second(s), 33 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表