智能家居 篇五:米家miot设备接入HA

2021-01-18 17:22:15 16点赞 89收藏 31评论

前文介绍了如何通过xiaomi_miio_raw插件将暂未支持的米家设备接入HA,但用相同方法去接入米家智能插座2蓝牙网关版时会吃瘪,因为智能插座2采用了一套新的协议,插件暂未跟上。之前的协议叫miio,新的协议叫miot,两者内部实现变化较大,但在局域网控制这块保持了一定的兼容性,其实对插件做出少量修改就能支持miot协议。本文介绍如何将米家miot设备接入HA。

小米米家智能插座2蓝牙网关版电量统计蓝牙网关过载保护独立安全门阻燃壳体49元京东去购买

在miio中,可以通过get_prop "['on', 'bright', 'ct']"方法获取开关、亮度、色温等属性,通过set_power、set_bright、set_ct等方法设置开关、亮度、色温属性,属性名和方法名杂乱无章,没有一个统一的地方查询。而miot改用了一套更科学的方法管理设备的属性,通过get_properties获取属性、set_properties方法设置属性。下面以智能插座2为例介绍miot设备接入HA的方法,该方法同样适用于其他米家miot设备。

1. 老规矩,米家设备接入HA,首先得获取设备token,可以通过Xiaomi Gateway 3集成获取。

获取设备token获取设备token

2. 打开http://miot-spec.org/miot-spec-v2/instances?status=all ,查找上图显示的设备型号chuangmi.plug.212a01,得到该设备在米家miot中的类型名。{"status":"released","model":"chuangmi.plug.212a01","version":1,"type":"urn:miot-spec-v2:device:outlet:0000A002:chuangmi-212a01:1"}

3. 将类型名拼到https://miot-spec.org/miot-spec-v2/instance?type= 后面访问,例如智能插座2 ,获得该设备支持的属性列表。提取并整理一下,得到{'did': 'power', 'piid': 1, 'siid': 2} {'did': 'temperature', 'piid': 6, 'siid': 2} {'did': 'indicator_light', 'piid': 1, 'siid': 3} ……

miot设备属性列表miot设备属性列表

4. 执行miiocli device --ip 192.168.x.xxx --token xxxxx raw_command get_properties "[{'did': 'power', 'piid': 1, 'siid': 2}]"测试属性(ip、token见第1步,[]中间的属性id见第3步),过滤掉无法获取的属性,最终我们发现智能插座2可以获取以下12个属性,进一步测试发现,一次get_properties最多可操作10个属性。结合米家APP的界面展示,我们可以确定,siid:2 piid:1控制插座电源,siid:3 piid:1控制指示灯,siid:5 piid:6的结果除以100就是功率。可进一步用miiocli device --ip 192.168.x.xxx --token xxxxx raw_command set_properties "[{'did': 'power', 'piid': 1, 'siid': 2, value: true}]"测试属性设置。

{'did': 'power', 'piid': 1, 'siid': 2} {'did': 'temperature', 'piid': 6, 'siid': 2} {'did': 'indicator_light', 'piid': 1, 'siid': 3} {'did': 'on_duration', 'piid': 1, 'siid': 4} {'did': 'off_duration', 'piid': 2, 'siid': 4} {'did': 'countdown', 'piid': 3, 'siid': 4} {'did': 'task_switch', 'piid': 4, 'siid': 4} {'did': 'countdown_info', 'piid': 5, 'siid': 4} {'did': 'power_consumption', 'piid': 1, 'siid': 5} {'did': 'electric_current', 'piid': 2, 'siid': 5} {'did': 'voltage', 'piid': 3, 'siid': 5} {'did': 'electric_power', 'piid': 6, 'siid': 5}

