『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 13942|回复: 1

[基础教程] 树莓派 智能家装 新装闭坑手册(番外 hass和nodered原生安装)

[复制链接]

11

主题

121

帖子

840

积分

论坛技术达人

积分
840
金钱
709
HASS币
60
发表于 2021-6-6 22:56:12 | 显示全部楼层 |阅读模式
本帖最后由 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源
mkdir ~/.pip
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

五, 检验结果

先重启
reboot
等几分钟,去上个厕所喝杯水什么的
重连链接,查看端口
netstat -nltp
看到8123和1880端口开了就一般就算成功了. 可以浏览器登上去了
有问题可以在/root/logs里查看日志

六, 牢骚

本教程包括本人, 经常会用到gitee, 别以为我要给gitee打广告, 说实话我打心底里讨厌gitee, 不是因为gitee不好.
就好像你饥渴难耐想找女人, 但是有人把你关在笼子里, 告诉你女人不好, 然后扔给你一个X娃娃.
也许娃娃质量很好, 但是我还是讨厌娃娃.



......然而该用还是得用






























回复

使用道具 举报

5

主题

117

帖子

506

积分

高级会员

Rank: 4

积分
506
金钱
389
HASS币
0
发表于 2021-7-1 16:24:27 | 显示全部楼层
受益匪浅 多谢啦!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-27 08:40 , Processed in 0.347381 second(s), 24 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表