『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 283696|回复: 337

[修仙教程] 【持续更新优化】小米米家智能设备通用接入HomeAssistant插件

  [复制链接]

32

主题

986

帖子

4233

积分

论坛元老

Rank: 8Rank: 8

积分
4233
金钱
3207
HASS币
110

教程狂人论坛风云人物

发表于 2020-12-30 15:49:46 | 显示全部楼层 |阅读模式
本帖最后由 27hh 于 2021-3-25 22:48 编辑

插件地址:https://github.com/ha0y/xiaomi_miot_raw
详细使用说明:https://bbs.hassbian.com/thread-12009-1-1.html

MIoT 协议是小米智能家居从 2018 年起推行的智能设备通信协议规范,此后凡是可接入米家的设备均通过此协议进行通信。此插件按照 MIoT 协议规范与设备通信,实现对设备的状态读取及控制。

由于 MIoT 协议具有极强的通用性,已接入米家的智能设备均可通过此插件快速高效地接入 Home Assistant,而无关设备的具体型号。

本插件运行方式默认为本地接入(局域网读取/控制),延迟极低。对于不支持本地读取的设备,支持 2 种云端接入(云端读取本地控制/云端读取云端控制)。

目前此插件已支持以下设备类型:

  • sensor (传感器)
  • switch (开关)
  • cover (卷帘/晾衣架/升降帘/窗帘)
  • light (灯,可以开关、调亮度、调色、设置灯效)
  • fan (风扇,可以开关、设置风速、设置摇头)
  • humidifier (加湿器/除湿器,可以开关、设置湿度、选择模式)
  • media player (小爱音箱,可以播放/暂停/调音量,上一曲/下一曲,TTS/执行自定义指令)
  • climate (空调/空调伴侣/浴霸,可以设定温度、风速、模式)

如果插件工作不正常,请先参考调试部分,打开调试日志,通过日志排查问题。

如果您认为插件有 bug,或者有新功能的想法,您可以提交 Issue。
使用上的问题,请在论坛咨询,或加入 QQ 群: 982 100 289

安装

  • 将 custom_component 文件夹中的内容拷贝至自己的相应目录

或者

配置

UI 配置法

HACS中不支持显示图片,请在浏览器中打开查看

文件配置法

请参考 config_example 文件夹 内的相关文件

各个设备类型公用的配置参数:

  • host (Required): 设备 IP。

  • token (Required): 设备 token。

  • name (Optional): 设备名称。

  • mapping (Required): 设备的功能与 id 的映射。

  • params (Optional): 与 mapping 对应,指定关于属性值的一些信息。

  • scan_interval (Optional): 状态刷新周期。

  • sensor_property (Required,仅限 sensor): 把 mapping 中的哪一个作为传感器的状态。其他的将作为传感器的属性。

  • sensor_unit (Optional,仅限 senso): 传感器单位。

  • update_from_cloud 从米家服务器读取设备状态。

mappingparams 中的项目具有对应关系。params 是为了指定关于属性值的一些信息。比如说对于 switch_status,它代表开关状态,这一点是确定的;可是有的设备,值为 1 为开,值为 2 为关;有的设备值为 True 为开,值为 False 为关。这就需要在 params 中指定具体的状态值了。又如,蓝牙网关插座,显示的功率数值没有小数点,实际功率要除以 100;而某品牌插座,同样没有小数点,可实际功率要除以 10……这种问题同样可以在 params 中解决。二者的一些选项:

  • switch_status (Required 适用于 light switch fan): 插件通过读写这个属性来获取和控制开关状态。其下的 power_onpower_off 指定开和关的状态值。
  • motor_control (Required 适用于 cover),插件通过读写这个属性来控制电机状态。其下的 openclosestop 指定升/降/停的状态值。
  • motor_status (Optional 适用于 cover),插件通过读写这个属性来获取电机状态。其下的 openclosestop 指定升/降/停的状态值。注意这些值可能与上面的控制值不同。
  • brightness (Optional 适用于 light):设置此项后支持亮度调节。
  • color_temperature (Optional 适用于 light):设置此项后支持色温调节。
  • oscillate (Optional 适用于 fan):设置此项后支持摇头。
  • speed (Optional 适用于 fan):设置此项后支持风速调节。
  • mode (Optional 适用于 light fan):灯、加湿器等设备的运行模式。

