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

2021-01-18 17:22:15 16点赞 96收藏 26评论

前文介绍了如何通过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 米家 MJYDOAYL 自动感应夜灯 白色

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

17.9元起

MIJIA 米家 3 智能温湿度计 白色

MIJIA 米家 3 智能温湿度计 白色

38.81元起

MIJIA 米家 1S 增强版 智能台灯 白色

MIJIA 米家 1S 增强版 智能台灯 白色

159元起

MIJIA 米家 Xiaomi 小米 MIJIA 米家 Xiaomi 小米 MIJIA 米家 智能生态鱼缸

MIJIA 米家 Xiaomi 小米 MIJIA 米家 Xiaomi 小米 MIJIA 米家 智能生态鱼缸

369元起

MIJIA 米家 空调伴侣2 智能插座 白色

MIJIA 米家 空调伴侣2 智能插座 白色

67.9元起

MIJIA 米家 智能宠物喂食器2

MIJIA 米家 智能宠物喂食器2

369.55元起

MIJIA 米家飞利浦台灯3「米家」

MIJIA 米家飞利浦台灯3「米家」

119元起

MIJIA 米家 台灯Pro 读写版 智能台灯 白色

MIJIA 米家 台灯Pro 读写版 智能台灯 白色

249元起

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

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

59.1元起

MIJIA 米家 台灯Lite 智能护眼台灯

MIJIA 米家 台灯Lite 智能护眼台灯

62.9元起

MIJIA 米家 WXKGO1LM 智能开关 白色

MIJIA 米家 WXKGO1LM 智能开关 白色

34.9元起

MIJIA 米家飞利浦读写台灯「米家」

MIJIA 米家飞利浦读写台灯「米家」

314元起

MIJIA 米家蓝牙温湿度计2「米家」

MIJIA 米家蓝牙温湿度计2「米家」

22.56元起

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

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

165元起

MIJIA 米家 MJTS003 蓝牙MESH版 LED筒灯 白色

MIJIA 米家 MJTS003 蓝牙MESH版 LED筒灯 白色

36.9元起

MIJIA 米家 小米 智能跳绳 XMSR-P803

MIJIA 米家 小米 智能跳绳 XMSR-P803

94元起
26评论

  • 精彩
  • 最新
  • 我两个插座不知道为什么在一次homeassistant重启后就不能用了,用的是xiaomi_miio。ip和token都没变,log就是找不到。

    校验提示文案

    提交
    用miiocli工具测试下,能命令行实现查询和设置属性就能用miio raw插件接入HA

    校验提示文案

    提交
    收起所有回复
  • 为什么不用zigbee版,用不着搞这些协议插件,还更稳定

    校验提示文案

    提交
    是的zigbee稳定,窗帘电机我就买了更贵的zigbee版,插座原本也打算买zigbee的,但停产买不到了啊,就买了新出的蓝牙网关版,更便宜,意外发现还挺好用的

    校验提示文案

    提交
    小米为了降低价格,彻底抛弃zigbee了,手头前两年囤的还有两个,也是最近才发现停产了,闲鱼上看到有卖小米插座zigbee模块的,一个15准备搞两个玩玩

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 大佬,什么时候开贴讲一下如何编写插件啊。。。

    校验提示文案

    提交
    我只参考miio_raw写过一个broadlink_raw插件,所以这块我也没啥经验

    校验提示文案

    提交
    收起所有回复
  • 可以私发一下配置吗?

    校验提示文案

    提交
    项目github首页有,另外最近似乎有个项目支持自动配置,你可以试试

    校验提示文案

    提交
    收起所有回复
  • 我有个圈厨油烟机,您能帮我接入的话悬赏300大洋

    校验提示文案

    提交
    先自己用miiocli命令试一下吧,命令能操作就能接入

    校验提示文案

    提交
    这是啥,我去了解一下 谢谢

    校验提示文案

    提交
    还有2条回复
    收起所有回复
  • 膜拜大佬…

    校验提示文案

    提交
  • 不明觉厉。。

    校验提示文案

    提交
  • 厉害了,慢慢研究一下

    校验提示文案

    提交
  • 我看不懂的都点值! [喜极而泣]

    校验提示文案

    提交
  • 想问下蓝牙网关功能是不是不能使用呀

    校验提示文案

    提交
  • 大佬是lovelylain吧?关注一波去

    校验提示文案

    提交
  • 楼主问一下,文章中提到的hacs插件,不管是直接在hacs中安装还是拷贝custom components文件,都可以在hacs integration中显示安装成功,但是没有办法在hass 配置 -集成中搜索到。这个问题有解决方案吗?清理缓存换浏览器都试过了,其他的比如gateway插件就可以正常在集成中显示

    校验提示文案

    提交
  • 感谢大佬分享!

    校验提示文案

    提交
提示信息

取消
确认
评论举报

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

相关文章推荐

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