在Linux开发板上安装HomeAssistant

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)]

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

### 回答1: 在Linux开发板上挂载NFS,需要先确保开发板上已经安装了NFS客户端软件包。然后,需要在开发板上创建一个挂载点目录,例如/mnt/nfs。 接下来,需要在开发板上执行以下命令来挂载NFS共享目录: mount -t nfs <NFS服务器IP地址>:<共享目录路径> /mnt/nfs 其中,<NFS服务器IP地址>是NFS服务器的IP地址,<共享目录路径>是NFS服务器上需要共享的目录路径。 如果挂载成功,可以通过在/mnt/nfs目录下查看文件来验证。如果需要在开机时自动挂载NFS共享目录,可以将上述命令添加到/etc/fstab文件中。 ### 回答2: 在Linux开发板上挂载NFS,需要以下步骤: 1.准备NFS服务器:需要一台Linux机器作为NFS服务器,为客户端提供共享文件系统。在服务器上安装nfs-utils软件包,编辑/etc/exports文件,添加对共享目录的配置。 例如,要共享目录/home/nfs,可以在/etc/exports文件中添加以下行: /home/nfs 192.168.1.*(rw,sync,no_root_squash) 表示将/home/nfs共享给IP地址以192.168.1开头的所有主机,rw选项表示读写权限,sync表示同步写入,no_root_squash表示将root用户的权限限制为普通用户。 保存/etc/exports文件,然后运行exportfs命令。 2.在客户端挂载NFS共享:在开发板安装nfs-utils软件包,然后在开发板上创建一个目录,作为NFS共享的挂载点。 例如,可以创建一个目录/mnt/nfs作为挂载点: mkdir /mnt/nfs 使用mount命令挂载NFS共享: mount -t nfs 192.168.1.100:/home/nfs /mnt/nfs 其中192.168.1.100是NFS服务器的IP地址,/home/nfs是共享目录的路径,/mnt/nfs是挂载点的路径。 3.在开发板上使用NFS共享:在NFS共享挂载成功后,就可以在开发板上使用NFS共享提供的文件系统了。例如,可以使用ls命令查看共享目录中的文件: ls /mnt/nfs 如果需要在开发板上自动挂载NFS共享,可以将挂载命令添加到/etc/fstab文件中: 192.168.1.100:/home/nfs /mnt/nfs nfs defaults 0 0 其中nfs表示NFS文件系统类型,defaults表示使用默认挂载选项,0 0表示文件系统不需要备份,也不需要检查。保存/etc/fstab文件后,可以使用mount -a命令重新挂载文件系统。 ### 回答3: 在Linux开发板上挂载NFS是一项重要的任务,因为它可以帮助你在不同的系统之间共享和传输文件,以便更好地完成工作。下面是一个简单的步骤指南,帮助您成功地在Linux开发板上挂载NFS。 第一步是安装NFS服务器。您需要确保安装在服务器上运行的NFS服务器软件。如果您已经安装了NFS服务器,可以跳过这一步。如果没有,请使用yum install nfs-utils或者apt-get install nfs-kernel-server命令安装NFS服务器,在服务器上设置共享目录,并将其导出到客户端。 第二步是在客户端上安装NFS客户端软件。您可以使用yum install nfs-utils或者apt-get install nfs-common命令安装NFS客户端软件。安装完毕后,您需要通过运行showmount -e <server IP>命令或者rpcinfo -p <server IP>命令验证NFS服务器是否已成功导出共享目录。 第三步是挂载NFS共享目录。在客户端上使用mount命令挂载NFS共享目录。可以使用命令mount -t nfs <server IP or hostname>:/<export directory> <mount point>挂载NFS共享目录。例如,mount -t nfs 192.168.0.100:/home/nfs /mnt/nfs。 第四步是验证挂载。您可以运行df -h或者mount命令来查看挂载状态。如果一切正常,您应该能够访问共享目录,并且可以在客户端和服务器之间传输文件。 总体来说,挂载NFS共享目录可以帮助您更好地共享和传输文件,并在不同的系统之间更好地协作。通过上述步骤,您可以成功地在Linux开发板上挂载NFS,并开始享受它所带来的便利。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值