【树莓派不吃灰】基础篇⑩ 搭建Homeassistant 开源智能家居平台平台(非Hass OS搭建方式),记录搭建过程的各种坑

在这里插入图片描述

  • ❤️ 博客主页 单片机菜鸟哥,一个野生非专业硬件IOT爱好者 ❤️
  • ❤️ 本篇创建记录 2022-10-29 ❤️
  • ❤️ 本篇更新记录 2022-10-29 ❤️
  • 🎉 欢迎关注 🔎点赞 👍收藏 ⭐️留言 📝
  • 🙏 此博客均由博主单独编写,不存在任何商业团队运营,如发现错误,请留言轰炸哦!及时修正!感谢支持!
  • 🔥 Arduino ESP8266教程累计帮助过超过1W+同学入门学习硬件网络编程,入选过选修课程,刊登过无线电杂志🔥

1. 前言

Home Assistant是一个开源的智能家居系统软件,主要有两大功能:

  • 能接入所有平台的智能设备,打破不同厂商之间的壁垒,即使是不支持联网的传统家电,也可以通过 DIY 一些传感器和开关将其整合到 HA 中;
  • 可以自由地编程与控制,完全定制自动化场景,满足一切需求,万物互联,如你所愿。

基于HA可以连接各种外部设备(智能设备、摄像头、邮件、短消息、云服务等),手动或按照自己的需求自动的连接这些设备,构建随心所欲的智慧空间。

Home Assistant 是一个基于Python 3开发的开源家庭自动化平台。可以跟踪和控制家庭中的所有设备,并实现自动化控制。 可以完美的运行在Raspberry Pi

HomeAssistant官方支持以下几种安装方式:

  • Home Assistant Operating System
    官方推荐的安装方式,HassOS是专门优化出的支持Home Assistant的操作系统,能够管理Home Assistant Core进程,并预安装了加载项。

  • Home Assistant Container
    基于Docker容器安装。

  • Home Assistant Core
    在系统python环境或python虚拟环境中安装。也是我们本篇的重点

  • Home Assistant Supervised
    相对繁琐的安装方式,可在常规linux系统上使用。

2. 搭建Homeassistant 家庭助手

2.1 环境要求:Pytho3 & pip3

分别输入命令:

  • python3 -V
  • pip3 -V

在这里插入图片描述
测试表明,不换速度也很快哈哈哈。我们这里可以先试试不换的效果。

pip是Python的一款软件安装包,在安装HA前需对其换国内镜像源,树莓派输入命令::

  • 备份

sudo cp pip.conf pip.conf.bak
在这里插入图片描述

  • 修改源

sudo nano pip,conf
在这里插入图片描述
打开文件后,用一下命令内容覆盖原有内容(测试表明,不换速度也很快哈哈哈):
[global]
index-url=https://mirrors.aliyun.com/pypi/simple/
extra-index-url=https://www.piwheels.org/simple
在这里插入图片描述
ctrl+o 保存,之后 回车 确认,然后 ctrl+x 退出。

2.1.1 Python系列之包管理工具pip3

pip3(Python3 Install Package)是python3用来管理包的工具,可以用来安装、升级、卸载第三方库,当然也可以查看包信息,更加可以发布自己所写的包到Pypi。

pip3的用法,在命令行直接输入命令pip3,回车后,会有很命令的选项说明与帮助:
在这里插入图片描述
在这里插入图片描述
默认情况下树莓派系统自带了pip3工具,当然如果没有也没有关系,我们给它下一个。

  • 安装setuptools工具
  • wget --no-check-certificate https://pypi.python.org/packages/source/s/setuptools/setuptools-19.6.tar.gz
  • tar -zxvf setuptools-19.6.tar.gz
  • cd setuptools-19.6/
  • python3 setup.py build
  • python3 setup.py install
  • 安装pip3
  • wget --no-check-certificate https://pypi.python.org/packages/source/p/pip/pip-20.3.4.tar.gz
  • tar -zxvf pip-20.3.4.tar.gz
  • cd pip-20.3.4/
  • python3 setup.py build
  • python3 setup.py install
  • ln -s /usr/local/bin/pip3 /usr/bin/pip3
  • ln -s /usr/local/bin/pip /usr/bin/pip

最后面这两条命令很关键,有些下载不到就是因为这个目录不对。

  • 查看pip3版本
  • pip3 -V
    在这里插入图片描述
2.1.2 pip3 常用命令

