在Linux开发板上安装HomeAssistant

news2025/1/21 0:50:39

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/522770.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android ConstraintLayout 使用入门

ConstraintLayout是Android中一个非常强大的布局管理器,它可以帮助我们快速创建复杂的布局,并且具有很好的性能和可扩展性。在本文中,我将从面试的角度,详细讲解ConstraintLayout的概念、特点、使用方法和示例。 概念 Constraint…

力扣19删除链表的倒数第 N 个结点:思路分析+图文全解+方法总结(快慢指针法递归法)+深入思考

文章目录 第一部分:题目描述第二部分:代码实现2.1 快慢指针法2.2 递归 第一部分:题目描述 🏠 链接:19. 删除链表的倒数第 N 个结点 - 力扣(LeetCode) ⭐ 难度:中等 第二部分&#…

Java【网络编程2】 详解基于 UDP 协议的 Socket API, 逐行代码解析如何网络编程

文章目录 前言一、认识 Socket(套接字), TCP 协议和 UDP 协议1, 什么是 Socket(套接字)2, 浅谈 TCP 协议和 UDP 协议的区别和特点 二、基于 UDP 协议的 Socket API1, DatagramSocket 类2, DatagramPacket 类 三、逐行代码解析网络编程1, 逐行解析客户端1.1, 核心成员方法 start…

(转载)从0开始学matlab(第2天)—MATLAB 变量的初始化

当变量初始化时,MATLAB 将会自动建立变量。有三种方式初始化 MATLAB 中的变量: 1 .用赋值语句初始化变量 2 .用 input 函数从键盘输入初始化变量 3 .从文件读取一个数据 前两种方法我们在这里讨论&#xff0c…

Linux -- 进阶 Web服务器 虚拟主机 -- 基于 域名

基于域名的虚拟主机 &#xff1a; 原理 &#xff1a; # 当服务器无法给每个网站都分配一个独立的 IP 地址时&#xff0c;可以通过用户请求的域 名实现不同域名传输不同的网页数据。 域名解析 &#xff1a; 功能 &#xff1a; 域名<>IP &#xff08; 就是 …

E4A影视APP源码电视盒子酷点TV版4.5 后端对接苹果cms

E4A影视APP源码电视盒子酷点TV版4.5 后端对接苹果cms 内带演示apk是为了方便大家调试&#xff0c;必应搜索醉里技术博客http://202271.xyz/?tv 此版带会员功能,对接的是 如意验证1.71版苹果cms后端APP 电视TV4.5版, 会员功能带注册邀请,绑定邮箱,邮箱找回密码,修改新密码,卡…

docker-compose 集成Jenkins部署,打包,发布

