27hh
#1
robot编辑:
- 使用教程在二楼;
- 使用过程中有疑问加27hh大神的qq交流群:982100289。
通过密码是:ha0y
正文:
感谢萝卜哥的盛情邀请,下面向大家介绍这款小米米家设备通用接入插件:Xiaomi MIoT Raw。
插件地址:https://github.com/ha0y/xiaomi_miot_raw
介绍
MIoT协议相信大家已经不陌生了,它是小米继miio后推出的另一个米家智能设备通信规范,用以取代miio。MIoT与miio相比,其最大的优势就在于它极强的标准性和通用性。以往的米家智能家居设备,要分析其网络通信往往需要抓包分析,而且不同设备的不同属性,其操作方式各不相同,所以即使是相同品牌的设备,已有的插件也经常不能通用。
而小米推出MIoT协议后,设备的各项属性都有极强的通用性,并且直接向用户开放,用户可以直接读取,这就让通用接入、甚至是自动接入成为了可能。在这种环境下,本插件诞生了。
安装
- 将 custom_component 文件夹中的内容拷贝至自己的相应目录
或者
配置
本插件同时支持UI 配置和文件配置两种方式,分别适合初级用户和高级用户。
UI配置的好处是方便快捷,同时支持自动识别接入。只需在“添加集成”页面中搜索“Xiaomi MIoT”(注意与另一位大佬的插件区分,可通过大小写辨认),即可进入配置向导。
首次使用建议选择“登录小米账号”,登录成功后,遇到不支持本地接入的设备,就可以云端接入了。当然您也可以不登录,支持您手动输入账号的token等信息。
然后选择“接入设备”,之后按照提示操作即可。如果提示“已经自动发现配置参数”,一般是无需修改的。
如果提示“未能自动发现配置参数”,并不是设备不支持,只是作者没有适配自动配置,你仍然可以手动配置。
文件配置的好处是稳定性更强、配置更直观,同时设备不会被别人从前端轻易删除。
文件配置请直接参考“样例文件”,相信您很快就能搞明白每一项是什么意思。
一起来改善这个插件!
我深知自己在设备、能力、精力上都是有限的,一个人无法适配越来越多的设备、越来越复杂的需求。
本插件开发过程中,尽量不采用复杂的编程模式(说到底其实是自己编程能力太菜……),变量和方法命名尽量清晰直观,模块划分尽量清晰,使贡献者能尽可能清楚地了解插件的工作过程。
以下是插件工作原理的说明。如果您希望改善本插件,此说明可能对您有所帮助。初级用户可忽略此部分。
-
对于每个设备,其核心参数是 mapping 和 params(后者是我自己起的名字,只适用于本插件)。
-
mapping 是设备功能与其接口的对应关系。本插件定义mapping的数据结构形如:{did:{siid:siid, piid:piid}}
。其中的did是设备id,在本地控制时可以为任意值,并且设备返回信息时会原样返回这个值。利用这个特性,我把它作为属性的直观命名来使用。
-
params 指定mapping中的每个项目自己的属性,例如取值范围、数值修正方式等信息。
-
本插件支持的“单设备多实体”实现方式如下:
- (1) 功能较多的设备(如晾衣架、加湿器)作为主设备(只有一个),功能单一的设备(如开关、灯)作为子设备(可以多个)。
- (2) 主设备和子设备的所有属性统一由主设备一次性读取,子设备再从主设备获取自己的状态。
- (3) 控制主设备时,主设备直接发送网络请求。控制子设备时,主设备代为发送网络请求。
-
本插件的自动识别逻辑全部在插件配置时完成,然后转换成与文件配置相同的格式存储起来,不会改变。因此稳定性可以保证。
-
自动识别逻辑全部在“miot_device_adapter.py”文件中。欢迎您优化此文件,实现更多设备的自动配置!
如果您有能力的话,欢迎对本项目提交PR!
robot
#2
Xiaomi MIoT
简体中文 | English
MIoT 协议是小米智能家居从 2018 年起推行的智能设备通信协议规范,此后凡是已接入米家的设备均可通过此协议进行通信。此插件按照 MIoT 协议规范与设备或服务器通信,实现对设备的状态读取及控制。
由于 MIoT 协议具有极强的通用性,已接入米家的智能设备均可通过此插件快速高效地接入 Home Assistant,而无关设备的具体型号。
本插件具有本地(局域网)和云端两种工作方式。两种方式结合,可以接入绝大多数米家智能设备(包括蓝牙、蓝牙 Mesh 和 ZigBee 设备)。
目前此插件已支持以下设备类型:
- sensor (传感器类设备,涵盖设备所有可读取的信息)
- switch (开关/插座及其他所有可以开关的设备)
- light (灯,包括吸顶灯/风扇灯/台灯/设备的指示灯,
等灯等灯)
- cover (电机类设备,卷帘/晾衣架/升降帘/窗帘)
- fan (风扇)
- humidifier (加湿器/除湿器)
- media player (小爱音箱,可以播放/暂停/调音量,上一曲/下一曲,TTS/执行自定义指令)
- climate (空气调节类设备,空调/空调伴侣/电暖气)
- water heater (热水器/电水壶/洗碗机)
- 部分智能门锁
- 其他不能按照 HA 的设备类型分类的设备 (洗衣机、咖啡机、鱼缸等等)
如果对您有帮助,欢迎给个 Star!
如果插件工作不正常,请先参考调试部分,打开调试日志,通过日志排查问题。
如果您认为插件有 bug,或者有新功能的想法,或者您的设备没有支持,您可以提交 Issue。
使用上的问题,请在论坛咨询,或加入 QQ 群: 982 100 289
安装
- 将 custom_component 文件夹中的内容拷贝至自己的相应目录
或者
配置
UI 配置法
登录账号(点击我看图)
逐一自动添加设备(点击我看图,推荐)
批量添加设备(建议用来添加非 WiFi 设备)
文件配置法
文件配置法已废弃,新特性不再适配文件配置法,建议不要使用
请参考 config_example 文件夹 内的相关文件
常见问题
安装以后,搜索不到集成?
确保安装后已重启 Home Assistant。由于浏览器缓存原因,可能仍然不能搜索到集成,请尝试清空浏览器缓存。如果仍然无效,尝试通过其他浏览器进行配置。
提示设备不受支持,怎么办?
不要灰心。绝大多数已接入米家的设备都是可以支持的,只是作者还没有适配。请提交 Issue,附上设备的 model。同时请加入 QQ 群,如果作者遇到问题需要进一步提供信息,会通过 QQ 联系你。
为什么不支持摄像机?
本插件是一个“通用插件”,因此极少包含与特定设备有关的代码。而小米仅仅未对摄像机的标准进行统一,设备厂商各行其是。经过逆向小爱音箱上的“米家”APP 发现,即使是这样一个功能残缺的客户端,为了实现摄像机的播放,也集成了所有摄像机设备厂商的 SDK。因此可以认为,摄像机各家厂商的标准、协议、通信都不统一,无法做到通用适配。因此摄像机无法支持。
本插件能否实现“断网联动”?
如果设备未通过云端接入(读取、控制均不走云端),通过本插件接入的设备在断网条件下可以正常被读取和控制。如果使用了云端接入,则不可以。(注:断网指的是断开互联网,局域网正常。局域网若中断则所有设备均不能工作。)
更新日志
4 月 10 日
- 支持洗衣机的更多设置选项。
- 优化设备详情页状态属性展示。
- 支持卷帘“反转位置百分比”功能。
4 月 6 日
- 支持风扇无级调速(需设备支持并将 HA 更新到 2021.3.0 以上版本)
- 修复本地接入设备动作列表执行失败的问题。
4 月 5 日
- 支持鱼缸。
- 修复 cover 状态反馈不正确的问题。
4 月 2 日
- 修复本地设备状态经常出现“不可用”的问题。
- 优化新设备的默认名称。
- 支持批量添加设备(实验中)
3 月 30 日
- 支持门锁!
3 月 26 日
- 优化代码结构。
- 优化状态属性显示。
- 优化添加设备体验。
- 修复部分热水器不可用问题。
3 月 23 日
- 修复部分设备支持本地读取但读取失败的问题。
- 部分设备的状态属性可以显示名称而不是编号。
3 月 22 日
- 支持部分新设备类型。
- 修复依赖版本导致的问题。
3 月 19 日
- 修复部分除湿机问题 #75
3 月 17 日
- 支持新风机辅热。
- 修复部分加湿器的湿度调节。
- 支持电水壶。
- 修复非 WiFi 设备问题 #61
3 月 16 日
- 优化设备离线的处理方式。
3 月 14 日
- 支持水质传感器。
- 支持 water heater 设备类型,可以接入热水器了。
3 月 8 日
- 支持设备童锁、指示灯开关。(在选项中启用)
3 月 5 日
- 优化网络状况不佳时的报错逻辑,避免日志中出现大量 ERROR。
3 月 3 日
- 优化云端接入性能。
2 月 28 日
- 优化洗衣机接入。
2 月 22 日
- 空调支持更多功能。
- 支持传感器将属性展开为实体。(在选项中设置)
2 月 21 日
- 支持空调设备指定其他实体作为环境温度来源。
2 月 18 日
- 采用新的实体 ID 格式,不再受设备名称影响。
- 优化非 WiFi 设备接入。
2 月 16 日
- 大幅优化添加设备流程,部分设备在登录账号后可以实现零输入接入。
- MIoT 云端接入扩展到所有已接入米家的设备,包括:
- 不在局域网中的设备
- 蓝牙、蓝牙 Mesh 和 ZigBee 设备
- 他人共享给自己的设备
- 优化启动时子设备的等待时间。
2 月 14 日
- 支持 climate 设备类型,可以接入空调、空调伴侣等设备了。
- 支持晾衣架的烘干功能。
2 月 9 日
- 支持传感器自动加单位。
- 增加小爱“播报指定文本”和“执行指定指令”服务。
2 月 8 日
- 支持小爱音箱从 UI 配置。
- 支持洗衣机等设备的 action 调用。
2 月 6 日
- 支持小爱音箱。
2 月 3 日
- 支持了一个设备多种类型的自动配置,现在像风扇灯、晾衣架这类具有子设备的设备,可以自动识别、一次性接入。
- 由于 1 的原因,插件内部数据存储方式发生较大变化,部分设备需要删除重新配置,需要重新配置的设备已在通知栏中写明;文件配置的设备不受影响。
- 大幅提高了自动识别的准确性。
1 月 31 日
- 现已支持部分设备类型的自动配置。
- 修复大量 bug。
- 支持 humidifier。
1 月 28 日
- 支持 UI 配置!
1 月 26 日
- 支持 RGB 灯。
1 月 25 日
- 更新米家服务器请求方法,自动生成设备状态请求。
1 月 23 日
- 支持从米家服务器读取状态,以解决部分设备通过局域网读取时出现 -9999 或 -4004 错误的问题!
- 支持 fan 设备类型,可以接入风扇了。
1 月 18 日
- 使调试日志内容更加详细,方便排查问题。
1 月 13 日
- 支持 light 设备类型,可以接入智能灯,并调光调色了!
- 支持灯内置的场景色选择
1 月 12 日
- 数值修正的方法变更为
params
下 value_ratio
配置项。
- 重构代码,大幅优化代码结构,为扩展设备类型做准备。
- 本次更新后,涉及本插件的部分实体会重新生成,其 ID 带有后缀
_2
,原实体不再可用。请删除之前的实体,然后把新实体的实体 ID 修改去除 _2
即可,历史记录和原有功能不受影响。
- 开关类型的实体在检测到不支持状态反馈后,会创建无状态反馈的实体用于控制。
1 月 11 日
- 现在 switch 也可以像 sensor 一样把设备的属性值显示在 state attribute 中了。此类设备无需再配置 sensor,直接将以前 sensor 配置的 mapping 内容合并进来即可,减少一半的网络请求。
针对“小米智能插座2 蓝牙网关版”的功率没有小数点的问题,设计了一个“power_100”的 mapping 对数值进行修正。
1 月 6 日
- 支持 cover 设备类型,现在可以接入窗帘、晾衣架等设备了
- 为了使多种设备的配置文件格式统一、方便后期拓展更多类型的设备,对配置文件格式进行了较大调整,新版本不再兼容以前的格式,请在升级时注意适配
- 优化代码结构及调用方式,响应更快了
调试
如果组件工作不正常,通过修改配置文件提升日志调试级别:
# configuration.yaml
logger:
default: warn
logs:
custom_components.xiaomi_miot_raw: debug
miio: debug
skip
#5
米家蓝牙温湿度计2 云接入了,但是不能在homekit中显示温度