Ubuntu下安装智能家居开源系统 hassio

2022-10-04 15:52:18 浏览数 (1)

HassIO 是什么?

有很多人根本不清楚 hassio和 homeassistant到底什么关系,这样理解吧,hassio是一个框架,他利用 docker 来部署 homeassistant,并且为homeassistant 提供各种插件(addons)。

而 homeassistant 在 hassio 中,homeassistant 是利用docker 部署起来,hassio 和homeassistant 是通过他们的API进行联系和沟通。

那么 hassio 到底做了什么,他作用是什么?

我的理解是:hassio 是利用Python写了一个类似 docker 管理器那样的程序,拥有 docker 的控制权,从而达到升级/降级 homeassistant 容器,安装/卸载 addons的目的。

HassOS 又是什么?

这个是 HomeAssistant 官方为了打造开箱即用运行 hassio 做的系统,他不基于任何一个 Linux 发行版,他的设计完全为了给 hassio 服务,我理解他为最小化的 docker 安装系统。

由于他不基于任何一个 Linux 发行版,所以他没有任何包管理工具,如果你想在宿主机安装某些工具,一切工具链都需要自己搞,或者给官方提 issue 等待他们更新。

另外,由于安全考虑, HassOS 默认是不开放 ssh 连接,所以需要后台管理的话比较麻烦。另外由于不能修改系统内部的 docker 源,pull 容器的时候特别的慢,需要旅游才可以顺畅。

HassOS 和自己安装的 Hassio 有何不同?

本质使用上没有什么不同,只是一个跑在他们高度定制工具链需要自己构建的系统,一个是已经安装在高度成熟的 Debian Ubuntu 这些系统上,并可以自己随意修改 docker 源,系统也有包管理器,丰富的应用可以一键安装。

另这是我对 HassOS 的刻板印象,有可能他现在已经修复,但 HA 官方团队的喜好变化无常,最开始是使用一款树莓派系统来魔改,后来又改名字叫 hassio 系统,现在又改名叫 hassos,而 hassio 目前又改名叫 supervisor。恩,不知道多久,会不会又把 hassos 干掉。

Docker 又是什么?

建议看一下docker 的教程写的很好《Docker — 从入门到实践》

Docker 你可以将其理解成一个类似虚拟机的系统(但内核是和宿主共用的,故此比传统的虚拟机更轻量)。他的初衷是为了给各个业务系统提供一个干净的隔离环境(我自己理解,可能比较片面与不准确)。

我称 Docker 为运维神器,为什么?因为Docker 可以让你实现开箱即用。举个例子,如果我的hassio要迁移,我只需要把 hassio文件夹拷走(默认路径 /usr/share/hassio),然后拷贝到新的机器上,再运行我的一键脚本,整个 hassio 的所有东西,包括addons插件都会按照原来的方式运行,这要归功于 docker 的便利性。

Addons 是什么

hassio 设计了一套他独有的 addons 容器编写规范,由于是hassio独有,所以这些 addons 只适配 hassio 使用。

我能不能在其他支持docker 的机器上安装 addons(不依赖 hassio)?

答案其实是可以的,因为 addons 其实都是跑在docker 上所以只要设备能安装docker,那么 addons 其实就可以跑。但是上面也说了,addons是基于 hassio规范来设计的容器,所以我们在无 hassio 的情况下使用 addons 就要手工按照 hassio 配置方式来启动 addons了,具体怎么启动可以参考 addons 官方制作文档**Developing an add-on

hassio_install

hassio 一键安装脚本,实现以下功能。

  1. 自动更改系统源为中科大源。(目前支持 Debian Ubuntu Raspbian 三款系统)
  2. 自动安装 Docker,可以选择切换 Docker 源为国内源,提高容器下载速度。
  3. 避开 Hassio 因亚马逊连接超时导致无法拉取最新版本的 Homeassistant 容器。

目前支持的系统

  • Raspbian
  • Ubuntu 测试版本 18.04 LTS通过,但按道理 16 以上都可以。
  • Debian 测试版本 9.5 通过。

安装过程

Ubuntu系统安装略过就不必介绍了吧

安装SSH服务远程登录(本地操作该步可以略过)

检查SSH服务是否已启动

打开终端输入以下指令:

代码语言:javascript复制
$ ps -e | grep ssh
 00:00:00 sshd
 pts/1    00:00:00 ssh

若输入指令后显示类似于上图所示,则说明SSH服务已启动

其中sshd表示ssh-server已启动,ssh表示ssh-client已启动

安装SSH服务

安装SSH的客户端和服务端:

代码语言:javascript复制
$ sudo apt-get install openssh-client
$ sudo apt-get install openssh-server
启动SSH服务

安装完成后通过以下指令启动:

代码语言:javascript复制
$ sudo /etc/init.d/ssh start

启动后通过以下指令判断SSH服务是否正确启动:

代码语言:javascript复制
$ ps -e | grep ssh

若启动成功,则终端内会出现类似于第一步出现的结果

