大概在三年前,作者通过树莓派+小米智能家居+苹果设备,实现了通过iPhone控制家庭智能设备的功能。通过苹果生态,即可实现若干智能化:根据所在位置,开关电器;通过Siri控制灯光亮度和开关等功能。外出时,再也不用担心家里哪个电器没关;回家前,还能提前打开空调;睡觉前也不用起来给每个房间单独按开关,直接Siri指令。这大大方便了用户。
因为使用的是小米的智能家居,相较于单纯的苹果生态,降低了智能家居的接入成本。以插座为例,HomeKit生态相关的产品需要几百元,而米家相关的产品仅需要数十元,即可实现类似效果。
当然,米家相关的配置并不是没有缺点。因为引入了更多的中转设施,其出故障的可能性会比单纯的HomeKit接入会更高。这不,近期HomeKit突然完全失联(后来确认是修改路由配置导致的连锁反应),于是借机重新走了一遍流程。刚好小米在一个月前,也发布了官方的插件,以支持跨平台的控制接入。我们来看看米家官方的插件到底如何。
以下,从树莓派开始讲起,着手构建通过家庭App即能控制的低成本智能家居系统。
涉及资源
硬件
- 树莓派4B(服务器,包含SD卡)
- 米家智能家居(各类实际硬件,包含多模网关)
- Apple homepod mini / Apple TV / iPad(Apple控制中枢)
软件
- Raspbian 系统
- Docker
- HACS(docker版本)
- xiaomi插件
配置过程
连接树莓派
对于一个全新的树莓派,我们需要初始化它,以便进行后续操作。参考以下信息:
# <https://ost.51cto.com/posts/4179>
## 创建账号,解决没有权限的问题
<https://www.cnblogs.com/melodicule/p/16212711.html>
## 连接ssh
ssh pi@192.168.x.x
password: xx
## 配置
sudo raspi-config #设置登录方式、屏幕
## VNC 可视化界面
<https://www.jianshu.com/p/5e4d64c2ceaf>
## 查看温度
vcgencmd measure_temp
## 引脚信息
<http://www.raspigeek.com/index.php?c=read&id=126&page=1>
安装docker
docker安装,需要留意源信息的变更。
curl -fsSL <https://get.docker.com> -o get-docker.sh
sudo sh get-docker.sh --mirror Aliyun
sudo docker version
# 修改docker源与dns解析,留意是否失效ustc的源已失效
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors":["<https://docker.mirrors.ustc.edu.cn>"],
"dns":["114.114.114.114","8.8.8.8"]
}
EOF
sudo systemctl daemon-reload
sudo service docker restart
# 给pi用户权限
sudo usermod -aG docker pi
sudo reboot
docker run hello-world
HACS 安装
docker pull homeassistant/home-assistant:stable
# 注意源的选取不同于官方文档
docker run -d \\
--name homeassistant \\
--privileged \\
--restart=unless-stopped \\
-e TZ=Asia/Shanghai \\
-v /home/pi/has/config \\
--network=host \\
homeassistant/home-assistant:stable
docker container ls
插件安装
在网络情况佳的情况下,可直接在网页端配置。核心要点是GitHub上所托管的资源能否顺利获得。
vi /etc/hosts
151.101.64.133 raw.githubusercontent.com
52.74.223.119 github.com
# 方式一
docker exec -it homeassistant bash
wget -O - <https://get.hacs.xyz> | bash -
# 方式二:先去上面的网址把压缩包下下来,按照网址里的步骤手动来
docker cp hacs.zip homeassistant:/config/custom_components/
docker exec -it homeassistant bash
# 方式三:
wget -O - <https://ghproxy.com/raw.githubusercontent.com/hasscc/get/main/get> | HUB_DOMAIN=ghproxy.com/github.com DOMAIN=hacs REPO_PATH=hacs-china/integration ARCHIVE_TAG=china bash -
# 安装/下载小米插件
wget <https://github.com/ha0y/xiaomi_miot_raw/archive/refs/heads/master.zip>
cd **
docker cp xiaomi_miot_raw/ homeassistant:/config/custom_components/
网页配置
# 打开vscode,连接登陆树莓派 转发终端 8123以实现能够在本地访问
直接通过HACS侧边栏进入并搜索xiaomi,即可获得相关插件。之后再在设置->集成中,配置小米账号,选定传感器。
这些操作完成后,我们可以在Home Assistant控制小米硬件。
仅还不够,我们还需要在设置→集成→右下角添加集成,搜索并下载HomeKit bridge插件,以实现桥接功能。在该插件的配置中,选定我们希望出现在家庭中的实体。这里需要注意,一个设备对应多个实体。以接触传感器为例,包含电池电量、光照度、接触状态三个实体。
该插件下载安装后,会出现Homekit配置所需的二维码。打开iPhone的家庭app,右上角扫描二维码后,即可绑定前面所选的实体。
总结
单就米家来说,硬件的接入相较于3年前已经进步很多。有米家的路由器的情况下,目前可以实现硬件的快速接入。但是米家硬件的使用,需要打开相关app或者使用小爱同学。对于小米生态用户来说,体验应该不错。但是iPhone用户来说,肯定是不够优雅的。这也是切换到homekit的动机之一。
在这个过程中,需要大量的配置性操作。对于小白用户来说,理解成本不低。对于喜欢折腾的人来说,是个合适的折腾对象。目前市场上智能家居家装的整体报价,米家相关的在万元级别。自己动手这套下来,物料成本能控制在千元以内。当然,这里的前提是不包含单价较贵的电机,以及复用了部份已有设备(如树莓派、HomePod mini)。
本次操作的目标之一是体验小米的官方集成:Xiaomi Home,总的来说体验尚可。它替代了第三方密码登陆的方式,将之改为跳转认证,安全性上更佳。但是它也有一个缺点:官方将所有能暴露的配置都给到了用户,就会出现一个设备(如:开关),有数个可选择的实体(如:开关灯、无线开关等)。作者的10个设备,就出现了156个可选实体,这对于用户来说信息量未免过大了。而早期的民间版本:Xiaomi miot Auto这方面就处理得好很多,只会把用户确实需要的实体暴露出来。当然,硬要说可能是后者拿不到那么多权限配置。
最后关于稳定性问题,在这次出问题前,该系统稳定运行了1年多,直到作者因其他事项更新了路由中的DNS配置,才导致失败。一般情况而言,稳定性是OK的。米家接入新设备后,也会自动发现并同步到Apple家庭中,想捣鼓的朋友值得一试。