简介

根据官网介绍,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:我老婆一个月前独自一个人去看的某线下智能家居店,昨天讨论的时候她把报价发我看了一下,就差几个字写在脸上:冤大头

在报价中,智能控制大类分:

  1. 中枢系统(也就是网关)

  2. 语音控制(Siri音箱,Homepod这种)

  3. 智能面板、窗帘、灯具这些

  4. 传感器(包含安防传感)

就这几项,报价15k。。。关键是还有 25%产品原价的服务费!注意是产品原价。而且,细化方案的话,还要交2k-3k的方案费。

其中设备的型号暂且不说,算它是正常价格,我们讨论如果自行安装使用HomeAssistant的情况下,能够帮我们省哪些费用:中枢系统以及语音控制 这两大类是不用的;服务费和方案费也是可以去掉的。也就是,就算面板这类从店里直接购买,最起码也能省3k-5k。何乐而不为呢?~

因此,无论怎么看,只要是已经打算使用智能家居的情况下,花几天时间学习一下HomeAssistant,物超所值,是时候提升一下家庭位了!

声明

这篇文章应该会比较长,真正想要自己完成的话,就要耐心一步步看完,可能还要联系我前几篇文章一起看,但是可以保证的是不难!只要肯学,就算什么基础都没有,一个星期时间也能学会了。

前提

必备条件:家庭服务器或者树莓派、NAS、ESXI、PVE等等可用于搭建HomeAssistant的设备

最简单的方法:通过一台废弃的笔记本安装VMware,通过VMware安装HomeAssistant。

安装

官网Installation界面有详细的安装方法,可以自行参考。

如果是通过NAS(群晖Container Manager)、Ubuntu Server的Docker这类Docker容器安装的方法:

Docker直接拉取:

1
2
3
4
5
6
7
8
9
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拉取:(推荐)

1
2
3
4
5
6
7
8
9
10
11
12
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.随时创建快照,备份还原方便。

  1. 新建虚拟机

  2. 自定义设置,硬盘这些都删除,只保留CPU、内存、网络适配器、显卡

  3. 添加现有硬盘

  4. 创建目录(名称任意),上载下载的系统镜像文件

    系统镜像文件下载地址:https://github.com/home-assistant/operating-system/releases

  5. 在硬盘选项,控制器位置选择 IDE控制器0

  6. 虚拟机选项,引导界面取消 UEFI安全引导

  7. 启动虚拟机,按照界面的IP地址登陆

  8. 等待安装完成,这个时间根据自身网络环境而定,可能远远不止20分钟,耐心等待即可

安装完成之后会跳转到注册界面,正常注册即可。

加载项

推荐几个加载项,比较实用,可以先行安装。

来到主界面-【配置】-【加载项】,点击右下角的【加载项商店】。

  1. Advanced SSH & Web Terminal

    在HASS界面即可运行SSH。打开其配置界面,填写 usernamepassword 的值,然后保存,回到信息界面点击启动即可。

  2. Samba share

    SMB共享,可以局域网访问其资源,用于上传文件以及更改配置。打开其配置界面,填写 usernamepassword 的值,然后保存,回到信息界面点击启动即可。

    11

  3. Studio Code Server

    在HASS界面即可查看、修改文件,非常实用。

当然还有一些其他的加载项也比较实用,比如 Node-RED 以及 Mosquitto broker 等,可以等需要的时候自行下载。

添加HACS集成(非常实用)

HACS官网:https://hacs.xyz/

官网上有相应的安装文档,适合多种系统:

Docker:

1
2
docker exec -it homeassistant bash          #进入容器
wget -O - https://get.hacs.xyz | bash - #下载HACS

OS/Supervised:(本文的安装方法)

启动上面安装过的加载项:Advanced SSH & Web Terminal,(勾选【在侧边栏显示】),打开侧边栏的Terminal项,输入以下命令:

1
wget -O - https://get.hacs.xyz | bash -

12

安装好之后,来到【配置】-【设备与服务】-【添加集成】,搜索 HAC,在弹出界面全部勾选或者只勾选前4个:

13

14

由于我一不小心安装好了,借用几张官网的图片

此时会跳转到一个界面,有个8位数的Code,打开上面的链接,登陆Github账号,输入8位Code完成授权。

15

此时,左侧会出现HACS栏目,即安装成功了。

UI界面

UI界面这一部分只能简单介绍一下,里面涉及到的卡片,按钮,滑块等等非常复杂,就像建立一个网站,可以直接通过UI界面进行页面布局,也可以纯代码方式手搓,这边给两个方案:

一:Mushroom(强烈建议新手使用!)

Mushroom可以理解为可以通过UI界面进行设置的程序,安装它之后,就可以直接在页面端添加各种卡片。

安装方式:在HACS中搜索 Mushroom 安装。

安装完成后,务必在【配置】-【仪表盘】-右上角【…】-【资源】确认mushroom模块有没有正确添加,如果没有添加的话自行添加进去:

16

这一步非常重要!

二:UI-Lovelace-Minimalist(新手强烈不建议!)

UI-Lovelace-Minimalist 就是纯代码编辑的方式来管理界面。

安装方式:在HACS中搜索 UI-Lovelace-Minimalist 安装。

安装完成后,在【配置】-【设备与服务】-【添加集成】-搜索 ui,进行添加。

目录结构如下,完全通过编辑 ui-lovelace.yaml 文件来进行页面设置。

1
2
3
4
5
config
└── ui_lovelace_minimalist
├── custom_cards
└── dashboard
└── ui-lovelace.yaml

