在法国用二手 Mini PC 跑 Home Assistant,Zigbee 网关别接 USB 延长线

去年秋天换了个住处,房东留了个老式电暖器,窗户还是单层玻璃。我想着先做最小可用:一个二手 HP t620(4G 内存、16G SSD),装 Debian 12,上面跑 Home Assistant Container,接几个 Aqara 温湿度传感器和两个 Zigbee 插座,目标只是记录客厅和卧室的温度、湿度,以及睡前把插座断电。

装的过程不复杂,麻烦在网关。我先买了个 SONOFF Zigbee 3.0 USB Dongle Plus,插在 t620 的 USB 口上,结果 HA 里隔十几分钟就掉一次设备。dmesg 里能看到 USB 重新枚举,换了个口还是这样。后来把 dongle 用一根一米长的 USB 延长线拉出来,反而稳定了——但这是错觉,真正稳定是我把延长线换成了带磁环的短线,并且把 t620 的 Wi-Fi 关掉,只用网线。

具体配置是这样:

# docker-compose.yml 片段
services:
  homeassistant:
    image: ghcr.io/home-assistant/home-assistant:stable
    network_mode: host
    volumes:
      - ./config:/config
      - /etc/localtime:/etc/localtime:ro
    devices:
      - /dev/ttyUSB0:/dev/ttyUSB0
    restart: unless-stopped

Zigbee2MQTT 单独跑一个容器,串口写 /dev/serial/by-id/usb-ITead_Sonoff_Zigbee_3.0_USB_Dongle_Plus_...,不要写 ttyUSB0,因为重启后编号会变。这个 by-id 路径是我踩了两次坑才固定下来的。

为什么这么做:t620 的 USB 供电本来就一般,2.4G Wi-Fi 和 Zigbee 都在同一个频段,网关贴机箱太近会互相干扰。延长线本身不是问题,问题是我一开始用了根没屏蔽的廉价线,把干扰放大了。关 Wi-Fi、用网线、by-id 固定串口,这三件事加起来才让掉线从每天几次降到一两周一次。代价是 t620 只跑 HA 和 Zigbee2MQTT,没有余量再塞别的服务,SSD 16G 也紧,日志我设了 7 天轮转。

会失效的地方:如果你家 Zigbee 设备超过 30 个,或者墙多,单个 dongle 的中继不够,掉线还会回来;这时候得加路由设备,不是换线能解决的。另外 t620 的 USB 口只有两个,我插了 dongle 就没法接别的,后来加了个带供电的 USB Hub 才够用。还有一次系统升级后 by-id 路径变了,Zigbee2MQTT 起不来,我是进容器里 ls /dev/serial/by-id/ 才发现的。

现在客厅和卧室的温湿度曲线能看了,睡前断电也自动化了。想问下在法国用老房子做智能家居的,你们 Zigbee 网关是放房间中央还是跟着主机走?我这边主机在玄关,信号到卧室已经有点勉强。

0
赞同度 100% · 0 条评论 · 1 阅读

0 条评论

支持 Markdown · 回复会实时推送给对方

还没有评论,写下第一条。