『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 22501|回复: 23

树莓派上部署HASS.IO详解及解决左侧Hass.io面板无法打开的问题

[复制链接]

1

主题

26

帖子

123

积分

论坛分享达人

积分
123
金钱
97
HASS币
0
发表于 2018-3-16 16:00:18 | 显示全部楼层 |阅读模式
本帖最后由 mwh1987 于 2018-3-16 17:29 编辑


请先查看官方安装文档



树莓派上部署HASS.IO的帖子论坛上的前辈已经讨论得很多了,我是看了从零开始【树莓派stretch】安装【docker】【hassio】【debian9】这个帖子安装的,相信很多人也是看了这个帖子安装成功的,但是我按照这个帖子安装时遇到了一些坑,最后也是翻了其他的一些帖子等到了解决,现在分享出来,希望能帮原作者填好坑,对大家有所启发。
什么是HASS.IO?


HASS.IO是官方推出的全新HomeAssistant安装方式,省去了许多命令行操作,鼠标点击就可轻松安装各种插件,可谓新手之福音

论坛板块简介是这样说的。
Hass.io 是一款 Home Assistant 特别定制的高集成度、图形化操作、易上手的 Home Assistant 系统。系统由 ResinOS 及 Docker 驱动,旨在简化 Home Assistant 的配置操作。

目前 Hass.io 支持树莓派、Intel NUC 及 Linux 系统。

Home Assistant 中文文档这样解释。

在我看来,Hass.io就是基于 Docker 管理的 HomeAssistant ,但是却不是简单的将 HomeAssistant   Docker 化,而是同时提供了强大的管理功能,真可谓广大HA使用者之福音!


什么是Docker?


docker相当于一种轻量级的虚拟机。

docker可以在同一操作系统下使不同的应用既能同时隔离运行不冲突,而又能按需相互通信,共同享主机资源。


安装Docker:


这里不赘述,可以参考从零开始【树莓派stretch】安装【docker】【hassio】【debian9】

安装HASS.IO:


准备工作:


  • 安装armhf-homeassistant镜像
    docker pull homeassistant/armhf-homeassistant:latest
  • 安装armhf-hassio-supervisor镜像
    docker pull homeassistant/armhf-hassio-supervisor:latest



安装完后查看到Docker下安装了两个镜像,先不运行。


实际上官方的说法只有一条命令:

curl -sL https://raw.githubusercontent.com/home-assistant/hassio-build/master/install/hassio_install | bash -s -- -m raspberrypi3

我们可以看看这条命令的内容:

点这里查看

实际上是这几个步骤:
  • # Check env   检查环境
  • # Check system options  检查系统选项
  • #Parse command line parameters  解析命令行参数
  • #Generate hardware options  生成硬件选项
  • #Init folders 初始化文件夹
  • # Install supervisor 安装supervisor 进程管理器 docker
  • # Install generic hostcontrol 安装 HostControl hassio-hc
  • # Install start-hassio 安装 start-hassio
  • # Init system  初始化系统(设置服务开机启动,并启动服务)


安装如果顺利结果打印如下:



pi@mwh1987:~$ sudo su
root@mwh1987:/home/pi# curl -sL [url=https://raw.githubusercontent.com/home-assistant/hassio-build/master/install/hassio_install]https://raw.githubusercontent.co ... tall/hassio_install[/url] | bash -s -- -m raspberrypi3
[INFO] Install supervisor docker
[INFO] Install generic HostControl
[INFO] Install startup scripts
[INFO] Init systemd
[INFO] Start services


实际上 supervisor docker 的安装 我们在准备工作时提前做好了,所以此条命令不会重复再下载supervisor docker 安装 ,节省了时间,此条命令执行完成实际不需要多长时间。

查看HASS.IO运行状态

sudo journalctl -fu hassio-supervisor.service


注意此条命令的结果中可以找到 hassio-supervisor 的docker 中使用的 ip 地址,记下来,例如我的是:172.30.32.2。如果不知道,需要进入hassio-supervisor容器中查看。

进入容器查看地址的方法如下:

