HomeAssistant的住所——老骥伏枥

起因

家里的智能家具的数量在逐渐增长,入坑了8266之类的单片机,又自己做了一些小玩意儿,智能家具的数量增速很快。同时,我也不想依赖于小米的智能家具,不想靠任何商业机构(开源,永远的神!),我想将自己的设备都接入。所以,我迫切需要一个家庭的智能家具服务器。把云服务,变成本地服务!

P.S.第一次安装homeassistant的时候,我家还没有智能家具。我也不知道装来干啥 (逃

服务器选择

说说部署到服务器的过程。家里有我之前配的一台 IDC 下来的华为 RH2288v2 。48线程128G的内存,虽然配置不错,但是太吵了!不可能一直开着!我的树莓派还有其它用处,我还在用它做一些东西,树莓派的性能实在太弱。

偶然间,从写字桌下翻出了吃灰多年的一台索尼笔记本,一眼认定,就是你了!

于是乎,我开始把这台快十年的老电脑,改成服务器!

正因如此, HomeAssistant 我将采用 docker 的方式进行安装。

配置概览

说起改造,人们大多认为,肯定要花点钱换换笔记本零件,然而过于平穷。所以硬件改造就算了,我们开始换它的系统吧!首先说说配置:

  • CPU:Intel Core 2 Duo T7250 双核移动端CPU
  • GPU:Intel Mobile GM965/GL960 没想到吧,我有独立显卡! 没有卵用的显卡
  • RAM:2GB 频率什么的已经无所谓了
  • HDD: 250G 硬盘电机还能转 读写速度比树莓派的 16G tf 卡快!
  • NET:令我没有想到的是它有一块千兆网卡!实测能跑到 850Mbps

然而就是这样一台电脑,到写博客为止,已经稳定运行了十天了!没有出任何问题。

P.S.老笔记本电脑的键盘真不错!

系统选择

一句话:商业发行版 爬!

在此基础上,我需要一个面向服务器的专用发行版,所以,毫不犹豫地,我使用了 Debian 11 。

对于这台服务器,我不需要任何图形化的桌面,这样可以极大程度地降低内存使用以及减少硬盘读写,这就像VPS一样,能ssh就足够了。至于笔记本的屏幕,把笔记本的合上就行了这样屏幕就不会亮了。

至于怎么安装 Debian 11 、换更新源、配置等基础操作,本文就不再解释了。

网络

由于部署的对象是 HomeAssistant 这类服务不应该部署在公网,例如VPS上。然而在国内使用,我们必须要一个可靠的网络环境,无论是 docker 还是访问 GitHub ( HACS 插件下载) 因此,我们必须要使用一个透明代理!(不嫌烦的话可以一个一个配置代理)因为我们要使用 docker ,我个人不建议使用 tproxy 的方式去代理,这样做的话会配置一系列的 nftable 规则,影响docker网络,还需要进一步配置才能为所有容器配置代理。

我选择采用 redirect 方式进行代理。在使用该方式的时候,UDP将不被代理,然而对于智能家具的中枢,压根不需要 UDP 代理。

将代理服务器运行在本地虽然增加了运行程序的数量,但我认为这明显是利大于弊的,这样可以保持它不受其他设备影响,保持较为稳定的运行状态。

你也可以使用这个项目来快速配置透明代理,基于 web 的控制界面非常适合这种情况,可以在其它设备上进行配置。

选择Docker

只要能装 docker 的服务器都是好服务器!

在透明代理的帮助下安装 docker 只需要按照官方指导进行安装,这里不再赘述。至于是使用 docker 镜像部署透明代理还是先部署透明代理再部署 docker 就是一个先有鸡还是现有蛋的问题,我选择先部署代理,这样可以不受到 docker 影响,以及获得一个“干净”的使用环境。

HomeAssistant 常用三种部署方式,树莓派配合镜像、虚拟机、docker。对于虚拟机方案,由于设备本身的原因,不太适合再搭建虚拟化平台,主要是核心数和内存限制,再者,运行效率肯定是要比 docker 低一些的。使用 docker 还有一个好处, Debian 下可以给出更多的操作可能性相比 HomeAssistant 的 Supervised 和 Add-ones 还是要强很多的。

官方页面中的安装方式比较这一节中,Container 这一列的不支持选项完全可以完美解决,而且还会提供更多的可能性。我们可以做到全系统级的备份,你可以参考《建立强大的备份系统》这篇博文进行全系统文件级备份。只要你对 Linux 了解一点点,这些完全不是问题。

部署

为了以后不用经常 ssh 到笔记本上进行维护,以及为了部署阶段方便管理,我选择了使用 Portainer 来使容器可视化。Portainer 本身作为一个容器进行部署,使用 web 界面进行管理,把渲染的任务交给客户端,使用体验还不错。

使用命令行的部署方式如下:

docker run -d \
  --name homeassistant \
  --privileged \
  --restart=unless-stopped \
  -e TZ=Asia/ShangHai \                          #设置时区,可省略,配置过程中可自动更新
  -v /PATH_TO_YOUR_CONFIG:/config \              #HomeAssistant 的配置文件存储位置,非常重要!
  --network=host \
  ghcr.io/home-assistant/home-assistant:stable   #你也可以使用 Docker Hub 拉取镜像

对应 Portainer 的 GUI 操作就不说了,会命令行,GUI 也是非常简单的,但是要注意一定将配置输入完全!

配置

部署完成后,访问 http://ip地址:8123 即可对其进行配置,这都是可视化的,配置起来也非常简单,也就是时区,家庭地址,登录用户名、密码之类的简单操作,如果你不太会可以参照官方的 Onboarding 页面。配置完后跳转到主页,我们的 HomeAssistant 就初步建好了!接下来我将使用 HACS 来进行集成(integration)的安装。

安装HACS

HACS 全名:Home Assistant Community Store 。它是一个非常优秀的集成和前端下载器,可以快速部署集成,不用一个个地手动修改配置文件,使用起来非常方便,通常都是一键点击,便可完成下载、安装。

注意:HACS 并不能安装插件。在 HomeAssistant 使用的外界资源中有三个概念

  • 集成 Integration
  • 插件 Add-ones
  • 前端

集成 Integration 是用来安装一些较为上层的东西,不改变系统本身的功能,在原有基础上进行操作,例如增加对某种智能家具产品的支持
插件 Add-ones 是用来改变较为底层的一些功能,例如实现 FTP 、数据库、使用 MQTT 通信等
前端 则是用来改变一些布局和主题的东西,为你的 HA 添加展示卡片。

这三个东西可以理解成浏览器的控件、插件、主题。判断前两个的区别就是是否需要改变系统,给系统安装新的东西。我们使用 Docker 部署是不支持使用插件的,但是我们完全可以依靠 Linux 搞出更多花活操作。

这就是为什么我提前安装了透明代理,否则 HACS 无法从 Github 上下载资源,你需要一个一个地手动安装。

对于安装 HACS 的条件,官方指出

  • Home Assistant 2021.2.0 版本以上
  • 一个 GitHub 账户
  • 支持的 安装方式
  • 可以访问 Home Assistant 的文件系统
  • 你知道怎样查看 Home Assistant 的日志
  • 可靠的互联网

以上内容为 2021.9.4 的中文翻译,具体情况可能发生变化,请访问 Prerequisites 页面来获取最新信息!

对于 Docker 部署的情况,安装 HACS 只需要在容器内执行命令即可

docker exec -it homeassistant bash         #进入 docker 容器终端
wget -O - https://get.hacs.xyz | bash -    #下载并安装 HACS

灯带脚本执行完成后,再次等待一段时间,直到 HomeAssistant 页面的 HACS 目录下提示准备完成,接下来,链接你的 GitHub 账户,重启 HomeAssistant 容器。 HACS 的安装就告一段落了。

安装一些必要的集成和前端

集成

前端

在安装过程中,你可能需要频繁重启 docker 容器来适配更改。你还可以根据自己的智能家具使用情况安装更多的集成和前端,实现更多的设备接入以及智能家具的可视化。

设备接入

如果你安装了对应的插件,你就可以实现与支持设备的通信,注意,一般 HA 是以网络的方式接入智能家具的,无法使用 Zigbee 或 蓝牙,你需要使用一个网关来控制这些设备,这样将网关接入 HA ,通过给网关来实现和这些设备之间的来连接,从而控制设备。

同样的,路由器和电脑、手机之类的设备也可以通过这个方式接入,来实现多个层面的管理,例如,通过手机的WiFi连接状态确定人员的在家情况,电脑开启后按时休息提醒等。

设备与实体

购买来的智能家具,称为一个设备,例如:新风机、空气净化器、智能灯等,而实体(entity)是每一个可控制的选项.以一个新风机为例,它的实体有

  • 风扇等级
  • 辅热等级
  • 二氧化碳浓度
  • PM2.5浓度
  • 各级滤芯的使用时常
  • 各级滤芯的剩余寿命
  • 动作列表

可以看到一个设备可以有十来个实体,有的实体是可以操作,可以有多个值,也可以只有一个值。有的实体则是不可操作的,例如二氧化碳浓度。

可视化

借助 HA 的概览面板我们可以制作出一个美观漂亮的智能家居可视化面板,虽然这个面板对于智能家具来说,用处并不是很大,不过可以做出类似 Magic Mirror 那样的效果,将大量信息显示到一个屏幕上,还可以配合人体传感器实现屏幕开关。

简单添加几个卡片,写一下 yaml 就可以获得一个不错的效果, yaml 使得界面高度可定制化,唯一缺点就是使用起来相对繁琐。

后续

后续工主要是设置自动化,不用张嘴就能控制家具,以及接入 ESP8266 设备,你可以使用 ESP home。之前使用 Awtrix 项目做了一个像素灯,它的服务端也就顺便搬到了这台电脑的 docker 上了。

后续的文章内容我会跟进 WS2812B 可寻址 LED 灯的原理 WLED 项目以及接入,MQ 传感器原理说明等。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇
隐藏
变装