pip3安装和卸载以及常用命令

  • 安装包
  • pip3 install <包名> <包名> <包名> <包名>
  • pip3 install --upgrade <包名> <包名> <包名> <包名>
  • 查看已安装包

pip3 list

  • 查看已安装包信息、安装位置

pip3 show <包名>
在这里插入图片描述
也可以看到 homeassistant依赖了非常多的包。

  • 卸载包

pip3 uninstall <包名>

2.2 安装&启动HA

2.2.1 安装homeassistant依赖的python库
  • sudo pip3 install sqlalchemy
    在这里插入图片描述
  • sudo pip3 install pillow
  • sudo pip3 install aiohttp-cors

输入命令:

sudo pip3 install homeassistant

在这里插入图片描述
因为homeassistant会依赖很多包,所以如果遇到某一个包下载失败,可以使用命令:

sudo pip3 install <包名>

如果在安装第三方库时出现报错"These Packages Do Not Match The Hashes From The Requirements File.问题,通常是因为网速问题导致的下载错误,导致对应的哈希值不匹配。

解决方法:需要在pip时,添加"–upgrade"参数即可。通常这时下载还会报错timeout,因此多加一个"–default-timeout=100000" 更为保险(timeout的赋值可以视情况变化)。

  • sudo pip3 install --upgrade <包名>

经验总结:

通过Python安装的方式,最麻烦的就是各个库版本问题以及依赖问题。需要慢慢一个个解决。最好的方式还是直接安装 homeassistant 的OS系统,树莓派可支持该系统。

  • 如果一直无法成功,也可以尝试删掉.homeassistant文件,看看会不会是旧版本影响。
2.2.2 启动Hass

输入命令

hass --open-ui(启动成功会帮我我们自动打开web)
或者
hass -v (会打印启动过程中的日志)

在这里插入图片描述
上面这个图还是有问题的,解决方法看 2.2.3.6 小节

在这里插入图片描述
随便输入一个账号密码。博主这里是:

  • dpjcn
  • 123456

在这里插入图片描述

2.2.3 整理搭建问题
2.2.3.1 AttributeError: module ‘lib’ has no attribute 'X509_V_FLAG_CB_ISSUER_CHECK
    1. AttributeError: module 'lib' has no attribute 'X509_V_FLAG_CB_ISSUER_CHECK'

解决思路:主要原因是系统当前的python和pyOpenSSL版本不对应。
卸载再重装pyOpenSSL。

  • pip3 uninstall pyOpenSSL
  • pip3 install pyOpenSSL
    在这里插入图片描述
2.2.3.2 error while attempting to bind on address (‘::’, 8123, 0, 0): address already in use
    1. 端口占用问题,提示我 8123端口有人用了。

2022-10-30 06:29:46.292 ERROR (MainThread) [homeassistant.components.http] Failed to create HTTP server at port 8123: [Errno 98] error while attempting to bind on address (‘::’, 8123, 0, 0): address already in use
在这里插入图片描述
解决方法:找到对应端口,kill掉对应PID
在这里插入图片描述

就两条命令:

  • netstat -anp | grep 8123
  • sudo kill -9 <PID号>
2.2.3.3 多次重复安装,还是失败
    1. 如果发现安装过多次,最好是删掉历史配置文件。
      在这里插入图片描述

我们也顺便看看文件夹里面有什么文件。
在这里插入图片描述

2.2.3.4 一直下载失败
    1. 如果一直下载失败,最好换成国内镜像源。

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

2.2.3.5 pip3.9 找不到对应目录

原因:安装的时候没有做到sysemlink关联。可以查看目录
/usr/local/bin/pip3/usr/bin/pip 以及 /usr/local/bin/pip3.9

  • ln -s /usr/local/bin/pip3 /usr/bin/pip3
  • ln -s /usr/local/bin/pip /usr/bin/pip
  • ln -s /usr/local/bin/pip3.9 /usr/bin/pip3.9
    在这里插入图片描述
    在这里插入图片描述
2.2.3.6 hass启动过程中提示 libXXXX.so.3: cannot open shared object file: No such file or directory

解决思路:

Troubleshooting ImportError

在这里插入图片描述
在这里插入图片描述
输入三条命令:

  • sudo apt-get install libatlas-base-dev
  • pip3 uninstall numpy # remove previously installed version
  • apt install python3-numpy

3. 关联巴法云MQTT设备云

上面说了那么多,那么我们怎么把物联网设备关联到homeassistant。

这里我们选择巴法云mqtt来配置。

参考官方文档:

3.1 巴法云创建主题 light002

在这里插入图片描述

