文章目录
简介
根据官网介绍,HomeAssistant是将本地控制和隐私放在首位的开源家庭自动化应用。由全球修补匠和 DIY 爱好者社区提供支持。非常适合在 Raspberry Pi 或本地服务器上运行。
Open source home automation that puts local control and privacy first. Powered by a worldwide community of tinkerers and DIY enthusiasts. Perfect to run on a Raspberry Pi or a local server.
相信不用多介绍,既然你看到这篇文章,说明是想要了解或者准备使用家庭智能,那么这篇文章对于初学者来说,还是非常值得一看的,尤其是网上的教程又非常少,我也走了一些弯路,接下来我们就从头开始搭建以及学习如何方便的使用。
功能
这边简洁介绍一下其功能,很多初学者可能稍微了解后不是很了解它具体能做什么,有些设备它能不能接入,以及关联HomeKit等等。
假设此时家中有各种品牌的设备(小米、绿米、涂鸦以及Apple TV等等),正常情况下,各个厂商都会让你下载它们品牌的App,通过其App进行控制,或者顺便要买个它们的网关中枢系统通过语音控制,那么家中就会显得比较杂乱,各种品牌,各种呼出语言,这个时候,就轮到HomeAssistant登场了~
我们可以将上面提到的各种智能家居统一添加到HomeAssistant中,以后就可以通过HomeAssistant应用进行控制,再之后通过添加 Apple Bridge
集成来实现将所有设备桥接到苹果的HomeKit中,实现通过“嘿,Siri”呼出控制。(由于家里没有Andriod手机,就不讨论安卓设备了)
是不是很酷?
收获
写收获,是因为智能家居,是以家庭为基础来讨论的,如果看完这篇文章让你学以致用了,那么从精神层面来说,肯定是收获了家人的敬佩以及各种夸赞,老婆的鼓励和肯定,朋友的一句句“牛X”;从物质层面来说,对比智能家居店的整套报价来说,可以省下很大一部分钱。
PS:我老婆一个月前独自一个人去看的某线下智能家居店,昨天讨论的时候她把报价发我看了一下,就差几个字写在脸上:冤大头!
在报价中,智能控制大类分:
-
中枢系统(也就是网关)
-
语音控制(Siri音箱,Homepod这种)
-
智能面板、窗帘、灯具这些
-
传感器(包含安防传感)
就这几项,报价15k。。。关键是还有 25%产品原价的服务费!注意是产品原价。而且,细化方案的话,还要交2k-3k的方案费。
其中设备的型号暂且不说,算它是正常价格,我们讨论如果自行安装使用HomeAssistant的情况下,能够帮我们省哪些费用:中枢系统以及语音控制 这两大类是不用的;服务费和方案费也是可以去掉的。也就是,就算面板这类从店里直接购买,最起码也能省3k-5k。何乐而不为呢?~
因此,无论怎么看,只要是已经打算使用智能家居的情况下,花几天时间学习一下HomeAssistant,物超所值,是时候提升一下家庭弟位了!
声明
这篇文章应该会比较长,真正想要自己完成的话,就要耐心一步步看完,可能还要联系我前几篇文章一起看,但是可以保证的是不难!只要肯学,就算什么基础都没有,一个星期时间也能学会了。
前提
必备条件:家庭服务器或者树莓派、NAS、ESXI、PVE等等可用于搭建HomeAssistant的设备
最简单的方法:通过一台废弃的笔记本安装VMware,通过VMware安装HomeAssistant。
安装
官网Installation界面有详细的安装方法,可以自行参考。
如果是通过NAS(群晖Container Manager)、Ubuntu Server的Docker这类Docker容器安装的方法:
Docker直接拉取:
docker run -d \
--name homeassistant \
--privileged \
--restart=unless-stopped \
-e TZ=MY_TIME_ZONE \
-v /PATH_TO_YOUR_CONFIG:/config \
-v /run/dbus:/run/dbus:ro \
--network=host \
ghcr.io/home-assistant/home-assistant:stable
Docker Composer拉取:(推荐)
version: '3'
services:
homeassistant:
container_name: homeassistant
image: "ghcr.io/home-assistant/home-assistant:stable"
volumes:
- /PATH_TO_YOUR_CONFIG:/config
- /etc/localtime:/etc/localtime:ro
- /run/dbus:/run/dbus:ro
restart: unless-stopped
privileged: true
network_mode: host
注意更改
/PATH_TO_YOUR_CONFIG:/config
前面的路径
这边我演示的方法是通过 ESXI 安装HomeAssistant OS,这个方法的优点是:1.独立运行、稳定,基本不存在NAS等主机崩溃的情况下影响Docker容器运行 2.随时创建快照,备份还原方便。
-
新建虚拟机
-
自定义设置,硬盘这些都删除,只保留CPU、内存、网络适配器、显卡
-
添加现有硬盘
-
创建目录(名称任意),上载下载的系统镜像文件
系统镜像文件下载地址:https://github.com/home-assistant/operating-system/releases
-
在硬盘选项,控制器位置选择
IDE控制器0
-
虚拟机选项,引导界面取消 UEFI安全引导
-
启动虚拟机,按照界面的IP地址登陆
-
等待安装完成,这个时间根据自身网络环境而定,可能远远不止20分钟,耐心等待即可
安装完成之后会跳转到注册界面,正常注册即可。
加载项
推荐几个加载项,比较实用,可以先行安装。
来到主界面-【配置】-【加载项】,点击右下角的【加载项商店】。
-
Advanced SSH & Web Terminal
在HASS界面即可运行SSH。打开其配置界面,填写
username
和password
的值,然后保存,回到信息界面点击启动即可。 -
Samba share
SMB共享,可以局域网访问其资源,用于上传文件以及更改配置。打开其配置界面,填写
username
和password
的值,然后保存,回到信息界面点击启动即可。 -
Studio Code Server
在HASS界面即可查看、修改文件,非常实用。
当然还有一些其他的加载项也比较实用,比如 Node-RED 以及 Mosquitto broker 等,可以等需要的时候自行下载。
添加HACS集成(非常实用)
HACS官网:https://hacs.xyz/
官网上有相应的安装文档,适合多种系统:
Docker:
docker exec -it homeassistant bash #进入容器
wget -O - https://get.hacs.xyz | bash - #下载HACS
OS/Supervised:(本文的安装方法)
启动上面安装过的加载项:Advanced SSH & Web Terminal,(勾选【在侧边栏显示】),打开侧边栏的Terminal项,输入以下命令:
wget -O - https://get.hacs.xyz | bash -
安装好之后,来到【配置】-【设备与服务】-【添加集成】,搜索 HAC
,在弹出界面全部勾选或者只勾选前4个:
由于我一不小心安装好了,借用几张官网的图片
此时会跳转到一个界面,有个8位数的Code,打开上面的链接,登陆Github账号,输入8位Code完成授权。
此时,左侧会出现HACS栏目,即安装成功了。
UI界面
UI界面这一部分只能简单介绍一下,里面涉及到的卡片,按钮,滑块等等非常复杂,就像建立一个网站,可以直接通过UI界面进行页面布局,也可以纯代码方式手搓,这边给两个方案:
一:Mushroom(强烈建议新手使用!)
Mushroom可以理解为可以通过UI界面进行设置的程序,安装它之后,就可以直接在页面端添加各种卡片。
安装方式:在HACS中搜索 Mushroom
安装。
安装完成后,务必在【配置】-【仪表盘】-右上角【...】-【资源】确认mushroom模块有没有正确添加,如果没有添加的话自行添加进去:
这一步非常重要!
二:UI-Lovelace-Minimalist(新手强烈不建议!)
UI-Lovelace-Minimalist 就是纯代码编辑的方式来管理界面。
安装方式:在HACS中搜索 UI-Lovelace-Minimalist
安装。
安装完成后,在【配置】-【设备与服务】-【添加集成】-搜索 ui
,进行添加。
目录结构如下,完全通过编辑 ui-lovelace.yaml
文件来进行页面设置。
config
└── ui_lovelace_minimalist
├── custom_cards
└── dashboard
└── ui-lovelace.yaml
此方式的话,尽量多参考官方文档。
以上两种方案二选一即可。下文我们将使用 Mushroom 来进行页面操作。
使用
请确认在以上步骤都没问题的情况下进行!
打开【配置】-【仪表盘】-【添加仪表盘】-【从头开始的新仪表盘】,自行设置即可。
添加天气模块
打开【HACS】-搜索【天气预报】,进行安装。
这是一款比较接地气的天气模块,适合国内,使用教程参考:https://mp.weixin.qq.com/s/_4aFbsb40qPgII-kYB3phA
简单来说,就是安装完成后,来到【配置】-【设备与服务】-【添加集成】,搜索 天气预报
,添加后【服务器域】内容填写 weather.com.cn
,【地点】就填写自己城市。
图片来源于上述教程链接内
然后来到刚刚创建的新仪表盘,点击右上角的【编辑】图标,右下角【添加卡片】,下拉找到【天气预报】,在弹出的设置界面内,选择【实体】就行。
这个【实体】就是你需要显示内容的ID,可以理解:HASS接入了一个开关,这个开关会有一个ID,输入这个ID的意思就是可以关联控制这个开关。
添加Tuya温湿度计
我这边有个涂鸦的温湿度计,先操作温湿度计连上局域网,然后来到【配置】-【设备与服务】-【添加集成】,搜索 Tuya
,接下来按照弹出的界面进行操作,我选择【账号关联】的方式,输入Tuya的账号以及ID,没问题的话就会添加相关的设备:
回到仪表盘添加卡片,可以选择【实体】卡片,或者【传感器】卡片,选取对应的【实体】即可:
添加米家智能开关
首先在【HACS】中搜索 Xiaomi Miot Auto
并下载,然后在【配置】-【设备与服务】-【添加集成】- 搜索Xiaomi Miot Auto
,还是选择【账号集成】,登陆米家账号,选择【包含】,勾选自己的设备,我这边勾选的是智能开关。
然后来到主界面,添加【按钮】卡片,操作上来说已经没问题了,但是美观程度就不敢恭维。
我们搞复杂一点,自定义一下,在【HACS】中的搜索 Slider Button Card
并安装,由于其本身自带UI界面,因此我们不需要通过代码编辑器进行设置,只需在仪表盘中添加【Slider button】卡片,看下效果:
是不是很酷炫了,褪去了原本那种土里土气的样子,立马变成高富帅~
这个智能开关还有功率检测等功能,也可以展示,同样添加自己想要的卡片,选择对应的实体即可。相关有多少个实体可以添加到卡片,可以在【集成】-【Xiaomi Miot Auto】中查看:
我们再增加点难度,在【HACS】中搜索 mini-graph-card
,安装这个显示模块,这个模块是没有UI界面的,因此只能通过纯代码编辑的方式添加,此时要详细阅读该界面的使用方法。
这边就不深入展开了,我们简单设置一下,通过它的介绍,可以看到最简单的方法为:
type: custom:mini-graph-card #卡片类型
entities:
- sensor.illumination #实体
因此,直接将智能插座的实体ID复制过来即可,更新上述配置文件为:
type: custom:mini-graph-card
entities:
- sensor.cuco_v3_4754_power_consumption #功耗?暂且当功耗来看
- sensor.cuco_v3_4754_electric_power #当前功率
- sensor.cuco_v3_4754_power_cost_month #近一月用电
- sensor.cuco_v3_4754_power_cost_today #当日用电
来到主界面,添加 【mini-graph-card卡片】,将上述代码复制到编辑器区域内,成功显示:
但是我还是不满足!再美化一下:
type: custom:mini-graph-card
name: 米家智能插座
hours_to_show: 48
entities:
- entity: sensor.cuco_v3_4754_electric_power
name: 当前功率
line_color: yellow
- entity: sensor.cuco_v3_4754_power_consumption
name: 功耗
line_color: blue
- entity: sensor.cuco_v3_4754_power_cost_today
name: 当日用电
line_color: purple
- entity: sensor.cuco_v3_4754_power_cost_month
name: 近一月用电
line_color: red
show:
labels: true
算了,不折腾了,大致就是这样,基础的配置在模块介绍页找就行,根据自己的情况套上去,看不懂就多看几次。不是很难的。
其他添加
添加不同的卡片,有不同的效果,各种卡片可以在 【HACS】 中搜索,各类卡片都能找到。
特别注意事项
在 【HACS】 中安装的js模块,一般会自动添加到【仪表盘】的【资源】中,如果没有添加,到时候会出现找不到js模块的情况。
如果出现这个问题,首先查看Mushroom的资源路径是否正确,一般是:/hacsfiles/lovelace-mushroom/mushroom.js
由于之前固有思维,【HACS】安装的目录是
hacs
,导致我填写的资源路径都是/hacs/.../xx.js
,全都加载不出来,这是个大坑。
桥接HomeKit
来到【配置】-【设备与服务】-【添加集成】,搜索 Apple
,添加【HomeKit Bridge】,【要包含的域】可以全部打勾,建议是勾选自己设备需要控制的几项就行。
之后会在左下角【通知】中显示二维码和一串Code,打开手机的【家庭】扫描,选择【仍然添加】,之后逐个添加按钮或者卡片。
【家庭】显示的详细程度不如HomeAssistant,看不到插座的功率等情况,但是已经可以通过 “嘿,Siri” 控制开关这些了。
远程访问
方案一:IPv6 DDNS
这一部分我是依赖本地Ubuntu Server搭建的Nginx反向代理解决的,感兴趣的小朋友可以参考我之前的《从零开始使用Ubuntu Server搭建家用NAS服务器》系列,如果是群晖(已经在第三方套件内安装并使用DDNS-Go的情况下,直接在控制面板的登陆界面,找到反向代理,将反向代理的地址设置为HomeAssistant的本地访问地址。
方案二:ZeroTier或者Tailscale
在【配置】-【加载项】-【加载项商店】中有这两个应用,安装后将手机以及HomeAssistant接入到相应的ID内即可。
方案三:cpolar
官方文档:https://cpolar.com/docs#linux-system-installation-cpolar
在SSH中输入以下命令安装cpolar:
curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash
登录cpolar官网后台,点击左侧的验证,查看自己的认证 token
,复制其值。
回到SSH界面,输入:
cpolar authtoken xxxxxxx
cpolar tcp 8123
添加并启动服务:
sudo systemctl enable cpolar
sudo systemctl start cpolar
登录后台,查看隧道在线状态
https://dashboard.cpolar.com/status
PS:此方法未测试,不保证其可靠性,猜测应该没问题
最后
写这篇文章挺累的,重新搭建了一遍,又重新添加了一次,自我感觉,其实该说的已经说清楚了,相信你也应该能通过这篇文章知道该如何操作了。
我一直觉得,可以学习是一件开心的事情,而且能把自己学到的东西分享给别人,人生是非常幸福的。
希望这篇文章也能给大家一些帮助。
最后想到一句话:人,可以走的慢一点,但是必须在正确的道路上;钱,可以赚的少一点,但是必须在正确的方向上。