前言 需要提前准备的条件 1.git 2.Maven环境 3.Docker环境 4.JDK环境(Centos7.4自带JDK环境去除&#xff0c;重装的JDK) 5.Nodejs #前端发布使用一、 jenkins部署 下载镜像 #查询镜像 docker search jenkins#下载镜像 docker pull jenkins/jenkins编写docker-compose.yml …

【音视频开发】基础知识:视频封装格式和编码格式

文章目录 一、封装格式与编码格式的关系视频编码格式视频封装格式MP43GPRM、RMVBAVI、WMVVOBFLVMKVWebMMOVTS 封装格式与编码格式对应 一、封装格式与编码格式的关系 视频编码格式和视频封装格式的关系及区别 这两者的关系好比酒与酒瓶的关系&#xff0c;编码格式好比酒瓶里的…

Scala 从入门到精通

Scala 从入门到精通 scala风格与java风格 public class JavaDemo01 {public static void main(String[] args) {System.out.println("我爱你中国");} }object ScalaDemo01 {def main(args: Array[String]): Unit {println("我爱你中国")} }javac JavaDe…

24.JT-VUE课堂DEMO

<!DOCTYPE html> <html><head><meta charset"utf-8"><title>hello 入门案例</title></head><body><div id"app"><h1>双向数据绑定测试</h1><h3>{{ hello }}</h3></div&…

YOLO环境配置中一些常见的问题

在入门YOLO时&#xff0c;环境配置是绕不过的坎&#xff0c;本文希望通过列举一些常见的问题&#xff0c;帮大家解决一些疑难杂症。然而不同的电脑&#xff0c;环境配置是有差异的&#xff0c;本文不可能面面俱到&#xff0c;大家还是要掌握自己上网查问题、解决问题的能力。 …

easy X(C语言图形化界面)学习

easy X&#xff08;C语言图形化界面&#xff09;学习 易错&#xff1a;头文件创建窗口 图形填充文字创建输出图片鼠标消息函数(老版)鼠标操作&#xff08;新版&#xff09;键盘消息函数getch() 音乐播放修改窗口标题&#xff0c;弹出框框 易错&#xff1a; 1.文件为&#xff0…

DDP学习/PyTorch多GPU训练/查看模型在哪个GPU上

参考&#xff1a; pytorch如何查看tensor和model在哪个GPU上 https://blog.csdn.net/weixin_37889356/article/details/121792888Part 3: Multi-GPU training with DDP (code walkthrough) [pytorch官方教程&#xff0c;有股咖喱味的Inglish, 推荐] https://www.youtube.com/w…

5月14日第壹简报,星期日,农历三月廿五

5月14日第壹简报&#xff0c;星期日&#xff0c;农历三月廿五坚持阅读&#xff0c;静待花开1. 福布斯中国锂电产业链TOP100发布&#xff0c;宁德时代、赣锋锂业、比亚迪等入选。2. 平均降价84%&#xff01;山东、湖南、江西等多地骨科脊柱类耗材集采中选结果落地。3. 世界旅游组…

【CSS系列】第八章 · CSS浮动

写在前面 Hello大家好&#xff0c; 我是【麟-小白】&#xff0c;一位软件工程专业的学生&#xff0c;喜好计算机知识。希望大家能够一起学习进步呀&#xff01;本人是一名在读大学生&#xff0c;专业水平有限&#xff0c;如发现错误或不足之处&#xff0c;请多多指正&#xff0…

anylabeling 自动标注 使用记录 (跑不起来你打我)

目录 一、anylabeling 二、Segment Anything模型ONNX导出 1、下载这个项目 2、环境配置 3、下载SAM预训练权重 4、导出ONNX格式 三、yaml文件编写 四、视频讲解 五、使用记录 六、其他 一、anylabeling anylabeling项目地址 我直接用的之前yolov5的conda虚拟环境 p…

vim编辑器常用命令 (Centos)

1 安装vim编辑器 sudo yum update sudo yum install vim2 设置vim 显示行号 (:set nu) 步骤1&#xff1a;按 ESC 键 退出本机内容模式 步骤2&#xff1a;输入 :set number 或者 :set nu 步骤3&#xff1a;按回车 3 查找 / 步骤1&#xff1a;按 ESC 键 退出本机内容模式 步…

设计模式 - 工厂

文章参考来源 一、概念 创建简单的对象直接 new 一个就完事&#xff0c;但对于创建时需要各种配置的复杂对象例如手机&#xff0c;没有工厂的情况下&#xff0c;用户需要自己处理屏幕、摄像头、处理器等配置&#xff0c;这样用户和手机就耦合在一起了。 可以使代码结构清晰&a…

Python进阶知识(2)—— 什么是GUI编程?一起来学习用Python,Tkinter“做画”吧

文章目录 01 | &#x1f4d5; 什么是 G U I &#xff1f; \color{red}{什么是GUI&#xff1f;} 什么是GUI&#xff1f;&#x1f4d5;02 | &#x1f4d9; 什么是 T k i n t e r &#xff1f;为什么是 T k i n t e r &#xff1f; \color{orange}{什么是Tkinter&#xff1f;为什么…

ESP32在linux下烧录,提示权限有问题,解决方法

执行idf.py -p /dev/ttyACM0 flash下载时&#xff0c;提示这个错误 serial.serialutil.SerialException: [Errno 13] could not open port /dev/ttyACM0: [Errno 13] Permission denied: /dev/ttyACM0 解决方法&#xff1a; 1检查串行端口 /dev/ttyUSB0 是否已被其他程序占用…