树莓派安装homeassistant全流程(非docker方式)

2021-01-20 18:47:10 21点赞 113收藏 15评论

创作立场声明:树莓派自费购入后就在家里落灰,所以不存在利益相关,仅仅为了记录折腾过程,并分享给值友们,希望对大家有所启发。

1、前言

这篇文章也许是这个系列的最后一篇了,但是也不一定。

如你所料,我的树莓派也和你一样,一直在吃灰。

因为树莓派3B的性能有限,之前在树莓派上实现的功能已全部转到 sinoc 主机 黑群晖上了,见:

sinoc 主机 篇一:300元 Sinoc NAS主机整机——2020年第一辆矿车,能不能上?是返乡过年?还是就地过年?最新一届#双面过节指南#开始啦!本次征稿活动分为A面返乡和B面就地,大家可以根据自己的情况,分享自己的春节攻略,优秀的投稿文章还有可能能获得优厚的大奖哦,快点击查看活动详情mwh1987| 397 评论475 收藏1k查看详情


之前在树莓派上所实现的功能:

samba -----------------局域网文件共享

sshfs------------------广域网文件共享

ssh------------ -------远程管理

vnc/xrdp---------------远程桌面

aria2/transmission-----远程下载

nextcloud--------------私有云

syncthing---------------文件同步

nginx-------------------web服务

frp---------------------内网穿透

emby/jellyfin-----------视频管理

calibre-----------------电子书管理

以上功能全部迁移到群晖上,太简单了,基本上都有现成的教程,所以“sinoc 主机 ”系列的文章也不一定会有后续了,也许会有一两篇,记录我怎样在群晖上建立我的私人电子书网站:

https://kandou.cc

https://books.kandou.cc/

很早以前有使用树莓派安装 homeassistant 的经历,因为使用的是 docker 安装方式,可能是因为docker 安装方式比较占用存储空间,homeassistant 的日志文件太大了,于是将日志文件放在移动硬盘上,最后可能因为移动硬盘频繁写入日志,挂掉了,我的结论是 homeassistant 对硬盘是不友好的,于是没有打算使用群晖来安装 homeassistant ,于是又找到了落灰已久的树莓派,这次换了个32G 的 TF卡,写坏了也不心疼。

2、Home Assistan安装

方案选择

首先转载一张图,这张图是在树莓派上安装Home Assistant的不同方式。

树莓派安装homeassistant全流程(非docker方式)

其中Hassbian没有图形界面,详见:https://www.home-assistant.io/blog/2019/10/26/rip-hassbian/

Mossbian是由Hassbian改版的本土版本,详情:https://home-assistant.cc/mossbian/ 目前已停止维护,遂放弃这两种方案。

这里不使用docker ,就直接在树莓派的系统Raspbian上通过手动的方式安装Home Assistant;

开始安装

安装Home Assistant过程

以下内容参考官方指导页面: https://www.home-assistant.io/docs/installation/raspberry-pi/

个人建议在网速良好的环境下安装或者将软件源更换到国内,否则很有可能安装完之后无法打开页面,或者页面返回 404 错误

2.1 使用以下指令修改树莓派 pi 用户的默认密码,注意,一定要修改,否则安装会出错。


passwd

2.2 更新系统


sudo apt-get update
sudo apt-get upgrade -y

2.3 安装依赖

如果你是下载的最新的系统,此步骤应该会很快


$ sudo apt-get install python3 python3-dev python3-venv python3-pip libffi-dev libssl-dev libjpeg-dev zlib1g-dev autoconf build-essential libopenjp2-7 libtiff5

pip国内镜像配置

这一步一定不能少

很多安装Home Assistant未成功的,往往都是因为python依赖模块无法成功安装,而其中由于网络不通也占比不少。

这里配置清华的源,可以参照:https://mirrors.tuna.tsinghua.edu.cn/help/pypi/

临时使用

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple some-package

注意,simple 不能少, 是 https 而不是 http

设为默认

升级 pip 到最新的版本 (>=10.0.0) 后进行配置:

pip install pip -U
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

如果您到 pip 默认源的网络连接较差,临时使用本镜像站来升级 pip:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pip -U

