请选择 进入手机版 | 继续访问电脑版

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

 找回密码
 立即注册
查看: 3450|回复: 169

[修仙教程] [MIoT]小米wifi设备通用接入插件【13日更新支持灯调光调色】

  [复制链接]

25

主题

759

帖子

2763

积分

超级版主

Rank: 8Rank: 8

积分
2763
金钱
1984
HASS币
20

教程狂人论坛风云人物

发表于 2020-12-30 15:49:46 | 显示全部楼层 |阅读模式
本帖最后由 27hh 于 2021-1-18 19:09 编辑
1月13日,插件更新,支持light组件!目前已支持调亮度、调色温,预计还会支持场景色调节!

插件地址:https://github.com/ha0y/xiaomi_miot_raw

MIoT 协议是小米智能家居从 2018 年起推行的智能设备通信协议规范,此后凡是可接入米家的设备均通过此协议进行通信。此插件按照 MIoT 协议规范,通过局域网直接与设备通信,实现对设备的状态读取及控制。由于 MIoT 协议具有极强的通用性,一些功能简单的智能设备就可以通过此插件快速高效地接入 Home Assistant,而不必再拘泥于设备型号、不必再等待别人去写插件适配了。

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

  • sensor (传感器,一次性读取设备的多个状态)
  • switch (开关,使设备的某个功能在两个指定状态之间切换,并支持读取设备正处于哪个状态,在设备状态变化时自动刷新)
  • cover (卷帘,用于接入晾衣架、升降帘、窗帘等具有升降或开合功能的设备,目前支持的操作有:升降停、设置指定位置,暂不支持状态反馈,后期会支持)
  • light (灯,可以开关、调亮度、调色、设置灯效)

安装

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

或者

配置文件

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

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

  • host (Required): 设备 IP。
  • token (Required): 设备 token。
  • name (Optional): 设备名称。
  • mapping (Required): 设备的功能与 id 的映射。
  • params (Optional): 对于可以控制的设备,指定其功能状态(如:开/关/升/降/停)与 value 的映射。
  • scan_interval (Optional): 状态刷新周期。

针对 sensor:

  • sensor_property (Required): 把 mapping 中的哪一个作为传感器的状态。其他的将作为传感器的属性。
  • sensor_unit (Optional): 传感器单位。

针对 switch:

该设备类型的 mappingparams 下必须有以下条目:

  • switch_status,插件通过读写这个属性来获取和控制开关状态。其下的 power_onpower_off 指定开和关的状态值。

针对 cover:

该设备类型的 mappingparams 下必须有以下条目:

  • motor_control,插件通过读写这个属性来获取和控制电机状态。其下的 openclosestop 指定升/降/停的状态值。

针对 light:

该设备类型的 mappingparams 下必须有以下条目:

  • switch_status,插件通过读写这个属性来获取和控制灯开关状态。其下的 power_onpower_off 指定开和关的状态值。

可以有以下条目:

  • brightness:设置此项后支持亮度调节。
  • color_temperature:设置此项后支持色温调节。

更新日志

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


关于siid和piid的问题:
“siid”中的“s”是services,代表设备上某一个具体细化的设备,比如风扇灯上的风扇,晾衣架上的灯……
“piid”中的“p”是properties,代表这个具体设备的属性,比如开关,亮度,风速这些既能读取又能控制的;还包括当前功率、运行状态这些只读的属性。
它们都是整数值。而具体的代表含义,则在其specs中给出。

如何获取到设备的specs:

如何使用miiocli进行miot设备命令的调试:
miiocli -d device --ip 设备IP --token 设备token raw_command 'set_properties' '[{"did":"随便写","piid":1,"siid":3,"value":0}]'
命令格式大概如上,尤其需要注意的是后面部分的多个括号层级关系,首先用引号引起整个json来,然后是一个中括号表示列表(因为可以一次性读取或设置多个属性)然后是一个大括号,写一组数据。括号关系弄错的话设备只会返回-9999超时错误,不会告诉你原因,非常坑。

评分

参与人数 17金钱 +161 收起 理由
windgo + 16 厉害了word楼主!
Tam + 1 感谢楼主分享!
a137537763 + 8
MattSmell + 8 赠人玫瑰,手留余香!
kleinsoul + 5 感谢楼主分享!
blackcui + 10 感谢楼主分享!
neoyang + 2
ejohn + 5 感谢楼主分享!
wormshow + 8 感谢楼主分享!
jackkii + 2 感谢楼主分享!
lidicn + 20 厉害了word楼主!
whxciotw + 20 大神666!
hzx1987227 + 16 论坛有你更精彩!
natic + 20 蓝牙设备也能MIoT接入么?
lipwah + 5 厉害了word楼主!
xztxy + 5 感谢楼主分享!及时雨,正好在研究我家的雷.
Jerrylee + 10 感谢楼主分享!

查看全部评分

回复

使用道具 举报

0

主题

6

帖子

87

积分

注册会员

Rank: 2

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

使用道具 举报

60

主题

1497

帖子

5557

积分

论坛元老

Rank: 8Rank: 8

积分
5557
金钱
4015
HASS币
350

活跃会员教程狂人

发表于 2020-12-30 16:00:50 | 显示全部楼层
超级大佬,喝茶。
回复

使用道具 举报

39

主题

2457

帖子

8562

积分

超级版主

Nero

Rank: 8Rank: 8

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

使用道具 举报

5

主题

93

帖子

1050

积分

金牌会员

Rank: 6Rank: 6

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

使用道具 举报

0

主题

90

帖子

340

积分

中级会员

Rank: 3Rank: 3

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

使用道具 举报

3

主题

75

帖子

286

积分

论坛分享达人

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

使用道具 举报

5

主题

93

帖子

1050

积分

金牌会员

Rank: 6Rank: 6

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

目前這裡有整理列表
回复

使用道具 举报

25

主题

759

帖子

2763

积分

超级版主

Rank: 8Rank: 8

积分
2763
金钱
1984
HASS币
20

教程狂人论坛风云人物

 楼主| 发表于 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如何能获知呢?
回复

使用道具 举报

8

主题

83

帖子

337

积分

中级会员

Rank: 3Rank: 3

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

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2021-1-20 14:45 , Processed in 0.153028 second(s), 34 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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