1. 什么是Home Assistant

Home Assistant 使用 Python3 开发的,是一个完整的 UI 管理的家庭自动化生态系统,它运行 Home Assistant Core、Home Assistant Supervisor 和附加组件。它预装在 Home Assistant OS 上,当然也可以安装在任何 Linux 系统上。它利用由 Home Assistant Supervisor 管理的 Docker,以及在 Home Assistant 环境中本地运行的数十个附加组件。

官网:https://www.home-assistant.io/

2. Home Assistant 安装方式

下面网址是官网介绍怎么安装 Home Assistant 的:

https://www.home-assistant.io/installation/

其中,Home Assistant 一共提供了4种安装方式:

  • Home Assistant Operating System:直接在你的硬件中烧录 Home Assistant 做好的系统镜像,比如官网就有基于树莓派硬件定制的 Home Assistant OS。但前提必须是官方的镜像是支持你的硬件设备的,比如官方做的树莓派的 Home Assistant 镜像,就支持树莓派的硬件。

  • Home Assistant Container:这是基于 Docker (容器)的一种安装方式。

  • Home Assistant Supervised:手动安装 Supervisor 。这种方式的优势就是可以在所有常规的 Linux 系统上运行。但是相对繁琐和困难。

  • Home Assistant Core : 使用 Python 虚拟环境手动安装。

其中,官方推荐的是前面两种方式进行安装,特别是基于官方做好的镜像安装,功能最全面,但是前提是他做好的镜像要支持你的硬件才行。比如官方就做好了树莓派的镜像,如果你的硬件使用的是树莓派,可以直接烧录人家做好的镜像就行。

下面是这4种安装方式所拥有的功能对比图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gxMjUYRg-1683978271123)(picture/image-20230513174825054.png)]

可以看到基于 OS 方式安装,功能最全面。

我在自己的Linux开发板上面安装,选择的是 Home Assistant Core 这种方式,也就是使用 Python 虚拟环境手动安装。

3. 安装环境介绍

我安装 Home Assistant 的软硬件环境如下:

硬件:STM32MP157,使用的是野火出的开发板。

软件:Debian ARM 架构制作的 Linux 发行版,版本信息如下:

  • Linux发行版本:Debian GNU/Linux 10

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Rlq8gPTx-1683978271124)(picture/image-20230502233159734.png)]

  • 内核版本:4.19.94

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Yu0BEgxe-1683978271124)(picture/image-20230502233606658.png)]

  • Python3版本

    安装Home Assistant 需要 Python3.8 以上的版本,我所使用的版本是:Python 3.10.9

4. 安装过程

在安装之前,请先确保自己的 Python3 版本在 3.8 及以上版本。不过官网又说要求要到 3.10 及以上版本,为了保险起见,大家还是安装 3.10 及以上的 Python 版本吧。

由于我的 Linux 系统使用 apt-get 命令安装时,只能安装到 3.7.3 版本,所以我是自己下载了 Python3.10 版本的源码到开发板上,然后编译安装的。这里我不多介绍,网上也有很多方法。

安装过程其实可以参考官网的安装介绍:

https://www.home-assistant.io/installation/linux

这个网址的安装介绍,是专门针对常规 Linux 系统进行安装的。

4.1 切换pip源

在/etc目录下,新建pip.conf文件(如果/etc目录存在这个文件,则可以不用新建),然后使用vi编辑器打开,输入一下内容:

[global]
timeout=100
index-url=https://pypi.tuna.tsinghua.edu.cn/simple/
extra-index-url=https://www.piwheels.org/simple
[install]
trusted-host=
	pypi.tuna.tsinghua.edu.cn
	mirrors.aliyun.com

上面这个 pip 源是我看到一篇文章,说必须使用官方的 pip 源,说是使用这个源可以解决在安装 Home Assistant 过程中出现的 ERROR:Failed building wheel for cryptigraphy 这个保存。但是我试过了依然解决不了(下面再讲安装遇到的这个问题)。不过后面我还是保持使用了这个源。

也有写文章说,使用下面的阿里云源:


[global]
index-url=https://mirrors.aliyun.com/pypi/simple/
extra-index-url=https://www.piwheels.org/simple

