首页 >PC >正文

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

前文介绍了如何通过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

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','siid': 3} ……

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

miot设备属性列表

4. 执行miiocli device --ip 192.168.x.xxx --token xxxxx raw_command get_properties "[{'did': 'power','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','siid': 2,value: true}]"测试属性设置。

{'did': 'power','siid': 3} {'did': 'on_duration','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','siid': 5} {'did': 'electric_current','siid': 5} {'did': 'voltage','siid': 5} {'did': 'electric_power','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,你们不用再改了,按照与前文相同的方法去集成就行了。

未经授权,不得转载

网友评论

验证码 换一张
取 消
暂无评论...
三日内热门评论文章
为您推荐
  • 相关阅读
  • 业界资讯
  • 手机通讯
  • 电脑办公
  • 新奇数码
  • 软件游戏
  • 科学探索