新人下载app,立即提现现金 您的好友 送你现金 去提现

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

值友7509716043 01-18 17:22 关注

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

在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,你们不用再改了,按照与前文相同的方法去集成就行了。

未经授权,不得转载

展开阅读全文

打开App,享最佳阅读体验

一站式解决

智能家居选购问题

全部评论 (29)
Alone00
2
01-22 17:00

可以试下这个:https://github.com/al-one/hass-xiaomi-miot/tree/auto-miot

blindlight
2
01-18 23:49

https://github.com/ha0y/xiaomi_miot_raw 直接用大佬写的miot通用插件就行了 ,不用绕那么一大圈

余歌唱晚
1
01-18 17:28

膜拜大佬…

石子路口
0
02-21 22:26

大佬是lovelylain吧?关注一波去

值友7509716043
0
02-05 07:21
等彳寺: 想问下蓝牙网关功能是不是不能使用呀 1

是的,蓝牙网关功能是把数据直接透传到服务器,没有暴露给局域网接口

等彳寺
0
02-05 00:01

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

值友7770674057
0
01-26 16:46
值友7770674057: 我有个圈厨油烟机,您能帮我接入的话悬赏300大洋 1
值友7509716043: 先自己用miiocli命令试一下吧,命令能操作就能接入 2
展开隐藏评论
值友7770674057: 这是啥,我去了解一下 谢谢 3
值友7509716043: python miio库自带的一个工具,HA已集成,docker exec -it homeassistant bash进入ha命令行后就能使用 4

谢谢!我差点在宿主系统上安装

头号帅哥
0
01-26 10:39

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

值友7509716043
0
01-26 08:00
值友7770674057: 我有个圈厨油烟机,您能帮我接入的话悬赏300大洋 1
值友7509716043: 先自己用miiocli命令试一下吧,命令能操作就能接入 2
展开隐藏评论
值友7770674057: 这是啥,我去了解一下 谢谢 3

python miio库自带的一个工具,HA已集成,docker exec -it homeassistant bash进入ha命令行后就能使用

值友7770674057
0
01-26 00:30
值友7770674057: 我有个圈厨油烟机,您能帮我接入的话悬赏300大洋 1
值友7509716043: 先自己用miiocli命令试一下吧,命令能操作就能接入 2

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

打开App,查看更多好文和评论
文中商品
最新智能家居优惠
 MIJIA 米家 人体传感器 2
MIJIA 米家 人体传感器 2

入选装修必买小米产品推荐榜单 近30日已发布新低

49元
小米有品 03-01
16 33%
猜你喜欢
查看更多
相关好价
相关商品
查看更多热门商品
社区主页 文章详情
14
74
29
你已经点过赞了
新浪微博 QQ空间 微信好友 豆瓣
当前为触屏版
热门搜索