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

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

 找回密码
 立即注册
查看: 967|回复: 20

[HomeKit] 通过HomeKit接入Aqara 空调伴侣P3的方法

[复制链接]

1

主题

11

帖子

134

积分

论坛分享达人

积分
134
金钱
118
HASS币
0
发表于 2020-8-18 03:41:54 | 显示全部楼层 |阅读模式
本帖最后由 raysonx 于 2020-8-22 14:07 编辑

新入坑智能家居设备,前几天买了Aqara新出的空调伴侣P3(Zigbee 3.0版),结果发现用 HomeKit Controller 反向接入 Home Assistant 无法识别空调遥控器。经过一番搜索和调试,发现空调伴侣P3在 Home Assistant 中的设备类型是 heater-cooler,而 HomeKit Controller 只支持早期的 thermostat 类型的climate设备。
于是动手修改代码,在 HomeKit Controller climate 代码基础上增加了对heater-cooler的支持,目前一切使用正常。

代码已提交给Home Assistant社区,但愿能被接受。有需要的朋友们可以手动打一下我的补丁:
- https://github.com/home-assistant/core/pull/38979
- https://github.com/Jc2k/aiohomekit/pull/18
提前手动打补丁的方法 (注意:执行这些命令会同时升级你的home assistant到最新的开发版本,因为不是稳定版可能会有未知的问题,建议提前备份config文件夹):
一、如果你用的是Docker版:
1. 先执行 `docker ps` 得到正在运行的容器名或者ID。
2. 然后 `docker exec -ti 容器名或ID bash` 进入容器的shell。
3. 执行下面的命令打补丁 (国内直接访问GitHub如果没有代理很慢)
pip3 install git+https://github.com/home-assistant/[email protected]/pull/38979/head

4. `exit` 退出容器的shell
5. `docker commit 容器名或ID homeassistant/home-assistant:stable` 保存对容器的更改。`homeassistant/home-assistant:stable`是你用的image名。
6. 重启 Docker 容器 (`docker restart 容器名`)

二、如果你是直接用pip3安装的:1. 先确认一下你的Home Assistant是否安装在虚环境(venv)里。如果是,需要先执行 `source 虚环境文件夹/bin/activate`激活虚环境。
2. 执行下面的命令打补丁 (国内直接访问GitHub如果没有代理很慢)
pip3 install git+https://github.com/home-assistant/[email protected]/pull/38979/head

3. 重启 home assistant

效果:




Screen Shot 2020-08-18 at 2.34.10 AM.png
Screen Shot 2020-08-18 at 2.32.00 AM.png
Screen Shot 2020-08-18 at 2.31.48 AM.png

评分

参与人数 3金钱 +37 收起 理由
a1007812524 + 5 厉害了word楼主!
jyz_0501 + 20 支持原创和造福广大坛友!!
咸味土豆 + 12 厉害了word楼主!

查看全部评分

回复

使用道具 举报

5

主题

32

帖子

386

积分

中级会员

Rank: 3Rank: 3

积分
386
金钱
354
HASS币
10
发表于 2020-8-18 21:05:11 | 显示全部楼层
绿米后面出的产品标配homekit了,很可能不再开放局域网协议,有需要的就入了
回复

使用道具 举报

1

主题

3

帖子

35

积分

新手上路

Rank: 1

积分
35
金钱
32
HASS币
0
发表于 2020-8-19 08:41:21 | 显示全部楼层
真是来的及时的回复。不知道楼主是怎么判断出heater-cooler?另外不知道有没有办法在HA里面直接控制P3的遥控器?
回复

使用道具 举报

0

主题

5

帖子

42

积分

新手上路

Rank: 1

积分
42
金钱
37
HASS币
0
发表于 2020-8-19 11:49:06 | 显示全部楼层
绿米现在应该是主力homekit,其次帮小米代工
回复

使用道具 举报

1

主题

17

帖子

165

积分

论坛分享达人

积分
165
金钱
148
HASS币
0
发表于 2020-8-19 13:08:34 | 显示全部楼层
nice,兄弟
回复

使用道具 举报

1

主题

17

帖子

165

积分

论坛分享达人

积分
165
金钱
148
HASS币
0
发表于 2020-8-19 20:54:09 | 显示全部楼层
小白冒昧的问一下,如果是docker安装的hass那怎么打补丁?
自己搞了白天没弄明白。。
回复

使用道具 举报

1

主题

11

帖子

134

积分

论坛分享达人

积分
134
金钱
118
HASS币
0
 楼主| 发表于 2020-8-19 22:34:30 | 显示全部楼层
本帖最后由 raysonx 于 2020-8-20 11:50 编辑
a1007812524 发表于 2020-8-19 20:54
小白冒昧的问一下,如果是docker安装的hass那怎么打补丁?
自己搞了白天没弄明白。。 ...

1. 先执行 `docker ps` 得到正在运行的容器名或者ID。
2. 然后 `docker exec -ti 容器名或ID bash` 进入容器的shell。
3. 执行下面的命令打补丁 (国内直接访问GitHub如果没有代理很慢)
pip3 install -U git+https://github.com/home-assistant/[email protected]/pull/38979/head
4. `exit` 退出容器的shell
5. `docker commit 容器名或ID homeassistant/home-assistant:stable` 保存对容器的更改。`homeassistant/home-assistant:stable`是你用的image名。
回复

使用道具 举报

1

主题

11

帖子

134

积分

论坛分享达人

积分
134
金钱
118
HASS币
0
 楼主| 发表于 2020-8-19 22:41:00 | 显示全部楼层
superbboy 发表于 2020-8-19 08:41
真是来的及时的回复。不知道楼主是怎么判断出heater-cooler?另外不知道有没有办法在HA里面直接控制P3的遥 ...

我先是开了DEBUG日志,在日志可以看到Home Assistant已经发现了这个设备但没有进行注册(因为设备类型不在支持名单内)。
然后我Google搜索了得知heater-cooler设备是新出的,Home Assistant还没有支持。这个issue  https://github.com/Jc2k/aiohomekit/pull/18 也有提到这个问题,但 HomeKit Controller的开发者没有设备所以他没法开发。

后面我先是修改代码把heater-cooler设备映射进了HomeKitClimateEntity,发现可以识别当前温度,但是无法操控,因为各种Characteristic的字节码都不一样。我通过用Aqara的App反复控制空调看变化来得知哪个Characteristic是控制什么的,最终得到了控制heater-cooler设备的方法。
回复

使用道具 举报

1

主题

17

帖子

165

积分

论坛分享达人

积分
165
金钱
148
HASS币
0
发表于 2020-8-20 12:34:11 | 显示全部楼层
raysonx 发表于 2020-8-19 22:34
1. 先执行 `docker ps` 得到正在运行的容器名或者ID。
2. 然后 `docker exec -ti 容器名或ID bash` 进入容 ...

谢谢大佬
回复

使用道具 举报

4

主题

86

帖子

348

积分

中级会员

Rank: 3Rank: 3

积分
348
金钱
262
HASS币
0
发表于 2020-8-20 20:09:44 | 显示全部楼层
支持大佬
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2020-9-25 09:30 , Processed in 0.109631 second(s), 36 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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