这是智能家居折腾记录的第二期,本篇介绍米家产品通过本地或云端连接至Home Assistant,并通过Home Bridge桥接至HomeKit,可以通过HomeKit管理和创建自动化。
同时介绍将苹果 HomePod Mini 与Home Assistant 联动,实现媒体 AirPlay 和tts (text to speech) 的功能。
本篇完成于第五期之后,图片和资源可能会用到4、5期的内容。请跳转翻看
米家直连Wi-Fi产品接入HA
我使用的为 Xiaomi Miot Auto
集成用于连接米家产品,安装于HACS,可以在HACS集成中搜索 Xiaomi Miot Auto
安装。1
在 配置-->设备与服务-->集成-->添加集成
添加此集成,配置中输入米家账号密码,连接模式选择 Auto
会自动侦测并使用本地或云端方式接入Home Assistant。添加新设备后,可以在此页面勾选 更新设备列表
刷新。
使用无线网络接入米家的设备,如插座 chuangmi.plug.v3
、小米台灯1s yeelink.light.lamp4
可以自动通过此集成接入Home Assistant。
可以将设备添加到Home Assistant 面板
蓝牙Mesh产品板载BLE直连至HA
对于小米温湿度传感器等使用蓝牙Mesh工作的设备,无法直连小米服务器,只能通过手机或支持蓝牙Mesh的网关(多模网关、小爱音箱Pro等)连接WLAN网络,在没有上述设备的中转服务下,通过Home Assistant服务器的板载BLE也可以将蓝牙Mesh设备连接至Home Assistant。
- 此方法已经过时,不详细介绍,请参考以下页面:
HA官方文档-mitemp-bt:https://www.home-assistant.io/integrations/mitemp_bt/
智能家居homeassistant添加小米蓝牙温湿度计2代的教程:https://zhuanlan.zhihu.com/p/510881613
写文时我已经找不到我当时使用BLE添加米家设备的文章来源了。实测我使用的旧笔记本改造的服务器,它的板载BLE信号覆盖基本能满足全房需求,但是数据取回时间不太稳定,有时间隔1秒取回,有时隔了半天也不更新数据,总之没有蓝牙网关用着可靠,故此方法不推荐长期使用。
蓝牙、Zigbee产品通过多模网关接入HA
我使用小米的多模网关来连接米家生态的蓝牙Mesh产品,如单火墙壁开关、温湿度传感器;Zigbee产品,如无线按钮,这样物联网终端能直连米家云端,并通过集成接入Home Assistant。
使用小米Gateway集成的连接方式需要破解小米网关,且对新版本支持较差,现在已不推荐使用。
使用 Xiaomi Miot Auto
集成能够自动发现通过网关连接的设备:
空调伴侣 接入HA 【2022/7/12 更新】
小米空调伴侣2,能够红外遥控空调,具有功率检测的功能。由于米家放弃ZigBee,1代兼有ZigBee网关功能的空调伴侣停产。
空调伴侣在米家APP配置完成后,也可以使用 Xiaomi Miot Auto
集成连接至HA,但是截止到2022.7.12
,此集成对空调的支持仍有些小问题。
显示室温
空调伴侣没有温度传感器,因此接入HA后不会显示 current_temperature
,将空调实体(climate
)接入HomeKit后会显示室温为 21 摄氏度
。
参考GitHub问题: 无法获取空调伴侣设定的当前空调的工作温度 · Issue #686 · al-one/hass-xiaomi-miot · GitHub
可以再添加 Xiaomi Miot Auto
集成,选择自定义集成,选择好要设置的空调实体,在bind_sensor
绑定温度实体,重启后HA和HomeKit中均会显示室温与设定温度。
控制风速
在米家APP中配置好空调后,米家APP中可以正常调整设备风速(高中低档),而HA和HomeKit中调整风速后均无反应。
参考GitHub问题:小米空調fan_mode問題 · Issue #682 · al-one/hass-xiaomi-miot · GitHub
在配置文件中配置translations
以修复风速问题:
# configuration.yaml
xiaomi_miot:
translations:
fan_control.fan_level:
low: low
medium: medium
middle: middle
high: high
auto: auto
或者等待集成后续版本的更新推送。
HomeKit桥接
配置Home Bridge可以将接入Home Assistant的设备桥接至Home Kit,这样能使用HA、Home Kit两套系统控制智能家居,也能配合HomePod使用Siri管理包括米家设备在内的智能家居。
在集成中搜索HomeKit,出现两个集成,上面的是HomeKit桥接,将HA中设备虚拟成HomeKit桥接,供HomeKit终端连接控制;下面的是将HomeKit设备连接至HA。2
对于只支持HomeKit的智能家居设备,若想通过HA系统控制,可以使用HomeKit控制器先连接至HA,再桥接回HomeKit。
桥接设置
在HomeKit配置中,可以选择集成模式和包含或排除的实体类型。bridge模式用于将HA中的实体桥接至HomeKit,配件模式用于将摄像头、门锁、遥控器、电视等等配件连接至HomeKit。
包含的实体中选择要桥接的实体,需要注意的是,在“包含的域”中选择了某种类型,在“包含的实体”中未选择相应类型的实体,默认会把该类型下的所有实体纳入桥接。
配件
根据HA官方文档2,media_player
, remote
, lock
, and camera
domains 需要通过配件模式连接至HomeKit。
When exposing a Camera, Activity based remote (aremote
that supports activities), Lock, or Television media player (amedia_player
with device classtv
) to HomeKit,mode
must be set toaccessory
, and the relevantinclude
filter should be setup to only include a single entity.
将配件模式下包含相应的实体,会自动创建该设备的HomeKit Accessory和包含此配件的Bridge,若已有Bridge,可以删除自动创建的Bridge,再在Bridge中手动添加此配件。
配置完成后再通知栏回出现配对的二维码,使用家庭App扫描添加即可。
HomePod
自iOS 16起,iPad不再支持设置为HomeKit的家庭中枢,为此我购入了HomePod Mini,作为家庭中枢,能够执行自动化操作和远程访问控制。
HomePod可以作为媒体播放器自动检测并接入HA,显示为Apple TV,能够使用Airplay播放音频,且在2022年6月更新后能够原生支持HomePod上的tts播放。
媒体
媒体播放器可以播放HA中的音视频文件,媒体文件默认在 /media
,位置与configuration配置文件路径一致。我使用的HA是Home Assistant Supervised,docker容器中的 /media
默认映射到主机的 /usr/share/hassio/media
路径,因此可以向宿主机的此路径下存放媒体文件以供播放。
但由于我的HA服务器的根目录单独分区,与home目录不再同一分区,且根目录仅存放软件之用,空间不大,因此打算将此目录换成home目录分区下的路径。遗憾的是向 /usr/share/hassio/media
路径下添加指向home目录中的软链接并不会被HA读取。
根据下面提供的方法:
https://community.home-assistant.io/t/media-folder-location/231755/17
I was also having the same issue with the supervised container installation. I found a solution with a simpler approach.
The supervised container for homeassistant mounts /usr/share/hassio/media to /media within the container. See the output of
docker inspect -f '{{ .Mounts }}' homeassistant
command.So, in /etc/fstab, I added my “bind” mount point over /usr/share/hassio/media. My example line if /etc/fstab is here:
/home/media /usr/share/hassio/media none defaults,bind 0 0
When the docker container is started, it now sees the contents of /home/media where /usr/share/hassio/media is located, and that is what is /media within the homeassistant container.
可以将宿主机中的 /usr/share/hassio/media
目录与用户家目录挂载点相绑定,编辑 fstab
:
sudo vim /etc/fstab
# HA media bind
/home/gakki /usr/share/hassio/media none defaults,bind 0 0
重启服务器后,HA容器自动开启并挂载此路径,这样打开媒体路径就访问的是用户的家目录了:
TTS
Text-to-Speech (TTS) 可以将文本转换成声音在媒体播放器中播放出来,HA也可以使用自动化实现自动播报。3
HA默认有谷歌翻译的tts,但可能由于我的服务器在国内,谷歌的tts基本上无法使用。因此可以考虑使用微软的tts服务。
在HACS中搜索集成 Microsoft Edge TTS
安装,在 configuration.yaml
中添加默认配置:
# configuration.yaml
tts:
- platform: edge_tts
language: zh-CN # Default language or voice (Optional)
edge tts支持多种嗓音,可以在HACS集成介绍页面点击 list of voices
查看。
重启HA后即可使用。
作为Windows的音响
可以使用TuneBlade,将HomePod通过AirPlay作为Windows的音频输出。由于HomePod使用Wi-Fi接入2.4G网络,在实时模式下会经常出现干扰丢包问题,使用AirPlay做播放器的延迟还是一个大问题。
参考资料
- al-one/hass-xiaomi-miot. GitHub. https://github.com/al-one/hass-xiaomi-miot ↩
- HomeKit. Home Assistant. https://www.home-assistant.io/integrations/homekit ↩
- tts. Home Assistant. https://www.home-assistant.io/integrations/tts/ ↩
大佬用过 绿米VRF吗? 我想米家+homekit双控
我是通过 Xiaomi Miot Auto 导入的,但是看不到VRF 温控器
单独用 Xiaomi MIoT 加载温控器 HomeKit集成还是看不到 ORz