2.4 添加Home Assistant账号及安装目录

Home Assistant不能使用root运行,可以建个专用用户,然后顺便把GPIO的权限都给它,方便以后连接其它传感器。

sudo useradd -rm homeassistant -G dialout,gpio,i2c

cd /opt && sudo mkdir homeassistant

sudo chown homeassistant:homeassistant homeassistant

但是这里我直接使用系统默认的 pi 用户来运行,只需执行以下命令:

cd /opt && sudo mkdir homeassistant

sudo chown pi:pi homeassistant

2.5 python虚拟容器创建及Home Assistant安装


cd /opt/homeassistant

python3 -m venv .

source bin/activate

python3 -m pip install wheel #这一条可以不执行,实测执行了反而又会变慢,多次重试才安装成功

cd /opt/homeassistant && pip3 install homeassistant

2.6 启动 homeassistant

使用下面的指令启动 Home Assistant ,在此过程中将会创建配置文件(配置文件位置位于/home/pi/.homeassistant/ 如果发生错误,可以将些文件夹下内容删除,再重新启动 homeassistant),并且安装所需要的一些软件。此过程实测在 3B 上大约耗时20-30 分钟。你可以打开浏览器,输入 ipaddress:8123(将 ipaddress 换成树莓派的 IP 地址),直到网页成功加载即可。


source /opt/homeassistant/bin/activate

hass

第一次访问需要创建一个用户。然后输入刚刚创建的用户名和密码登录Home Assistant

树莓派安装homeassistant全流程(非docker方式)

如果你可到网页加载成功加载了 homeassistant 的主页,那么切回命令行,先用 Ctrl + C 退出 homeassistant ,再输入如下指令退出 python 虚拟环境,因为我们还要设置开机启动。

(homeassistant) $ exit

我们使用Jupyter Notebook 来编辑Home Assistant 的配置文件。

2.7 安装jupyter notebook

推荐 python3 环境下安装 jupyter。树莓派3里面内置了 python3,所以直接安装 jupyter,如果系统 python 版本是 python2.7,可以使用 virtualenvwrapper 进行多版本python管理。

下面使用pip来安装 jupyter notebook

sudo apt-get install python3-pip // 安装pip3
sudo pip3 install jupyter // 安装jupyter

注意:jupyter 是单用户服务,如果想使用多用户服务可以使用jupyterhub

2.8 配置 jupyter notebook

生成配置文件

下面命令将在~/.jupyter目录下面生成jupyter notebook配置文件jupyter_notebook_config.py

sudo jupyter notebook --generate-config

修改jupyter_notebook_config.py文件中以下配置:

c.NotebookApp.ip = '*' // jupyter监控地址
c.NotebookApp.port = 8888 // jupyter监听端口
c.NotebookApp.allow_remote_access = True // 运行以非localhost/127.0.0.1访问

2.9 配置登录密码

jupyter启动服务时候,默认是使用一次性token进行登录验证的。我们需要使用以下命令来给jupyter服务配置登录密码:

sudo jupyter notebook password

按照提示输入密码,再次确认密码就可以了。这条命令需要jupyter notebook版本不小于5.0才支持。若不支持可以按照下面方式来配置,详细见官方文档

在python交互模式下,输入以下命令

>>> from notebook.auth import passwd
>>> passwd()
Enter password:
Verify password:
'sha1:5952f1c3c7ec:16852a1f8ee36f7cb716b74d3e0127efee106c1c'

然后复制上面的hash处理之后的字符串到~/jupyter_notebook_config.py

c.NotebookApp.password = u'sha1:5952f1c3c7ec:16852a1f8ee36f7cb716b74d3e0127efee106c1c'

2.10 启动服务并验证

配置完成之后我们可以使用 jupyter notebook来启动服务

cd /home/pi/.homeassistant // 使用homeassistant 的配置目录作为jupyter的工作目录
jupyter notebook

完成上面操作,打开浏览器,地址栏输入 ipaddress:8888(将 ipaddress 换成树莓派的 IP 地址),即可打开jupyter ,这时候 Home Assistant 的目录是隐藏的,这时在新开的终端 输入

