为什么要本地网关
现在买个灯泡、窗帘,都要装对应的 App,连厂商云。手机上装七八个 App,网络一抖就全部失灵,厂商一旦跑路产品直接变砖。本地网关就是把家里所有设备的"大脑"放在自己家里:一台小小的主机跑着统一的自动化引擎,所有设备本地互通,外网断了照样开门、开空调、关灯。
智能家居的终极形态是"你永远感觉不到它在联网"。所有日常联动都在局域网完成,云只做远程查看和语音助手。
这篇讲怎么选硬件、怎么把 Home Assistant 跑起来、怎么写不依赖云的自动化。
网关硬件怎么选
网关要 7×24 小时开着,省电、稳定、不能重启。常见选择:
网关硬件对比
- 树莓派 4/5生态最好,功耗 3~5W,适合折腾。
- N100 小主机性能够跑虚拟机,适合家里设备多。
- 商业成品网关(绿米 Aqara M3、小米中枢)开箱即用,但扩展性差。
- 旧笔记本性能够但费电,适合过渡。
关键不是性能,是稳定性。配一个 UPS,停电也能撑半小时,自动化不中断。
Home Assistant 是怎么跑起来的
Home Assistant 是目前最主流的开源智能家居平台,几乎所有品牌都有现成集成。安装方式推荐官方 HAOS 镜像,刷到 U 盘启动就行。
# 安装后的基本结构
# /config/configuration.yaml 主配置
# /config/automations.yaml 自动化规则
# /config/secrets.yaml 密码(不要提交 git)
# /www/ 本地静态资源
# 一个灯泡的 YAML 片段
light:
- platform: mqtt
name: "客厅主灯"
state_topic: "home/living/main/stat"
command_topic: "home/living/main/cmd"
加一个新设备:要么走集成(Integration)自动发现,要么手动在 YAML 里加一段。设备一多就用 App 的可视化编辑器改,不要手撸 YAML。
局域网联动:断网也能用
"断网可用"是本地网关的核心价值。做法:所有自动化触发都基于本地实体(门磁、人体传感器、光照),动作也走本地协议(MQTT、Zigbee、BLE),不要依赖云端 Webhook。
# 开门自动开灯(本地,不联网)
automation:
- alias: "开门开灯"
trigger:
- platform: state
entity_id: binary_sensor.front_door
to: "on"
condition:
- condition: sun
after: sunset
action:
- service: light.turn_on
target:
entity_id: light.entry
语音助手这类必须联网的功能,单独走云;本地联动永远不被云拖死。
自动化脚本怎么写
写自动化的常见陷阱是"触发条件写得太宽",结果半夜灯自己亮。工程上的经验:
- 触发用 State 变化,不要用数值持续区间。
- Condition 写全:时间、位置、光照、家人是否在家。
- Action 加 delay 防抖,避免门磁抖动连触十几次。
- 所有自动化加 initial_state: on,重启后不丢状态。
远程访问的安全姿势
HA 默认只在局域网可访问。要在外面手机控制,不要直接把端口暴露到公网。推荐两种做法:
远程访问方案
- Tailscale / WireGuard组网 VPN,最安全,像在家里一样。
- Nabu Casa官方付费云,免折腾,一个月几块钱。
- 反代 + 证书技术党做法,必须强密码 + 2FA。
任何方案都要开 2FA,HA 被拖库的事件已经发生过好几次。
常见翻车点
// 1. 改 YAML 改错:开发工具里先 check config
// 2. 网关死机:加 watchdog,自动重启
// 3. Zigbee 设备掉线:信道和路由器错开,别和 WiFi 1/6/11 重叠
// 4. 备份:每周自动备份 /config,坏了能一键恢复
本地网关是个长期项目,不是一晚上装完就完事。从 3 个设备开始,慢慢加,别一次买一堆。
跑通一个稳定 30 天不重启的 HA,你就基本入门了。