跳到主要内容基于树莓派4B的智能家居中枢搭建指南 | 极客日志Shell / BashNode.js
基于树莓派4B的智能家居中枢搭建指南
介绍使用树莓派4B搭建本地智能家居中枢的完整流程。涵盖操作系统安装、Docker环境部署、Home Assistant配置、Zigbee2MQTT接入及MQTT消息总线搭建。通过具体案例演示自动化场景设置,并提供USB SSD启动、安全加固及远程访问等进阶优化方案,实现设备本地化控制与隐私保护。
灵魂摆渡36 浏览 基于树莓派4B的智能家居中枢搭建
为什么选择树莓派4B?
性能不再是瓶颈
- 四核Cortex-A72 @ 1.5GHz,性能接近入门级笔记本;
- 内存最高支持 8GB LPDDR4,足以同时承载多个服务而不卡顿;
- 配备 千兆以太网口(实测900Mbps+),网络通信更稳定;
- 双USB 3.0接口,外接设备传输不再龟速。
这意味着你可以放心地让它同时运行:
- Home Assistant(主控平台)
- Mosquitto MQTT Broker(消息中转站)
- Zigbee2MQTT(Zigbee协议翻译官)
- Node-RED(高级逻辑编排器)
这一切都在一台小板子上安静运转,功耗却不到10W。
接口丰富,扩展无忧
| 接口 | 用途示例 |
|---|
| GPIO 40针 | 接DS18B20温度传感器、继电器模块、OLED屏 |
| USB 3.0 ×2 | 插Zigbee棒、Z-Wave Stick、4G Dongle |
| Micro-HDMI ×2 | 调试时接显示器,或输出监控画面 |
| PCIe Gen2 via GPIO | 外接M.2 NVMe SSD,告别SD卡崩溃风险 |
💡 小贴士:虽然官方标称支持PCIe,但需要通过特殊转接板才能启用。对于大多数用户,使用USB 3.0启动SSD已是成熟且稳定的替代方案。
软实力优势
- 官方操作系统Raspberry Pi OS维护良好,驱动齐全;
- 社区庞大,GitHub上千个项目可供参考;
- 教程遍地开花,遇到问题基本都能搜到解决方案;
- 支持Docker容器化部署,便于管理和迁移。
第一步:安装操作系统
选哪个系统?
目前主流选择有三种:
- Raspberry Pi OS (Legacy with Desktop) —— 稳定性强,适合新手
- Ubuntu Server for Raspberry Pi —— 更现代,适合熟悉Linux的用户
- Home Assistant OS —— 专为HA优化,但灵活性差
这里推荐使用 Raspberry Pi OS (Legacy),因为它兼容性最好,后续安装Docker、Node.js等工具毫无压力。
如何烧录?
- 下载 Raspberry Pi Imager(跨平台工具);
- 插入microSD卡(建议Class 10以上,容量≥32GB);
- 打开Imager,选择:
- 操作系统 →
Raspberry Pi OS (Legacy) with desktop
- 存储设备 → 正确识别你的SD卡
- 点击'Write',等待5–10分钟完成写入。
Headless模式配置Wi-Fi与SSH
如果你不想接键盘显示器,可以在烧录后做两件事让树莓派开机即联网:
启用SSH
在SD卡 boot 分区根目录创建一个空文件,名为 ssh(无后缀)。这样系统首次启动时会自动开启SSH服务。
预设Wi-Fi信息
在同一目录下创建文件 wpa_supplicant.conf,内容如下:
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 country=CN network={ ssid="你的WiFi名称" psk="你的WiFi密码" key_mgmt=WPA-PSK }
保存后弹出SD卡,插入树莓派,通电启动。
几分钟后,通过路由器后台查看其分配的IP地址,即可用SSH登录:
登陆后的第一件事:更新系统
sudo apt update && sudo apt full-upgrade -y
sudo rpi-update
sudo reboot
同时建议修改默认密码,并设置静态IP,避免下次找不到它。
第二步:部署Home Assistant
为什么不直接刷HA OS?因为我们要的是 自由度。用Docker部署,既能享受隔离性,又能随时添加其他服务。
为什么用Docker?
| 优势 | 实际意义 |
|---|
| 环境隔离 | 卸载干净,不影响主机系统 |
| 数据持久化 | 配置独立存储,重装容器不丢数据 |
| 快速备份恢复 | 打包 /config 目录即可迁移整个中枢 |
| 易于升级 | docker pull 拉取新镜像即可更新 |
安装Docker环境
curl -sSL https://get.docker.com | sh
sudo usermod -aG docker pi
启动Home Assistant容器
docker run -d \
--name homeassistant \
--privileged \
--restart=unless-stopped \
-e TZ=Asia/Shanghai \
-v /home/pi/hass-config:/config \
-v /run/dbus:/run/dbus:ro \
--device=/dev/ttyUSB0 \
--device=/dev/ttyACM0 \
-p 8123:8123 \
ghcr.io/home-assistant/home-assistant:stable
-v /home/pi/hass-config:/config:将配置文件存在外部目录,防止容器删除后丢失;
--device=/dev/ttyUSB0:允许容器访问USB串口设备(比如Zigbee棒);
-p 8123:8123:开放Web界面端口;
--privileged:赋予必要权限(安全起见,仅用于HA这类可信容器)。
等待几分钟,访问 http://<树莓派IP>:8123,你会看到熟悉的Home Assistant欢迎页面。
首次进入会引导你设置用户名、密码、位置信息等。完成后就能看到仪表盘了。
第三步:接入Zigbee设备
Wi-Fi设备虽多,但功耗大、电池撑不了几天。真正的智能家居传感器(门磁、人体感应、温控阀),大多走的是 Zigbee 协议。
但我们手里的树莓派并不原生支持Zigbee。怎么办?加个'翻译官'——Zigbee协调器。
选什么Zigbee棒?
| 型号 | 芯片 | 是否推荐 | 说明 |
|---|
| CC2531 | TI | ❌ 不推荐 | 性能弱,仅支持少量设备 |
| CC2652R / CC2652P | TI | ✅ 强烈推荐 | 支持路由功能,稳定性强 |
| nRF52840 | Nordic | ✅ 推荐 | 支持蓝牙/Zigbee双模,价格稍贵 |
我用的是 Sonoff Zigbee 3.0 USB Dongle Plus(CC2652P版),信号好、兼容性强,插上即用。
如何让它工作起来?Zigbee2MQTT登场
Home Assistant本身不能直接读取Zigbee信号,我们需要中间件—— Zigbee2MQTT。
- 通过串口与Zigbee棒通信;
- 发现并管理Zigbee子设备;
- 将所有状态变化发布到MQTT主题;
- HA订阅这些主题,实现设备同步。
安装Node.js环境
Zigbee2MQTT基于Node.js开发,先装环境:
curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash -
sudo apt-get install -y nodejs
克隆项目并安装依赖
git clone https://github.com/Koenkk/zigbee2mqtt.git /opt/zigbee2mqtt
cd /opt/zigbee2mqtt
npm install
编辑配置文件
编辑 /opt/zigbee2mqtt/data/configuration.yaml:
frontend:
port: 8080
mqtt:
base_topic: zigbee2mqtt
server: 'mqtt://localhost'
serial:
port: /dev/ttyUSB0
确保 port 正确指向你的设备(可用 ls /dev/tty* 查看)。
启动服务
打开浏览器访问 http://<树莓派IP>:8080,可以看到Zigbee2MQTT的管理界面。
搭建本地MQTT消息总线
Zigbee2MQTT需要一个MQTT Broker来转发消息。我们可以用Docker快速部署一个Mosquitto。
启动Mosquitto容器
docker run -d \
--name mosquitto \
--restart=unless-stopped \
-p 1883:1883 \
-p 9001:9001 \
-v /home/pi/mosquitto/config:/mosquitto/config \
eclipse-mosquitto
mkdir -p /home/pi/mosquitto/config
echo "listener 1883" > /home/pi/mosquitto/config/mosquitto.conf
echo "allow_anonymous true" >> /home/pi/mosquitto/config/mosquitto.conf
现在Zigbee2MQTT就能连接到 mqtt://localhost:1883 了。
重启Zigbee2MQTT服务后,在HA中添加MQTT集成,输入相同Base Topic( zigbee2mqtt),所有已配对设备将自动出现在HA中。
动手实践:实现自动化场景
让我们来做一个实用又温馨的功能: 夜间起夜小夜灯。
场景描述
当晚上11点到早上6点之间,卧室的人体传感器检测到动作,且主灯关闭时,自动点亮走廊的小夜灯(亮度30%),5分钟后关闭。
实现步骤
- 在Home Assistant中确认以下实体存在:
- 二进制传感器:
binary_sensor.motion_bedroom
- 灯光:
light.hallway_night_light
- 进入 Settings > Automations & Scenes > Create Automation
- 使用图形化编辑器填写:
- Trigger: Event: State, From:
off, To: on, Entity: binary_sensor.motion_bedroom
- Conditions: Time: Between
23:00 and 06:00, AND State of light.bedroom_main is off
- Action: Turn On
light.hallway_night_light, Brightness: 30%, Then delay 5 minutes, Turn Off light.hallway_night_light
进阶技巧:提升稳定性与安全性
一套好用的系统不仅要功能完整,还得经得起时间考验。
1. 摆脱SD卡,改用USB SSD启动
SD卡频繁读写容易损坏。树莓派4B支持USB启动,只需一次设置:
vcgencmd bootloader_config
sudo rpi-eeprom-update -a
sudo reboot
更新后进入 raspi-config → Advanced Options → Boot Order → 设为'USB Boot First'。然后将系统克隆到SSD,拔掉SD卡也能正常启动。
2. 固定IP + 有线连接
- 使用网线连接路由器;
- 在路由器中为树莓派绑定固定IP;
- 关闭Wi-Fi以减少干扰(
sudo nmcli radio wifi off )
3. 安全加固三件套
- 修改默认SSH端口;
- 禁用root远程登录;
- 安装fail2ban防暴力破解:
sudo apt install fail2ban
4. 远程访问怎么做?
方案一:Tailscale(推荐)
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up
登录后,直接通过局域网IP访问HA,就像在家一样。
方案二:Nginx反向代理 + HTTPS
server {
listen 443 ssl;
server_name hass.yourdomain.com;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/privkey.pem;
location / {
proxy_pass http://localhost:8123;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
配合Let's Encrypt免费证书,既安全又专业。
相关免费在线工具
- Base64 字符串编码/解码
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
- Base64 文件转换器
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
- Markdown转HTML
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
- HTML转Markdown
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online
- JSON 压缩
通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online
- JSON美化和格式化
将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online