root@mwh1987:/home/pi# docker exec -ti 43d5a9cd4371 /bin/bash
bash-4.4# ls
bin    dev    home   media  proc   run    srv    tmp    var
data   etc    lib    mnt    root   sbin   sys    usr
bash-4.4# ifconfig
eth0      Link encap:Ethernet  HWaddr 02:42:AC:11:00:03
          inet addr:172.17.0.3  Bcast:0.0.0.0  Mask:255.255.0.0
          inet6 addr: fe80::42:acff:fe11:3/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:221538 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2616 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:19607889 (18.6 MiB)  TX bytes:222144 (216.9 KiB)

eth1      Link encap:Ethernet  HWaddr 02:42:AC:1E:20:02
          inet addr:172.30.32.2 Bcast:0.0.0.0  Mask:255.255.254.0
          inet6 addr: fe80::42:acff:fe1e:2002/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:153370 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1024 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:12256890 (11.6 MiB)  TX bytes:2633681 (2.5 MiB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:149 errors:0 dropped:0 overruns:0 frame:0
          TX packets:149 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1
          RX bytes:12870 (12.5 KiB)  TX bytes:12870 (12.5 KiB)

【重要】启动homeassistant


命令是这样的:
docker run -d --name="home-assistant" --restart=always  --net=host -e HASSIO=172.30.32.2 -v /home/pi/hass/config:/config -v /etc/localtime:/etc/localtime:ro homeassistant/armhf-homeassistant:latest


注意参数 : -e HASSIO=172.30.32.2 就是告诉homeassistant HASSIO 的正确地址,否则homeassistant无法使用 HASSIO 来管理,就会出现左侧Hass.io面板无法打开的问题。

docker ps -a
CONTAINER ID        IMAGE                                      COMMAND                  CREATED             STATUS              PORTS                    NAMES

cd36f23a6443        homeassistant/armhf-homeassistant:latest   "/usr/bin/entry.sh py"   16 hours ago        Up 5 hours                                   home-assistant
43d5a9cd4371        homeassistant/armhf-hassio-supervisor      "/usr/bin/entry.sh py"   17 hours ago        Up 17 hours                                  hassio_supervisor



以上解决了以下帖子中提到的问题:
群晖安装了homeassistant,但界面里怎么没有hass.io这项


【求助】安装成功后,Hass.io面板无法打开



树莓派3安装hassio遇到一点问题,请教

左侧栏项目显示不全,没有hass.io栏目







评分

参与人数 2金钱 +15 收起 理由
jyz_0501 + 7 膜拜大神!
neroxps + 8 谢谢分享!

查看全部评分

回复

使用道具 举报

0

主题

20

帖子

104

积分

注册会员

Rank: 2

积分
104
金钱
84
HASS币
0
发表于 2018-3-16 16:22:08 来自手机 | 显示全部楼层
感谢楼主分享经验。
回复

使用道具 举报

40

主题

3056

帖子

1万

积分

超级版主

Nero

Rank: 8Rank: 8

积分
11149
金钱
8042
HASS币
182
发表于 2018-3-16 16:22:13 | 显示全部楼层
本帖最后由 neroxps 于 2018-3-16 16:31 编辑

如果是用一键脚本安装的话,当你启动 systemctl start hassio-serupvisor 之后,会运行 hassio-start 这个脚本,然后会自动启动 homeassistant的。不需要手动run。

详细可以看看https://bbs.hassbian.com/thread-2597-1-1.html。虽然这样也不会出什么问题。重启之后也会正常启动homeassistant

另外 论坛前几天支持了 MarkDown 语法,可以用 Markdown 语法来写帖子,就不需要排版了。。。

[md]
# Markdown 内容
# 大标题

## 二级标题

1. 有序序列
2. 有序序列
3. 有序序列

- 无序序列
- 无序序列

**加粗**

[/md]

Markdown 内容

大标题

二级标题

  1. 有序序列
  2. 有序序列
  3. 有序序列
  • 无序序列
  • 无序序列

加粗


Nero
回复

使用道具 举报

1

主题

26

帖子

123

积分

论坛分享达人

积分
123
金钱
97
HASS币
0
 楼主| 发表于 2018-3-16 16:30:22 | 显示全部楼层
neroxps 发表于 2018-3-16 16:22
如果是用一键脚本安装的话,当你启动 systemctl start hassio-serupvisor 之后,会运行 hassio-start 这个 ...

谢谢提醒,是我手误写错了,hassio-start 只会启动 hassio_supervisor(管理进程) 这个容器,但是 homeassistant (主进程)需要手动运行。
回复

使用道具 举报

40

主题

3056

帖子

1万

积分

超级版主

Nero

Rank: 8Rank: 8

积分
11149
金钱
8042
HASS币
182
发表于 2018-3-16 16:37:14 | 显示全部楼层
mwh1987 发表于 2018-3-16 16:30
谢谢提醒,是我手误写错了,hassio-start 只会启动 hassio_supervisor(管理进程) 这个容器,但是 homea ...

不需要的,你先看看hassio-start这个脚本.

其中

runSupervisor() {
    docker rm --force hassio_supervisor || true
    docker run --name hassio_supervisor \
        -v /var/run/docker.sock:/var/run/docker.sock \
        -v /var/run/hassio-hc.sock:/var/run/hassio-hc.sock \
        -v /var/run/dbus:/var/run/dbus \
        -v %%DATA_SHARE%%:/data \
        -e SUPERVISOR_SHARE=%%DATA_SHARE%% \
        -e SUPERVISOR_NAME=hassio_supervisor \
        -e HOMEASSISTANT_REPOSITORY=%%HOMEASSISTANT_IMAGE%% \
        %%SUPERVISOR_IMAGE%%
}

这里实际上就是告诉 hassio 启动哪一个 homeassistant容器名字版本。

而 hassio 会先拉去 homeassistant/armhf-homeassistant:landingpage 这个容器来,让你先看到页面,然后再拉homeassistant/armhf-homeassistant:【版本号】。
拉回来之后,再运行。

Nero
回复

使用道具 举报

40

主题

3056

帖子

1万

积分

超级版主

Nero

Rank: 8Rank: 8

积分
11149
金钱
8042
HASS币
182
发表于 2018-3-16 16:43:47 | 显示全部楼层
还有一个问题
sudo docker run --name homeassistant --net=host -e HASSIO=172.30.32.2 homeassistant/armhf-homeassistant

这样run 的话 /config 这个文件夹怎么处理?如何持久化到本地?
Nero
回复

使用道具 举报

1

主题

26

帖子

123

积分

论坛分享达人

积分
123
金钱
97
HASS币
0
 楼主| 发表于 2018-3-16 16:45:39 | 显示全部楼层
neroxps 发表于 2018-3-16 16:37
[md]
不需要的,你先看看[hassio-start](https://github.com/home-assistant/hassio-build/blob/master/i ...

homeassistant 容器 应该在哪个最佳时间运行,应该是由哪个脚本运行的,我一直没有搞清楚。
回复

使用道具 举报

40

主题

3056

帖子

1万

积分

超级版主

Nero

Rank: 8Rank: 8

积分
11149
金钱
8042
HASS币
182
发表于 2018-3-16 16:48:32 | 显示全部楼层
本帖最后由 neroxps 于 2018-3-16 16:50 编辑
mwh1987 发表于 2018-3-16 16:45
homeassistant 容器 应该在哪个最佳时间运行,应该是由哪个脚本运行的,我一直没有搞清楚。 ...

不需要运行,hassio 通过 /run/docker.sock 掌控了 docker 的控制权,所以 hassio 会自动拉取 homeassistant 镜像,还有其他 addons 镜像。
你可以看看 hassio 的代码,他是用 python 来实现对 docker 的控制。

你要做的就是运行  docker logs -f hassio_supervisor 来查询hassio 是否拉完 homeassistant 的镜像下来,所以建议换 docker 国内源咯。
Nero
回复

使用道具 举报

1

主题

26

帖子

123

积分

论坛分享达人

积分
123
金钱
97
HASS币
0
 楼主| 发表于 2018-3-16 16:51:37 | 显示全部楼层
neroxps 发表于 2018-3-16 16:43
还有一个问题
[code]sudo docker run --name homeassistant --net=host -e HASSI ...

谢谢大神提醒,已更正
回复

使用道具 举报

1

主题

26

帖子

123

积分

论坛分享达人

积分
123
金钱
97
HASS币
0
 楼主| 发表于 2018-3-16 16:55:26 | 显示全部楼层
neroxps 发表于 2018-3-16 16:48
不需要运行,hassio 通过 /run/docker.sock 掌控了 docker 的控制权,所以 hassio 会自动拉取 homeassista ...

可能是我安装顺序跟教程上有差异,让我感觉很玄,如果删除重新安装说不定不会出问题。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2025-1-20 01:47 , Processed in 0.254119 second(s), 33 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表