HA + Pi 系列从公开至今,群众反响热烈,成功者不少,但挫败者亦有。考虑到版面的整洁性,我已经关闭系列的评论权限,特别在此以文章的形式呈现一篇答疑篇,开启此篇文章的评论区,集中大家的问题,并给出 HA + HB 日常维护的建议。
求人不如求己
希望大家在遇到问题时,先进行自力救济,穷尽力所能及的渠道后,再去询问别人。以下是我整理的常见的参考资源,配合一定的搜索技巧和英语能力,基本上都能解决疑问:
官网
Github
社群&论坛
- 个人主导的文档翻译 Home Assistant 中文文档 (中文)
- 个人相关专题 Slack (中文)
- HA 官方论坛
- 瀚思彼岸论坛 (中文)
- HA 汉化参考文档(非官方,我参与部分翻译工作)
系统更新
Home Assistant
HA 的更新方法跟随安装方法各不相同,我在安装篇中均有涉及,这里特别提取出来,方便大家参考。
注意:为了保证国内用户的更新速度,我特别在更新指令中明确了 Pypi 源,海外的派友可以忽略。此外以下命令均使用 sudo
权限。
All-in-One
sudo systemctl stop home-assistant.service
sudo su -s /bin/bash homeassistant
source /srv/homeassistant/homeassistant_venv/bin/activate
pip3 install --upgrade homeassistant -i https://pypi.doubanio.com/simple/
exit
sudo system start home-assistant.service
Hassbian
sudo systemctl stop home-assistant@homeassistant.service
sudo su -s /bin/bash homeassistant
source /srv/homeassistant/bin/activate
pip3 install --upgrade homeassistant -i https://pypi.doubanio.com/simple/
exit
sudo systemctl start home-assistant@homeassistant.service
Hass.io
系统有更新时,将自动出现如下提示:
小手一点 UPDATE
,等转圈完,就更新成功了。
Homebridge
HB 及其组件的更新是在 Node.js 框架内进行的,使用 sudo npm upgrade -g 包名
相关命令即可完成,常用的包有:
homebridge
homebridge-yeelight
homebridge-mi-aqara
homebridge-homeassistant
homebridge-mi-acpartner
homebridge-mi-airpurifier
homebridge-mi-philips-light
具体的配置方法可在 Github 里直接搜索插件名获取。
国内派友可以转用淘宝镜像源:
npm config set registry https://registry.npm.taobao.org
日志监测
系统日志是 Debug 的核心参考文件,希望大家遇到问题学会第一时间查看 Log,定位问题。同时在向人提问时,附上相关的 log,也是良好的提问习惯。
当我们把 HB&HA 添加进系统后台自启项目后,便可以直接通过 systemctl
命令进行打开、关闭、重启、查询系统服务日志等一系列操作,常见的命令有:
- 启动:
systemctl start 服务名
- 终止:
systemctl stop 服务名
- 重启:
systemctl restart 服务名
- 查询服务状态:
systemctl status 服务名 -l
- 查询日志:
journalctl -u 服务名
- 列出所有服务:
systemctl list-unit-files --type=service
经常使用的服务有:
homebridge
home-assistant.service
(Raspbian)home-assistant@homeassistant.service
(Hassbian)appdaemon@appdaemon.service
(HADashborad)samba
(SMB)
另外还可以使用下述指令追踪所有服务日志: tail -F /var/log/daemon.log
(再讲下去要变成 Linux 大讲堂了)
除了通过 systemctl
查询日志,HA 查看日志的方法比较多样,最直观的就是在系统前端的 dev-info
面板查看。日志文件存放在配置文件所在的文件夹中,home-assistant.log
文件便是。HB 如若手动开启,默认在终端中滚动显示实时日志。
Q&A
HB 端口被占用
events.js:160 throw er; // Unhandled 'error' event ^ Error: listen EADDRINUSE :::51826 at Object.exports._errnoException
出现上述错误的原因是用户在添加 HB 为自启任务的情况下,手动开启 HB。通俗来说就是你在同一端口试图开启 2 个 HB,因此显示端口被占用。
解决办法就是无需重复开启 HB,直接使用上面提及的指令重启已开启的 HB 服务即可;或者关闭已开启的 HB,再使用
homebridge
手动开启新的 HB 服务。成功安装 HB + HA 并在家庭 app 添加“桥”后,显示无设备
这是由于 HB-HA 插件更新导致的,最新的插件中,HB 的
config.json
配置文件增加了一项设置"default_visibility":"visible"
,在 2.3.1 版本前默认是隐藏的,因此就出现了所有设备被隐藏的情况。解决方法非常简单,将 HB-HA 插件更新到最新版本即可,默认会自动添加以上指令,大家也可以手动添加。HA 配置文件格式错误
需要再次提醒的是,
yaml
文档非常强调代码的格式,因此请大家额外重视空格、换行、-
号的使用。一般来说,在最新 HA 系统中,如果配置文件格式出现错误,首页中会出现如下提示:同时结合 Log,可以快速定位出错的位置。
格式正确,无法添加小米网关
很多情况下,这表明你的格式并不正确 :( ,常见的错误有:
key
大小写问题mac
的 : 号问题另,小米平台在 0.53 之后的更新中统一为 2 个 接入方式:Zigbee 设备统一使用
xiaomi_aqara
;WiFi 设备统一使用xiaomi_miio
,请注意区别。
设备在家庭 app 中重复出现
出现此错误的原因是用户将同一设备同时接入了 HA 和 HB,那么 Homekit 就会通过 HB-HA 插件识别一次设备,后再通过 HB 的其他相关插件识别一次设备,最终导致重复识别添加。
解决方法就是在 HA 配置文件
configuration.yaml
的customize
模块中找到对应设备,添加homebridge_hidden: true
设置,之后重启 HA、HB 服务即可。如果仍未生效,请清除 HB 缓存后重试。 更具体的设置方法,欢迎参考系列的"个性化配置篇"平面图在 iOS 及 macOS 中显示 script error
由于之前代码未跟进 Polymer 2.0 框架,导致 Apple Webkit 载入错误。目前作者已经修复了这个问题,请大家前往 Github 下载最新的源码。
HA 或者 HB 配置文件进行改动后,没有生效
如果你在 HA 进行了有关 HB 的配置变更,如设置homebridge_hidden
等属性或者对 HB 的config.json
文件进行了修改。修改后首先需要做的是重启 HB,清除 iOS 家庭 app 的后台。重新打开 app,如若发现配置尚未生效,就需要考虑清除 HB 的缓存:sudo rm -rf /home/pi/.homebridge/persist/
需要注意的是清除缓存将导致先前所有在家庭 app 内的分组命名等操作失效。
之后重启 HB,配置应该就如期生效了。在 HB 中删除“桥”后无法再添加或嗅探到
发生此问题的原因是,系统已经对你的设备和配置有了记忆,因此需要删除有关缓存。
首先,使用和 『问题7』同样的操作,清理 HB 缓存,重开 APP,确认是否可以添加。
如果该方法依旧不能解决问题,则打开 HB 的配置文件config.json
,将开头的username
项类似 mac 地址的字符串更改几个数字,之后同样清除缓存,重启 HB,重开 app。Apple Home 可以实现外网控制吗?
可以,实现外网控制需要一台处于内网环境下的 Apple TV (3代及以上)或者 iPad 当做『家庭中枢』。如果需要使用 家庭 App 自带的『自动化设置』功能,则只有 第 4 代 Apple TV 支持。安装不完整导致 dns 服务器错误
如果启动 HB 后遇到如下错误:
module.js:328
throw err;
^
Error: Cannot find module '../build/Release/dns_sd_bindings'
at Function.Module._resolveFilename (module.js:326:15)
at Function.Module._load (module.js:277:25)
at Module.require (module.js:354:17)
at require (internal/module.js:12:17)
at Object.<anonymous> (/usr/local/lib/node_modules/homebridge/node_modules/mdns/lib/dns_sd.js:32:22)
at Module._compile (module.js:410:26)
at Object.Module._extensions..js (module.js:417:10)
at Module.load (module.js:344:32)
at Function.Module._load (module.js:301:12)
at Module.require (module.js:354:17)
请操作如下指令:
cd /usr/local/lib/node_modules/homebridge
sudo npm install --unsafe-perm mdns
sudo npm rebuild --unsafe-perm
以上是比较普遍出现在派友中的问题,我也将不断更新,大家亦可通过评论及其他渠道反映个人遇到的困难。
更新日志
- 12月09日:添加『问题10』
- 10月30日:添加『问题9』
- 10月20日:添加『问题7』与『问题8』
作者的话
距离我发布本系列首篇文章至今已经快半年了,系列至今已有 10 篇教程。无独有偶,JailbreakHum在 《少数派季度作者颁奖礼开场发言》所阐述的『内容调整』的观点恰恰与我的初衷十分契合。可以说从一开始,我就在整个系列中尽量保证内容的入门性,也在现实中帮助了很多派友成功搭建系统。
在和派友的互动中我意识到碍于英文水平的局限,很多人无法进一步地享受 Home Assistant 带来的便利。鉴于此,我个人独立制作了一份更接地气的 中文文档 ,目前仍处于雏形阶段,还在快马加鞭中,希望可以帮助到更多的人,欢迎大家阅读+收藏。
良好的体验需要良性的互动维持,为了保持版面的整洁,请大家不要在系列所有文章下方评论区 PO 整段的错误代码。遇到问题请至本篇集中评论。
最后,欢迎大家关注【少数派】的最新专栏 —— 《明明白白玩派》,之后我的相关文章都将投稿至此专栏,也期待新专栏能够给大家玩派带来启发与收获~