5. 至此可以确定,至少python miio这个库及miiocli这个工具是兼容miot协议的,是否就意味着可以用xiaomi_miio_raw集成来接入HA呢?很遗憾,xiaomi_miio_raw对get_properties未做兼容,且它一次获取15个属性,不修改代码是不行的。向作者提了issue,但看这情况,远没有自己改代码来得快,所以还是自己改好反哺吧。目前xiaomi_miio_raw已合入了我的修改,可以继续用这个插件按下面的步骤将miot设备接入HA了。

6. 与前文类似,先在configuration.yaml中定义一个支持获取属性和调用服务的sensor。

米家miot设备接入HA

7. 然后用template将功率包装成可直观查看的sensor,并包装出一个可控制电源通断的switch。

米家miot设备接入HA

8. 至此就完成了智能插座2接入HA,可控制电源通断、查看功率、也可查看其它暂时意义不明的属性。

总的来说与前文区别不大,唯一的区别就是xiaomi_miio_raw暂未支持,需要修改代码,不过我已经改好并提交了PR,你们不用再改了,按照与前文相同的方法去集成就行了。

未经授权,不得转载
展开 收起

MIJIA 米家 MJZNCL02LM 锂电池版 智能窗帘 白色

MIJIA 米家 MJZNCL02LM 锂电池版 智能窗帘 白色

999元起

MIJIA 米家 智能开关 双开单控 白色

MIJIA 米家 智能开关 双开单控 白色

69元起

MIJIA 米家 智能插座2 蓝牙网关版 白色

MIJIA 米家 智能插座2 蓝牙网关版 白色

46.9元起

小米 米家智能浴霸Pro 浴室卫生间暖风照明 八合一空调式智能恒温 多功能 无线蓝牙遥控免布线

小米 米家智能浴霸Pro 浴室卫生间暖风照明 八合一空调式智能恒温 多功能 无线蓝牙遥控免布线

659元起

MIJIA 米家 MJGJDO1YL 显示器屏幕挂灯 黑色

MIJIA 米家 MJGJDO1YL 显示器屏幕挂灯 黑色

167元起

MIJIA 米家 米家台灯1S LED智能台灯 白色

MIJIA 米家 米家台灯1S LED智能台灯 白色

137元起

MIJIA 米家 AI01ZM 小爱智能闹钟 灰色

MIJIA 米家 AI01ZM 小爱智能闹钟 灰色

112元起

MIJIA 米家 MJYDOAYL 自动感应夜灯 白色

MIJIA 米家 MJYDOAYL 自动感应夜灯 白色

12.89元起

MIJIA 米家 DGNW02LM 升级版 多功能网关

MIJIA 米家 DGNW02LM 升级版 多功能网关

129元起

MIJIA 米家 WXKGO1LM 智能开关 白色

MIJIA 米家 WXKGO1LM 智能开关 白色

34元起

MIJIA 米家 SJWSO1LM 水浸卫士 白色

MIJIA 米家 SJWSO1LM 水浸卫士 白色

44元起

MIJIA 米家 智能插座 ZigBee版

MIJIA 米家 智能插座 ZigBee版

53.8元起

MIJIA 米家 LYWSD02MMC 电子温湿度计

MIJIA 米家 LYWSD02MMC 电子温湿度计

66元起

支持小米小爱语音控制WiFi智能机械手zigbee水燃气阀门控制

支持小米小爱语音控制WiFi智能机械手zigbee水燃气阀门控制

186元起

小米米家门窗传感器门窗防盗智能家庭套装报警器远程手机控制网关控制智能联动门窗感应器

小米米家门窗传感器门窗防盗智能家庭套装报警器远程手机控制网关控制智能联动门窗感应器

49元起

MIJIA 米家 WXKG01LM 无线智能开关 白色

MIJIA 米家 WXKG01LM 无线智能开关 白色

37.83元起

文中相关商品

京东 MI 小米 ZNCZ07CM 智能插座 蓝牙网关版
31评论

发表评论请 登录
  • 最新
  • 最热
评论举报

请选择举报理由

相关好价推荐
查看更多好价

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
89
扫一下,分享更方便,购买更轻松