3.2 homeassistant配置规则映射

这里主要是处理.homeassistant 文件下的 configuration.yaml文件。

3.2.1 .homeassistant文件夹创建 mqtts.yaml

输入命令

sudo touch mqtts.yaml
sudo nano mqtts.yaml

填入以下内容:

  GNU nano 5.4                       mqtts.yaml                                 
#客户端ID
client_id: xxxxxxxx
light:
  - name: "巴法云Light"
    # 订阅主题
    state_topic: "light002"
    # 发布命令的主题
    command_topic: "light002"
    # 命令格式  on 开灯 和 off 关灯
    payload_on: "on"
    payload_off: "off"

xxxxxxxx 是自己在巴法云上面的私钥。保存一下这个文件。
在这里插入图片描述

3.2.2 修改 configuration.yaml 文件

输入命令

sudo nano configuration.yaml

填入以下内容:

  GNU nano 5.4                   configuration.yaml                             

# Loads default set of integrations. Do not remove.
default_config:

# Text to speech
tts:
  - platform: google_translate

automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml
mqtt: !include mqtts.yaml

保存文件之后,重启一下树莓派。

sudo reboot

3.2.3 找到mqtt设置,配置连接信息

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.2.4 概览添加巴法云 light灯

在这里插入图片描述

  • 找到我们的巴法云灯
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    操作一下开关看看,是不是状态也同步到巴法云那边。

在这里插入图片描述
这样接入就是OK了。

3.2.5 整理搭建问题
  • 一些老版本的文档用其他的配置,会导致失败。

2022-10-30 08:36:56.637 WARNING (MainThread) [homeassistant.components.mqtt.mixins] Manually configured MQTT light(s) found under platform key ‘light’, please move to the mqtt integration key, see https://www.home-assistant.io/integrations/light.mqtt/#new_format
2022-10-30 08:36:56.665 WARNING (MainThread) [homeassistant.components.mqtt] The ‘broker’ option near /home/pi/.homeassistant/configuration.yaml:14 is deprecated, please remove it from your configuration
2022-10-30 08:36:56.675 WARNING (MainThread) [homeassistant.components.mqtt] The ‘port’ option near /home/pi/.homeassistant/configuration.yaml:14 is deprecated, please remove it from your configuration
2022-10-30 08:36:56.764 WARNING (MainThread) [homeassistant.components.mqtt.mixins] MQTT integration is not setup, skipping setup of manually configured MQTT light
2022-10-30 08:37:09.782 WARNING (MainThread) [homeassistant.setup] Setup of default_config is taking over 10 seconds.

解决思路:新旧版本问题。
在这里插入图片描述

4. 设置树莓派开机自启动hass

4.1 生成一个home-assistant.service文件

这里我们参考其他软件,直接复制一个,比如参考pm2.

输入命令:

sudo cp pm2-pi.service home-assistant.service

修改文件内容:

sudo nano home-assistant.service

[Unit]
Description=Home Assistant     
After=network.target

[Service]
Type=simple 
User=pi
ExecStart=/usr/local/bin/hass                              
[Install]
WantedBy=multi-user.target

保存文件。

在这里插入图片描述
课外知识:我们也看看/usr/local/bin/hass内容是什么?

#!/usr/bin/python3
# -*- coding: utf-8 -*-
import re
import sys
from homeassistant.__main__ import main
if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
    sys.exit(main())

这里是直接执行一个脚本。目测也没有停止命令。

4.2 给home-assistant.service创建一个链接

输入命令:

sudo ln -s /etc/systemd/system/home-assistant.service /etc/systemd/system/multi-user.target.wants/home-assistant.service

在这里插入图片描述

4.3 使用 systemctl 命令设置自启动

输入命令:

sudo systemctl start home-assistant

在这里插入图片描述
这次我们重启一下看看。

sudo reboot
在这里插入图片描述
等几分钟,我们再用浏览器访问一下或者命令行查看一下。
输入命令:
netstat -anp | grep 8123
在这里插入图片描述
在这里插入图片描述

留个小问题?要屏蔽自启动要怎么做?

  • systemctl命令
  • 直接干掉链接文件

5. 总结

虽然用docker或者 hass os系统的方式可以免除这些操作坑,但作为一个爱好者还是希望能拆拆坑。从头到尾在树莓派官方推荐系统上安装Homeassistant 并且解决所遇到的所有问题(包括各种依赖包、链接文件、下载等等),同时也是为了折腾linux下的一些学习经验。

  • 3
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

单片机菜鸟爱学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值