ln -s .homeassistant/ homeassistant

然后刷新 jupyter Notebook 就可以看到 Home Assistant 的目录了。

树莓派安装homeassistant全流程(非docker方式)

可直接编辑配置文件 configuration.yaml:

树莓派安装homeassistant全流程(非docker方式)

注意配置缩进,一定要注意。

到此已经介绍完 Home Assistant 在树莓派上的安装。但是关掉终端,就会发现Home Assistant 无法访问了。下面我就介绍一下如何把Home Assistant 安装成服务 进行自启动。

2.11 设置开机启动

sudo nano /etc/systemd/system/homeassistant.service

编辑内容如下:

[Unit]

Description=Home Assistant

After=network-online.target

[Service]

Type=simple

User=pi

ExecStart=/opt/homeassistant/bin/hass -c "/home/pi/.homeassistant"

[Install]

WantedBy=multi-user.target

保存退出。

sudo systemctl daemon-reload

sudo systemctl enable homeassistant

同样也可以用相同的方式把 Jupyter Notebook 也安装成服务 自启动:

sudo nano /etc/systemd/system//jupyter-notebook.service

编辑内容如下:

[Unit]

Description=Jupyter Notebook

[Service]

Type=simple

ExecStart=/usr/local/bin/jupyter-notebook

User=pi

[Install]

WantedBy=multi-user.target

保存退出。

同样输入指令 sudo systemctl enable jupyter-notebook

手动启动 刚刚安装的两个服务:

sudo systemctl start homeassistant

sudo systemctl start jupyter-notebook

这样下次就不用在终端输入命令来启动服务了,直接开启树莓派就可以使用。


2.12 服务相关命令(以homeassistant服务为例)

重载服务配置: sudo systemctl --system daemon-reload

将服务加入自启动: sudo systemctl enable homeassistant

将服务移除自启动: sudo systemctl disable homeassistant

手工启动服务: sudo systemctl start homeassistant

手工停止服务: sudo systemctl stop homeassistant

手工重启服务: sudo systemctl restart homeassistant

查看服务输出: sudo journalctl -f -u homeassistant


后记

树莓派的折腾就到此为止了,“sinoc 主机 ”系列的文章也不一定会有后续了,也许会有一两篇,记录我怎样在群晖上建立我的私人电子书网站:

https://kandou.cc

https://books.kandou.cc/

码字太难了。

展开 收起
15评论

  • 精彩
  • 最新
  • 虽然学计算机的,现在还在搞软件,也看不进去咋弄, 继续对付小米全家桶吧 [喜极而泣]

    校验提示文案

    提交
    如你所言,太复杂了,只适用于有特殊个性需求的人来折腾。我搞完后,还是回到原来的小米全家桶,真香。。

    校验提示文案

    提交
    收起所有回复
  • 穷人整不起树莓派,出了n1现在后悔的不得了,还有什么物美价廉的玩具推荐?

    校验提示文案

    提交
    玩客云可以

    校验提示文案

    提交
    收起所有回复
  • 不知道为啥报错的内容一直发不到评论区里 [内伤]

    校验提示文案

    提交
    使用清华的源试试,文中有更改pip源的方法。

    校验提示文案

    提交
    pip的源已经改了,怀疑是Python版本的问题,你用的是3.x的Python吗?

    校验提示文案

    提交
    还有2条回复
    收起所有回复
  • 和jellyfin能共存吗

    校验提示文案

    提交
    相互独立安装,是不会互不影响的。事实上我之前所有的文章上部署的服务都是可以共存的。

    校验提示文案

    提交
    收起所有回复
  • 顶,这么好的教程不能让评论空荡荡

    校验提示文案

    提交
  • sudo pip3 install jupyter
    安装jupyter时报错

    校验提示文案

    提交
  • 树莓派的官方烧录工具不是已经可以一键烧录HAOS了嘛,这个应该是才最省事的

    校验提示文案

    提交
  • Raspbian有版本要求吗,Raspberry Pi OS Lite可否?

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
113
扫一下,分享更方便,购买更轻松