更新日志

2 月 18 日

  1. 采用新的实体 ID 格式,不再受设备名称影响。
  2. 优化非 WiFi 设备接入。

2 月 16 日

  1. 大幅优化添加设备流程,部分设备在登录账号后可以实现零输入接入。
  2. MIoT 云端接入扩展到所有已接入米家的设备,包括:
    • 不在局域网中的设备
    • 蓝牙、蓝牙 Mesh 和 ZigBee 设备
    • 他人共享给自己的设备
  3. 优化启动时子设备的等待时间。

2 月 14 日

  1. 支持 climate 设备类型,可以接入空调、空调伴侣等设备了。
  2. 支持晾衣架的烘干功能。

2 月 9 日

  1. 支持传感器自动加单位。
  2. 增加小爱“播报指定文本”和“执行指定指令”服务。

2 月 8 日

  1. 支持小爱音箱从 UI 配置。
  2. 支持洗衣机等设备的 action 调用。

2 月 6 日

  1. 支持小爱音箱。

2 月 3 日

  1. 支持了一个设备多种类型的自动配置,现在像风扇灯、晾衣架这类具有子设备的设备,可以自动识别一次性接入
  2. 由于 1 的原因,插件内部数据存储方式发生较大变化,部分设备需要删除重新配置,需要重新配置的设备已在通知栏中写明;文件配置的设备不受影响。
  3. 大幅提高了自动识别的准确性。

1 月 31 日

  1. 现已支持部分设备类型的自动配置。
  2. 修复大量 bug。
  3. 支持 humidifier。

1 月 28 日

  1. 支持 UI 配置!

1 月 26 日

  1. 支持 RGB 灯。

1 月 25 日

  1. 更新米家服务器请求方法,自动生成设备状态请求。

1 月 23 日

  1. 支持从米家服务器读取状态,以解决部分设备通过局域网读取时出现 -9999 或 -4004 错误的问题!
  2. 支持 fan 设备类型,可以接入风扇了。

1 月 18 日

  1. 使调试日志内容更加详细,方便排查问题。

1 月 13 日

  1. 支持 light 设备类型,可以接入智能灯,并调光调色了!
  2. 支持灯内置的场景色选择

1 月 12 日

  1. 数值修正的方法变更为 paramsvalue_ratio 配置项。
  2. 重构代码,大幅优化代码结构,为扩展设备类型做准备。
  3. 本次更新后,涉及本插件的部分实体会重新生成,其 ID 带有后缀 _2,原实体不再可用。请删除之前的实体,然后把新实体的实体 ID 修改去除 _2 即可,历史记录和原有功能不受影响。
  4. 开关类型的实体在检测到不支持状态反馈后,会创建无状态反馈的实体用于控制。

1 月 11 日

  1. 现在 switch 也可以像 sensor 一样把设备的属性值显示在 state attribute 中了。此类设备无需再配置 sensor,直接将以前 sensor 配置的 mapping 内容合并进来即可,减少一半的网络请求。
  2. 针对“小米智能插座2 蓝牙网关版”的功率没有小数点的问题,设计了一个“power_100”的 mapping 对数值进行修正。

1 月 6 日

  1. 支持 cover 设备类型,现在可以接入窗帘、晾衣架等设备了
  2. 为了使多种设备的配置文件格式统一、方便后期拓展更多类型的设备,对配置文件格式进行了较大调整,新版本不再兼容以前的格式,请在升级时注意适配
  3. 优化代码结构及调用方式,响应更快了

调试

如果组件工作不正常,通过修改配置文件提升日志调试级别:

# configuration.yaml

logger:
  default: warn
  logs:
    custom_components.xiaomi_miot_raw: debug
    miio: debug

评分

