RISC-V技术论坛
直播中

jf_84565653

未满1年用户 13经验值
擅长:可编程逻辑 嵌入式技术
私信 关注
[经验]

【昉·星光 2 高性能RISC-V单板计算机体验】以容器的方式安装 HomeAssistant

【昉·星光 2 高性能RISC-V单板计算机体验】以容器的方式安装 HomeAssistant

下载并启动容器

HomeAssisatant 官方并没有提供基于RISC-V 的容器,所以只能自己下载容器并编译安装。

这里选择基于 Alpine 的容器自行制作。

  • 下载 RISC-V 的 Alpine 镜像

    sudo docker pull riscv64/alpine:20231219
    
  • 启动容器

    sudo docker run -d --name homeassistant --restart=unless-stopped --network=host --privileged riscv64/alpine:20231219 sleep infinity
    

    进入容器

    sudo docker exec -it homeassistant sh
    

安装 Python 3.9

出于某种原因,我只编译成功了 HomeAssistant 2022.6.7 (后面会提到)

所以这里编译安装老版本的 Python 3.9,以获取更好的兼容性。

由于 HA 需要 sqlite 相关拓展,所以在编译有些特定的调整。

安装必要编译依赖

  • 换源

    sed -i 's/dl-cdn.alpinelinux.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apk/repositories
    
  • 安装

    apk add --no-cache build-base libffi-dev openssl-dev gcc zlib-dev wget
    

下载源码

从镜像站下载 Python 3.9 ,加快速度

wget https://mirrors.huaweicloud.com/python/3.9.9/Python-3.9.9.tgz

解压

tar -zxvf Python-3.9.9.tgz

image-20240221015612758.png

编译安装

这里需要加上 --enable-loadable-sqlite-extensions

cd Python-3.9.9
./configure --enable-optimizations --enable-loadable-sqlite-extensions
make -j4

注意:编译的时候最好给开发板加个小风扇。

安装成功:

image-20240221015835291.png

安装 HomeAssistant 2022.6.7

参考链接

Linux - Home Assistant (home-assistant.io)

安装必要编译依赖

apk add —no-cache bluez libffi-dev openssl-dev  jpeg-dev zlib-dev autoconf automake linux-headers gcc build-base cmake make openjpeg-dev tiff-dev libjpeg-turbo-dev tzdata ffmpeg lapack-dev openblas-dev rust cargo libpcap-dev

创建虚拟 Python 环境

mkdir /srv/homeassistant
cd /srv/homeassistant
python3 -m venv .
source bin/activate
python3 -m pip install wheel

下载HA

wget https://files.pythonhosted.org/packages/8e/1f/7fc7a8fae7afbd3ba3c096c02d7b1c5aed90a08c36e0ae51deed9ba54cde/homeassistant-2022.6.7.tar.gz

wget https://files.pythonhosted.org/packages/7b/ae/f7895e90c4a801a148e68938060cbacf2cf39e1081c9b7f262eb47a40ca1/hass-nabucasa-0.54.0.tar.gz

tar -zxvf homeassistant-2022.6.7.tar.gz
tar -zxvf hass-nabucasa-0.54.0.tar.gz

修改依赖

在以下的文件中找到这两行并修改

  • homeassistant-2022.6.7/setup.cfg

    pyyml==6.0.1
    cryptography==41.0.7
    
  • hass-nabucasa-0.54.0/setup.py

    cryptography==41.0.7
    

image-20240221155117676.png

编译安装

cd homeassistant-2022.6.7
pip3 install .

cd hass-nabucasa-0.54.0
pip3 install .

安装运行所需的库

pip3 install aiohttp_cors==0.7.0 async-upnp-client==0.31.1 patchelf PyTurboJPEG==1.6.6 homematicip==1.0.2 pyMetno==0.9.0 aiogithubapi==22.2.4  homematicip==1.0.2

启动 HomeAssistant

输入hass,即可启动

通过 <开发板 ip>:8123 进行访问

image-20240221163050167.png

查看系统状态

image-20240221171342315.png

小结

Q & A:

  • 为什么不能安装最新版本的 HomeAssistant?

    因为编译不成功,主要是orjson库编译不成功。

  • 为什么要选择 Alpine?

    因为编译需要用到rust,alpine有现成的第三方编译好的rust可供使用。

  • 为什么要用修改依赖这么不优雅的方式?

    这种行为确实很不好,很容易造成依赖地狱,但是缺少在RISC-V上编译的资料,只能头痛医头,脚痛医脚,先让他跑起来,再去一步一步的优化。

  • 为什么要选择容器来安装?

    因为这样更方便管理,星光2的性能也足够用,还可以用来做其他更多的事情。

后续的计划:

  • 安装HACS
  • 精简并完善容器,发布镜像
  • 学习并尝试 Buildroot

碎碎念:编译安装的过程中经历了很多屈折,尝试了很多方法,中间一度想过要不就算了,但是好在还是成功了!

更多回帖

发帖
×
20
完善资料,
赚取积分