智能折腾[1] - 安装 Home Assistant

前言

网上安装 Home Assistant (以下简称hass) 教程一吨,所以这个教程基本就是扫雷教程了

目前最新版的 hass 需要 python3.8 以上的版本

首先,我是比较不喜欢用现成方案 比如 hass.io 或者 docker 还有直接 unzip 方案来安装这个的(一点都不方便)
系统用的是目前流行的Linux发行版 Ubuntu 理论所有Linux系都可以参考
以及,本教程面对已经能基本使用Linux命令行的同学,如果您甚至还不知道如何编辑文件 删除文件,可以先学习再来。
推荐的新手教程: Linux 101

本教程默认使用 root 账号进行操作,如果您用的是普通用户,请在每个命令前面添加sudo 然后,进入正题

1.依赖安装

现在我们有了个全新安装的 Ubuntu 20.04

在一切开始之前,我推荐修改软件源来加快在国内的访问速度 教程可以参照 清华大学软件源 | 中国科学技术大学软件源 在用你喜欢的工具(nano vim)修改完成后,执行

apt update 

来更新本地包的数据库,如果正常更新,输出的结果应该是

root@test ~# apt update
Hit:1 http://mirrors.tuna.tsinghua.edu.cn/ubuntu focal InRelease
Hit:2 http://mirrors.tuna.tsinghua.edu.cn/ubuntu focal-updates InRelease
Hit:3 http://mirrors.tuna.tsinghua.edu.cn/ubuntu focal-backports InRelease
Hit:4 http://mirrors.tuna.tsinghua.edu.cn/ubuntu focal-security InRelease
Reading package lists... Done
Building dependency tree
Reading state information... Done
3 packages can be upgraded. Run 'apt list --upgradable' to see them.

然后我们来安装接下来可能会用到的依赖

apt install net-tools python3.8-dev python3-pip python3-setuptools libffi-dev ffmpeg

这里的 net-tools 是与网络相关的一些工具,比如 ifconfig 在接下来可能有用
python3-pip 就不用解释了,python的包管理器,大部分包管理器的资源在国内速度都是慢死的,所以我们对于 pip 也要用mirror源,所以强烈建议大家修改。

python3.8 -m pip install pip -U
python3.8 -m pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
  • 使用了清华大学的pip源 可以换成别的 比如阿里云啊 腾讯云的啊 这里就不列举了。
  • 也可以不修改,下载速度感人就是了,而且 home assistant 安装的话,是不会在下载失败以后重试的,也就是意味着你要在屏幕上盯好久
  • 我当初就是因为老是下载失败,差点放弃了这个坑

2. 安装 Home Assistant

没什么好说了的 就一行命令

python3.8 -m pip install wheel homeassistant

在设置反代源了后,基本三分钟内就可以滚完了 然后输入

hass

就可以开始运行 Home Assistant 核心服务了,初次运行会卡很久,因为还有很多依赖是在运行后才安装的,不用担心,一般十分钟内就ok了

hass-first-run-logout

等到日志输出 Home Assistant initialized 字样后,就代表 hass 已经安装好了
这时我们打开浏览器 输入服务器 ip:8123 例如 http://10.0.0.2:8123 就可以访问了
这时候我们有几种可以更便捷访问到hass的办法。

  1. 服务器的ip设置成静态的
  2. 路由器支持自动解析 hostname的话 可以用 hostname 在本地连接
  3. 路由器设置静态地址,绑定住

具体办法可以使用搜索引擎来解决

hass-first-run-register-page

于是 hass 就安装好了。设置个自己喜欢的账号密码,然后登录就ok

hass-main-page

3.设置开机自启

这里用了 systemd 的进程守护 就是在 /etc/systemd 创建个文件
路径 (名称随意,以.service为结尾) /etc/systemd/system/hass.service

[Unit]
Description=hass
After=network.target

[Service]
Type=simple
User=root
Restart=on-failure
RestartSec=5s
ExecStart=/usr/local/bin/hass

[Install]
WantedBy=multi-user.target

这里用的用户是 root 我是觉得无所谓,如果觉得不安全可以改成普通用户组(那么介绍Linux用户组 权限又是千字大坑了) After=network.target 就是等端口up了以后 才启动这个进程 保存后 输入 systemctl daemon-reload systemctl start hass #原来的hass要关掉 systemctl enable hass 设置自动启动

4.开热点

在上一篇文章里,我介绍了我家的智能设备连接的是服务器而不是路由器,所以我们需要找个网卡以及开个热点 在Linux下开热点,用的是 hostapd 软件包 使用 apt 安装

apt install hostapd

使用 ifconfig 来查找无线网卡的接口名字

root@iot-master ~# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        *以下省略

wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        *以下省略

这里的 eth0 是有线网卡 wlan0 是无线网卡
于是我们就可以配置 hostapd 了,选择一个你喜欢的编辑器来编辑
具体教程还是自己找吧 这篇要讲好久,等有空的时候再完善 于是我们有了一个网络只到服务器的热点,并不能连接到eth0的网络。 这里补充一点,可以使用 MASQUERADE 可以让 wlan0 可以正常上网。

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

坑点

  1. pip源不设置成镜像会坑死人 没准一小时都跑不完pip
  2. 在 arm64 平台下 pip还有些依赖不能自动补全,需要在运行hass前先装好
    • pip3 install aiohttp_cors wheel
  3. 热点可能很好配置,也可能很难,如果您的设备是 arm64 推荐直接用树莓派 + 你想做的事 来搜索
  4. 很多时候搜索引擎都搜不到你想解决的问题,所以还是多探索,多踩坑

ArchLinux 安装

pacman -S home-assistant

结尾

Home Assistant 的教程就这么结束了,其实是没有什么技术含量的,下一个教程会介绍接入小米平台,也就是正式开始折腾。