树莓派4B折腾笔记

树莓派4B折腾笔记

上一次折腾树莓派已经是好久之前的事了——把闲置的树莓派变成一个桌面监视器
上完一周的班,回到家中顿感无聊。想起高中闲暇时刻折腾树莓派的快乐时光,余光不经意间瞥见堆在角落的树莓派4B,手痒了。

做些什么呢?

现在🐟一个人住,可以尽情发挥我的EE之力了。但是想了想好像智能家居也没啥用…除了晚上开个灯,回家提前开空调,定时拉窗帘,好像也没什么别的有意思的…不过还是整上!Home Assistant安排了。

突然想起来,ESP8266/ESP32应该可以支持Home Assistant,在HA里装ESPHome组件就可以了。不得不说拓展空间很大。

然后还想整个私有云笔记服务器。Leanote好像是个不错的选择,仅在内网里使用,就不映射出去了,怕不安全。

Do it!

在开始之前还是老生常谈的一些准备工作啦。

Preparation

硬件:

  • 树莓派4B 4G版(什么,太贵了?我买的早,400左右入的:D)
  • 一个5V 3A以上规格的电源(Type-C接口)
  • 一块屏(可有可无,我用了之前买的一块5寸CSI屏,用起来很舒适)
  • 有线/无线网络(我用的Wi-Fi)
  • 键盘鼠标(调试可能用)
  • 一张16GB以上的TF卡(我用的64GB高速卡)

软件:

  • 先去树莓派官网下载64位的官方系统,我下的是完整版,包含了推荐安装的软件
  • 镜像烧录软件,可以用官方的傻瓜式软件
  • PC上可以装个SSH,远程调试用

烧系统,配置

下载的系统是2022-04-04-raspios-bullseye-armhf-full.img
我用习惯了这个烧录器,简单好用。。Win32DiskImager

write_tf

现在的系统初次启动好像会自动扩充文件系统。。?经历几次自动重启后,它进入了桌面环境。当然,我这个CSI屏是免驱直接用的,我不知道这个系统默认开启HDMI输出没有,如果没有开启的话你可能还得去TF卡中的config文件改一下配置。

desktop

然后就是任何操作系统安装第一次启动的配置,国家,语言,时区。不同的是,以往的树莓派系统是默认创建了pi用户,默认密码是raspberry,而新系统则要求用户自己创建系统账号。创建完之后连接网络,它提示你更新软件,我直接跳过了,等会换了源再更新。配置完成,它又得重启一次。
不过我发现它好像卡住了,黑屏下一个小cursor也不闪。卡了5分钟忍不了了给他拔了然后重新插上,终于起床了= =

连上网络,接上键盘开了个terminal,ifconfig,看到了ipv4地址。好了,键盘插回电脑,可以开始远程操作了。只有一套键鼠实在是不方便咯。回到PC,打开XShell连接树莓派,发现连不上,折回去一看,它竟然默认没开ssh。。好吧,开开之后再连。看到了熟悉的信息,可以开始折腾了~

ssh

清华镜像站康康,选择对应内核版本的源,跟着步骤来就好。换完之后update一下源列表,然后upgrade更新软件,开始装Home Assistant。

HA安装

update & upgrade完了之后,开始正式安装Home Assistant。参照HA官方的安装指南Install Home Assistant Core一节(直接装OS和Container太没意思了,我喜欢折磨自己(bushi))。

  1. 先装上依赖:
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

我的环境下安装很顺利,没有缺失项。

  1. 依赖全装上之后,创建一个ha专用的账号

因为HA不能以root身份运行,我在这里直接用ha当账户名了,官方文档解释得挺详细的。我多加了几个硬件接口权限,因为我后面可能要用到

sudo useradd -rm ha -G dialout,gpio,i2c,spi
  1. 创建一个python3虚拟环境

先建个文件夹并赋予我们的ha账户权限,用来安装HA核心。

sudo mkdir /srv/ha
sudo chown ha:ha /srv/ha

# Create virtual env for HA Core using ha account:
sudo -u ha -H -s
# 执行完上面这条指令后,用户会切换到ha  
cd /srv/ha
python3 -m venv .
source bin/activate
  1. 安装python package和HA Core

当然,国内用pip的话还先换个源为好。在这里我要插一个步骤进来咯:

# 先换源!先使用临时源升级pip到最新
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pip -U
# 然后设置pip全局源
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

然后开始安装python package:

python3 -m pip install wheel
# Install HomeAssistant core!这一步他好像用的piwheels的源,很慢,耐心等吧
pip3 install homeassistant

install

当然,如果你的网络环境跟我一样烂的话,你是极有可能疯狂断流的。这时有个办法就是直接下载whl文件,FTP传到服务器里,手动进行安装。
我的网络烂的不成样…我用FDM开代理拖了好几个whl文件下来,FTP传上去,然后手动安装的。。太痛苦了

  1. 愉悦地启动HA!

第一次启动HA,他会自动帮我们配置一些默认配置并在/home/ha下创建配置文件目录.homeassistant,然后安装一些依赖项,这可能需要几分钟时间,在此期间是不能访问HA的web页面的。

# 启动HA,hass念起来像...
hass

结果我启动的时候报了个错。

ModuleNotFoundError: No module named 'sqlalchemy'

缺啥补啥呗。pip3 install sqlalchemy,等了一会儿装上了,再运行hass。

然后你就可以访问HA的web界面咯~地址是 http://homeassistant.local:8123。如果这个地址不能访问,那么把域名改成树莓派的ipv4地址吧,比如 192.168.1.154:8123。初始化页面会让你注册一个账户,并且配置你的信息。

setup

虽然这时候看着终端后台还是有不少ERROR蹦出来…但似乎跑起来了。

start_info

  1. 后续配置

能进web页面之后,我们先退出python虚拟环境,设置一些开机启动项。
这里我参考的是天翼看豆博主的配置,他中间还安装了Jupyter,我感觉我用不上,就没装。直接配置ha开机自启动:

sudo nano /etc/systemd/system/homeassistant.service

当然你可以用你喜欢的编辑器,nano是新人友好型的。编辑内容:

[Unit]
Description=Home Assistant
After=network-online.target
[Service]
Type=simple
User=ha
ExecStart=/srv/ha/bin/hass -c "/home/ha/.homeassistant"
[Install]

WantedBy=multi-user.target

保存退出,然后重加载systemctl守护进程:

sudo systemctl daemon-reload
sudo systemctl enable homeassistant

然后呢?

先等这破网把安装项完成我再更新……

发表回复

这篇文章有一个评论

  1. 第 虾球页

    叽里咕噜