本帖最后由 yinzhennan 于 2021-7-7 13:56 编辑
前言, 这类教程应该有很多, 我这里主要是做一个个人的记录
我之前发过基于docker的安装教程,这次发的是原生安装,也是我目前采用的方案. 和docker方案比起来确实步骤要麻烦些, 原生方案的主要优势是装插件省心些(国情原因), 此外性能和空间可能有一点点优势.
我在我之前的帖子里说过希望是最后一次折腾, 希望破灭的原因,是因为我要把我的树莓派从tf卡启动改为从ssd硬盘启动, 然后在上面搭个开源的nas.(我在某宝入了个256G的东芝m2拆机盘,时价220块,本来打算入1T的,但是,感谢奇亚币...)
除了速度慢以外,tf卡更大的缺点是数据很容易损坏,不稳定. 即使我后来改为了overlay只读以保护数据, 还是出现了 structure needs cleaning 这类数据异常.
hass官网和nodered官网都有get start页, 但是由于国情原因, 你会遇到很多国际友人遇不到的坑, 所以我这里会有一些调整.
环境:
硬件:树莓派4B,
系统:当天(2021-6-7)最新的raspberry pi os(无桌面版)
零, 简化安装脚本
我后来把我的安装步骤整理成了脚本, 直接执行就好(脚本测试过,不排除环境不同会遇到问题)
bash <(curl -sL https://gitee.com/yinzhennan/raspberry-pi-scrips/raw/master/nodered/noderedInstall.sh)
bash <(curl -sL https://gitee.com/yinzhennan/raspberry-pi-scrips/raw/master/hass/hassInstall.sh)
复制代码
------------------------------以下是原文 手动按步骤安装------------------------------
一, hass安装
1 安装依赖 官网上一起安装会出问题, 所以我是一个一个的安装, 我这里libssl-dev 安装失败了,
sudo apt-get install -y python3
sudo apt-get install -y python3-dev
sudo apt-get install -y python3-venv
sudo apt-get install -y python3-pip
sudo apt-get install -y libffi-dev
sudo apt-get install -y libssl-dev
sudo apt-get install -y libjpeg-dev
sudo apt-get install -y zlib1g-dev
sudo apt-get install -y autoconf
sudo apt-get install -y build-essential
sudo apt-get install -y libopenjp2-7
sudo apt-get install -y libtiff5
复制代码
我这里libssl-dev 安装失败了 提示如下
libssl-dev : Depends: libssl1.1 (= 1.1.1d-0+deb10u6) but 1.1.1d-0+deb10u6+rpt1 is to be installed
根据提示 安装libssl指定版本
sudo apt-get install libssl1.1=1.1.1d-0+deb10u6
复制代码
重新安装
sudo apt-get install -y libssl-dev
复制代码
2 由于社会主义优越性, 我们需要修改一下python源
cat >>~/.pip/pip.conf<<EOF
[global]
index-url=http://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com
EOF
复制代码
3 安装python3.8 系统自带的3.7环境不支持最新的hass
先安装必要依赖
sudo apt-get install -y build-essential libsqlite3-dev sqlite3 bzip2 libbz2-dev
复制代码
下载3.8最新的版本python3.8.10的源代码, 这一步你可以选择用pc下载,然后rz上传. wget有的时候速度很蛋疼.
wget https://www.python.org/ftp/python/3.8.10/Python-3.8.10.tgz
复制代码
编译
tar zxvf Python-3.8.10.tgz
cd Python-3.8.10
sudo ./configure
sudo make
sudo make install
复制代码
4 安装python所需依赖
python3.8 -m pip install wheel
复制代码
5 安装hass本体
pip3.8 install homeassistant
复制代码
安装成功后, 使用hass就可以启动了, 但是ctrl-c或者退出ssh就会停掉, 本文后面会有配置迁移,启动脚本,开机自启的相关说明
二, node-red 安装
非常简单,就一行脚本
官网上的安装脚本引用了github上的文件,由于社会主义的优越性. 我们需要替换为gitee上的镜像
bash <(curl -sL https://gitee.com/base/linux-installers/raw/master/deb/update-nodejs-and-nodered)
复制代码
安装完成后的脚本,我的长这样
Running Node-RED install for user root at /root on raspbian
This can take 20-30 minutes on the slower Pi versions - please wait.
Stop Node-RED ✔
Remove old version of Node-RED ✔
Remove old version of Node.js ✔
Install Node.js LTS ✔ Node v12.22.1 Npm 6.14.12
Clean npm cache ✔
Install Node-RED core ✔ 1.3.5
Move global nodes to local -
Install extra Pi nodes ✔
Npm rebuild existing nodes ✔
Add shortcut commands ✘
sed: can't read /lib/systemd/system/nodered.service: No such file or directory
sed: can't read /lib/systemd/system/nodered.service: No such file or directory
Update systemd script ✔
Any errors will be logged to /var/log/nodered-install.log
All done.
You can now start Node-RED with the command node-red-start
or using the icon under Menu / Programming / Node-RED
Then point your browser to localhost:1880 or http://{your_pi_ip-address}:1880
Started Sun 6 Jun 21:51:29 CST 2021 - Finished Sun 6 Jun 22:01:37 CST 2021
root@raspberrypi:~#
复制代码
我这里创建服务失败了,提示找不到nodered.service, 其实现在已经可以直接运行node-red-pi启动程序了,不过我们还是处理下. 让nodered成为一个服务. 我们自己从网上下个nodered.service
cd /lib/systemd/system
wget https://gitee.com/base/raspbian-deb-package/raw/master/resources/nodered.service
复制代码
然后简单修改下, 用户和工作目录修改下, 标准输出打开 vi nodered.service
#注意 这段不是执行代码,而是修改文件内容
User=root
Group=root
WorkingDirectory=/root
...
StandardOutput=syslog
StandardError=syslog
复制代码
自定义下日志路径
cat >>/etc/rsyslog.d/nodered.conf<<EOF
if \$programname == 'Node-RED' then /root/logs/nodered.log
& stop
EOF
systemctl restart rsyslog
复制代码
注册,启动,自启
systemctl daemon-reload
systemctl start nodered
systemctl enable nodered
复制代码
三, 配置迁移 (不需要的这步可以跳过)
配置迁移就是把旧环境的配置路径下的内容, 迁移到新环境. 因为我这个环境还没有配置git自动同步,所以要手动迁移下.
由于sd卡是ext格式的, windows上已经无法用读卡器读取文件, 所以我要拔掉ssd,重新插回sd卡启动, 打包并下载配置文件.
tar -czvf homeassistant.tar ~/.homeassistant
tar -czvf node-red.tar ~/.node-red
复制代码
然后用sz命令下载到电脑里
关机(shutdown -h now), 拔sd,插ssd,开机,拷贝tar文件到~/,解压
tar -xzvf homeassistant.tar
tar -xzvf node-red.tar
复制代码
四, 启动脚本, 开机自启
nodered已经注册为服务了, 我们把hass也配置成服务吧(之前用update-rc.d简单搞了下,时零时不灵,不知道是哪里没配对 )
编辑启动脚本
cd /lib/systemd/system
vi hass.service
复制代码
写入以下内容
[Unit]
Description=hass
Wants=network.target
[Service]
Type=simple
User=root
Group=root
WorkingDirectory=/root
Nice=5
ExecStart=hass
KillSignal=SIGINT
Restart=on-failure
SyslogIdentifier=hass
StandardOutput=syslog
StandardError=syslog
[Install]
WantedBy=multi-user.target
复制代码
日志位置修改
cat >>/etc/rsyslog.d/hass.conf<<EOF
if \$programname == 'hass' then /root/logs/hass.log
& stop
EOF
systemctl restart rsyslog
复制代码
注册,启动,自启
systemctl daemon-reload
systemctl start hass
systemctl enable hass
复制代码
五, 检验结果
先重启等几分钟,去上个厕所喝杯水什么的
重连链接,查看端口看到8123和1880端口开了就一般就算成功了. 可以浏览器登上去了
有问题可以在/root/logs里查看日志
六, 牢骚
本教程包括本人, 经常会用到gitee, 别以为我要给gitee打广告, 说实话我打心底里讨厌gitee, 不是因为gitee不好.
就好像你饥渴难耐想找女人, 但是有人把你关在笼子里, 告诉你女人不好, 然后扔给你一个X娃娃.
也许娃娃质量很好, 但是我还是讨厌娃娃.
......然而该用还是得用