上面这两个 pip 源大家可以选择试试。

4.2 安装依赖

1.首先更新 apt-get :

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

2.安装依赖项:

sudo apt-get install -y python3 python3-dev python3-venv python3-pip bluez libffi-dev libssl-dev libjpeg-dev zlib1g-dev autoconf build-essential libopenjp2-7 libtiff5 libturbojpeg0-dev tzdata

4.3 创建 Home Assistant 运行的虚拟环境

1)添加一个名为homeassistant的用户

为 Home Assistant Core 添加一个名为 的帐户homeassistant。由于此帐户仅用于运行 Home Assistant Core,因此添加了额外的参数-rm以创建系统帐户并创建主目录。

sudo useradd -rm homeassistant

2)创建homeassistant目录,并更改该文件夹所有者为homeassistant账户

sudo mkdir /srv/homeassistant
sudo chown homeassistant:homeassistant /srv/homeassistant

3)为 Home Assistant Core 创建和更改虚拟环境。

# 切换用户
sudo -u homeassistant -H -s

# 切换目录,并创建虚拟环境
cd /srv/homeassistant
python3 -m venv .
source bin/activate

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EWiYmIrM-1683978271124)(picture/image-20230503012303768.png)]

4.4 在虚拟环境下更新pip

pip install --upgrade pip

4.5 安装 wheel

python3 -m pip install wheel

4.6 安装 Home Assistant

到了最后一步,就是安装 homeassistant 了:

pip3 install homeassistant

安装开始过程中,打印信息如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dtnlb3OC-1683978271124)(picture/image-20230512005701274.png)]

5. 遇到问题和尝试解决

5.1 Building wheel for bcrypt(pyproject.toml) … error

遇到错误截图如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6EcTB6aU-1683978271125)(picture/image-20230503100122608.png)]

对于这个问题,我更新了 pip 源,然后再安装 pep517 之后就再也没有这个错误了。

1.更新pip工具

# 更新 pip
pip3 install -U pip

# 安装 pep517
pip3 install pep517

5.2 安装rust 1.56版本以上编译器

在安装过程中报错,说没有找到 rust 的编译器,而且还要求 rust 的编译器版本必须是 1.56 以上版本,于是我只能安装 rust 的编译器了。可以在网上找到安装 rust 编译器相关的文章。

最终安装完成 rust 编译器截图如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wX4ODOMY-1683978271125)(picture/image-20230503101903688.png)]

然后我们可以在终端输入:

rust --version

查看编译器版本信息。

5.3 Building wheel for cryptography (pyproject.toml) … error

问题如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DDzJcXlA-1683978271125)(picture/image-20230512010510899.png)]

该问题,对照着网上的解决办法,都试了一遍,最终还是解决不了,试了n多次,每次都是卡在这里。试过的解决办法有:

1)sudo apt-get install libffi-dev libssl-dev 安装这两个库

2)升级 pip 工具版本。我的已经是 23 版本了

3)pip3 install cryptography 使用该命令直接安装 cryptography ,也是没用,报同样的错误。

4)安装 pep517 。pip3 install pep517 。

5)更换 pip3 源。一开始我使用国内的阿里云源,但是又看到网上的一篇文章说,不能使用国内的源,只能使用官方的源。说是因为 pip 官方的源 piwheels.org 含有armv7 的 whl 文件,可以免编译直接安装。然后我更换为官方的源了,最后还是不行。

反正,上面的方法试了一个遍,最后还是解决不了,卡在这里了。这里记录下遇到的这个问题,希望有小伙伴看到有解决办法告知一下。

其实,Home Assistant 论坛也有人遇到这个问题:

https://community.home-assistant.io/t/error-failed-building-wheel-for-cryptography/352020/27

我看了官网一些人的回复,跟着试了一些方法,最后也还是不行。

下图是运行 pip3 install homeassistant 这个命令,最终打印的错误信息:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-myg9xjNr-1683978271125)(picture/image-20230512010723687.png)]

一直是卡在了这第三个问题上了,目前暂时找不到解决办法。

Logo

更多推荐