此方式的话,尽量多参考官方文档。

以上两种方案二选一即可。下文我们将使用 Mushroom 来进行页面操作。

使用

请确认在以上步骤都没问题的情况下进行!

打开【配置】-【仪表盘】-【添加仪表盘】-【从头开始的新仪表盘】,自行设置即可。

17

添加天气模块

打开【HACS】-搜索【天气预报】,进行安装。

18

这是一款比较接地气的天气模块,适合国内,使用教程参考:https://mp.weixin.qq.com/s/_4aFbsb40qPgII-kYB3phA

简单来说,就是安装完成后,来到【配置】-【设备与服务】-【添加集成】,搜索 天气预报,添加后【服务器域】内容填写 weather.com.cn,【地点】就填写自己城市。

19

图片来源于上述教程链接内

然后来到刚刚创建的新仪表盘,点击右上角的【编辑】图标,右下角【添加卡片】,下拉找到【天气预报】,在弹出的设置界面内,选择【实体】就行。

这个【实体】就是你需要显示内容的ID,可以理解:HASS接入了一个开关,这个开关会有一个ID,输入这个ID的意思就是可以关联控制这个开关。

20

21

添加Tuya温湿度计

我这边有个涂鸦的温湿度计,先操作温湿度计连上局域网,然后来到【配置】-【设备与服务】-【添加集成】,搜索 Tuya,接下来按照弹出的界面进行操作,我选择【账号关联】的方式,输入Tuya的账号以及ID,没问题的话就会添加相关的设备:

22

回到仪表盘添加卡片,可以选择【实体】卡片,或者【传感器】卡片,选取对应的【实体】即可:

23

添加米家智能开关

首先在【HACS】中搜索 Xiaomi Miot Auto 并下载,然后在【配置】-【设备与服务】-【添加集成】- 搜索Xiaomi Miot Auto ,还是选择【账号集成】,登陆米家账号,选择【包含】,勾选自己的设备,我这边勾选的是智能开关。

24

25

26

然后来到主界面,添加【按钮】卡片,操作上来说已经没问题了,但是美观程度就不敢恭维。

27

28

我们搞复杂一点,自定义一下,在【HACS】中的搜索 Slider Button Card 并安装,由于其本身自带UI界面,因此我们不需要通过代码编辑器进行设置,只需在仪表盘中添加【Slider button】卡片,看下效果:

29

30

是不是很酷炫了,褪去了原本那种土里土气的样子,立马变成高富帅~

这个智能开关还有功率检测等功能,也可以展示,同样添加自己想要的卡片,选择对应的实体即可。相关有多少个实体可以添加到卡片,可以在【集成】-【Xiaomi Miot Auto】中查看:

31

我们再增加点难度,在【HACS】中搜索 mini-graph-card ,安装这个显示模块,这个模块是没有UI界面的,因此只能通过纯代码编辑的方式添加,此时要详细阅读该界面的使用方法。

这边就不深入展开了,我们简单设置一下,通过它的介绍,可以看到最简单的方法为:

1
2
3
type: custom:mini-graph-card    #卡片类型
entities:
- sensor.illumination #实体

因此,直接将智能插座的实体ID复制过来即可,更新上述配置文件为:

1
2
3
4
5
6
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卡片】,将上述代码复制到编辑器区域内,成功显示:

32

33

但是我还是不满足!再美化一下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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

34

35

算了,不折腾了,大致就是这样,基础的配置在模块介绍页找就行,根据自己的情况套上去,看不懂就多看几次。不是很难的。

其他添加

添加不同的卡片,有不同的效果,各种卡片可以在 【HACS】 中搜索,各类卡片都能找到。

特别注意事项

在 【HACS】 中安装的js模块,一般会自动添加到【仪表盘】的【资源】中,如果没有添加,到时候会出现找不到js模块的情况。

如果出现这个问题,首先查看Mushroom的资源路径是否正确,一般是:/hacsfiles/lovelace-mushroom/mushroom.js

36

由于之前固有思维,【HACS】安装的目录是 hacs,导致我填写的资源路径都是 /hacs/.../xx.js,全都加载不出来,这是个大坑。

桥接HomeKit

来到【配置】-【设备与服务】-【添加集成】,搜索 Apple,添加【HomeKit Bridge】,【要包含的域】可以全部打勾,建议是勾选自己设备需要控制的几项就行。

37

38

之后会在左下角【通知】中显示二维码和一串Code,打开手机的【家庭】扫描,选择【仍然添加】,之后逐个添加按钮或者卡片。

39

40

【家庭】显示的详细程度不如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:

1
curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash

登录cpolar官网后台,点击左侧的验证,查看自己的认证 token,复制其值。

回到SSH界面,输入:

1
2
cpolar authtoken xxxxxxx
cpolar tcp 8123

添加并启动服务:

1
2
sudo systemctl enable cpolar
sudo systemctl start cpolar

登录后台,查看隧道在线状态

https://dashboard.cpolar.com/status

PS:此方法未测试,不保证其可靠性,猜测应该没问题

最后

写这篇文章挺累的,重新搭建了一遍,又重新添加了一次,自我感觉,其实该说的已经说清楚了,相信你也应该能通过这篇文章知道该如何操作了。

我一直觉得,可以学习是一件开心的事情,而且能把自己学到的东西分享给别人,人生是非常幸福的。

希望这篇文章也能给大家一些帮助。

最后想到一句话:人,可以走的慢一点,但是必须在正确的道路上;钱,可以赚的少一点,但是必须在正确的方向上。