参与人数 26金钱 +223 收起 理由
小天猫 + 2 感谢楼主分享!
homeone + 5 论坛有你更精彩!
gsdv + 2 膜拜大神!
twinsenliang + 5
zhouzhangyu + 2 感谢楼主分享!
jyz_0501 + 20 厉害了word楼主!
dscao + 16 感谢楼主分享!
hundajdx + 5 论坛有你更精彩!
lee869882 + 5 厉害了word楼主!
windgo + 16 厉害了word楼主!
Tam + 1 感谢楼主分享!
a137537763 + 8
MattSmell + 8 赠人玫瑰,手留余香!
kleinsoul + 5 感谢楼主分享!
blackcui + 10 感谢楼主分享!
neoyang + 2
ejohn + 5 感谢楼主分享!
wormshow + 8 感谢楼主分享!
jackkii + 2 感谢楼主分享!
lidicn + 20 厉害了word楼主!

查看全部评分

回复

使用道具 举报

0

主题

12

帖子

219

积分

中级会员

Rank: 3Rank: 3

积分
219
金钱
207
HASS币
0
发表于 2020-12-30 16:00:42 | 显示全部楼层
给你一个star
回复

使用道具 举报

75

主题

1976

帖子

8179

积分

元老级技术达人

积分
8179
金钱
6153
HASS币
430

活跃会员教程狂人

发表于 2020-12-30 16:00:50 | 显示全部楼层
超级大佬,喝茶。
所有过往,皆为序章。
回复

使用道具 举报

40

主题

3056

帖子

1万

积分

超级版主

Nero

Rank: 8Rank: 8

积分
11149
金钱
8042
HASS币
182
发表于 2020-12-30 16:01:08 | 显示全部楼层
不管好不好用,反手先到 github 来个 star 先哈~
Nero
回复

使用道具 举报

6

主题

154

帖子

3336

积分

论坛元老

Rank: 8Rank: 8

积分
3336
金钱
3182
HASS币
10
发表于 2020-12-30 16:04:42 | 显示全部楼层
馬上收藏好評 正好有些 MIOT的設備拿來試試看
感謝樓主大佬
回复

使用道具 举报

1

主题

111

帖子

560

积分

高级会员

Rank: 4

积分
560
金钱
449
HASS币
0
发表于 2020-12-30 16:10:08 | 显示全部楼层
怎样看哪些设备是MIoT
回复

使用道具 举报

19

主题

251

帖子

1138

积分

金牌会员

Rank: 6Rank: 6

积分
1138
金钱
887
HASS币
0
发表于 2020-12-30 16:11:15 | 显示全部楼层
这是真的行家精华贴
回复

使用道具 举报

6

主题

154

帖子

3336

积分

论坛元老

Rank: 8Rank: 8

积分
3336
金钱
3182
HASS币
10
发表于 2020-12-30 16:11:39 | 显示全部楼层
lipwah 发表于 2020-12-30 16:10
怎样看哪些设备是MIoT

目前這裡有整理列表
回复

使用道具 举报

32

主题

986

帖子

4233

积分

论坛元老

Rank: 8Rank: 8

积分
4233
金钱
3207
HASS币
110

教程狂人论坛风云人物

 楼主| 发表于 2020-12-30 16:16:39 | 显示全部楼层
本帖最后由 27hh 于 2020-12-30 16:24 编辑
Jerrylee 发表于 2020-12-30 16:11
目前這裡有整理列表

非常感谢您热心回答大家的问题!
我也想问问:小米miot的设备都会有一个specs的链接,比如 https://miot-spec.org/miot-spec-v2/instance?type=urn:miot-spec-v2:deviceutlet:0000A002:chuangmi-212a01:1  是蓝牙插座的specs。如何获取到这样的链接呢?换言之,设备的urn如何能获知呢?
回复

使用道具 举报

10

主题

103

帖子

487

积分

中级会员

Rank: 3Rank: 3

积分
487
金钱
384
HASS币
0
发表于 2020-12-30 16:19:49 | 显示全部楼层
我的雷士灯,~~马上试试~~~我不要用shell command了~~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-24 11:03 , Processed in 0.093118 second(s), 35 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表