修改SSH端口号

SSH默认端口号为22,若有修改SSH端口号的需求,则运行以下指令打开SSH配置文件

代码语言:javascript复制
$ sudo gedit /etc/ssh/sshd_config

可以看到如下图所示:

代码语言:javascript复制
$ sudo /etc/init.d/ssh restart
数据传输

完成SSH服务配置之后即可实现基于SSH的数据传输,最常用方便的指令便是scp,以下是常用scp指令:

代码语言:javascript复制
$ scp -r usr@43.224.34.73:/home/lk   /root  //将远程IP地址为43.224.34.73的usr用户下路径为 /home/lk 的所有文件拷贝到本地 /root 文件夹中

$ scp usr@43.224.34.73:/home/lk/test.jar   /root  //将远程IP地址为43.224.34.73的usr用户下路径为 /home/lk 的test.jar文件拷贝到本地 /root 文件夹中

$ scp -r /root  usr@43.224.34.73:/home/lk    //将本地 /root 中的所有文件拷贝到远程IP地址为43.224.34.73的usr用户下路径为 /home/lk 的文件夹中

$ scp /root/test.jar   usr@43.224.34.73:/home/lk   //将本地 /root 中的test.jar文件拷贝到远程IP地址为43.224.34.73的usr用户下路径为 /home/lk 的文件夹中

scp的通用指令格式为:scp [参数] [原路径] [目标路径]

其中-r参数意为:递归复制整个目录

安装HASSIO

以 root 身份运行以下命令。

代码语言:javascript复制
wget https://code.aliyun.com/neroxps/hassio_install/raw/master/install.sh
chmod a x install.sh
./install.sh
操作说明
停止(但重启依然会自启动)

systemctl stop hassio-supervisor.service

重启

systemctl restart hassio-supervisor.service

禁用自启动

systemctl disable hassio-supervisor.service

启用自启动

systemctl enable hassio-supervisor.service

查询当前启动状态

systemctl status hassio-supervisor.service

查询当前是否自启动

systemctl is-enabled hassio-supervisor.service

查询 hassio 日志

docker logs -f hassio_supervisor

查询 hassio 日志最新20行信息

docker logs -f hassio_supervisor --tail 20

查询 ha 日志

docker logs -f homeassistant

查询 ha 日志最新20行信息

docker logs -f homeassistant --tail 20

> systemctl 说明 : https://linux.cn/article-5926-1.html > docker logs 命令用法:https://docs.docker.com/engine/reference/commandline/logs

如果安装的是 64 位系统,脚本会自动筛选适配 64 位的设备列表
代码语言:javascript复制
(1). 是否将系统源切换为中科大(USTC)源(目前支持 Debian Ubuntu Raspbian 三款系统)
请输入 y or n(默认 yes):y

(2). 在你系统内找到 nero 用户,是否将其添加至 docker 用户组。
请输入 yes 或者 no (默认 yes):y
将nero用户添加至 docker 用户组。

(3).是否需要替换 docker 默认源?
请输入 yes 或者 no(默认:yes):y

(4).请选择你设备类型(默认:qemux86-64)
    [1]: raspberrypi3-64
    [2]: qemuarm-64
    [3]: qemux86-64
输入数字 (1-3):
你选择了 qemux86-64
 ################################################################################
 # 1. 是否将系统源切换为中科大(USTC)源: 是
 # 2. 是否将用户添加至 Docker 用户组:   是,添加用户为 nero 
 # 3. 是否将 Docker 源切换至国内源:     是
 # 4. 您的设备类型为:                   qemux86-64
 ################################################################################
请确认以上信息,继续请按任意键,如需修改请输入 Ctrl C 结束任务重新执行脚本。
如果安装的是 32 位系统,脚本会自动筛选适配32位的设备列表
代码语言:javascript复制
请输入 y or n(默认 yes):y

(2). 在你系统内找到 nero 用户,是否将其添加至 docker 用户组。
请输入 yes 或者 no (默认 yes):y
将nero用户添加至 docker 用户组。

(3).是否需要替换 docker 默认源?
请输入 yes 或者 no(默认:yes):y

(4).请选择你设备类型(默认:qemux86)
    [1]: raspberrypi
    [2]: raspberrypi2
    [3]: raspberrypi3
    [4]: qemuarm
    [5]: qemux86
    [6]: intel-nuc
输入数字 (1-6):
你选择了 qemux86
 ################################################################################
 # 1. 是否将系统源切换为中科大(USTC)源: 是
 # 2. 是否将用户添加至 Docker 用户组:   是,添加用户为 nero 
 # 3. 是否将 Docker 源切换至国内源:     是
 # 4. 您的设备类型为:                   qemux86
 ################################################################################
请确认以上信息,继续请按任意键,如需修改请输入 Ctrl C 结束任务重新执行脚本。

> 引用自:「Hass-neroxps」 > 引用自:「cnblogs-HM巧克力酱」

0 人点赞