MySensors:从一颗传感器开始,搭自己的智能家
MySensors 可以把自制温湿度、门磁、能耗和灌溉节点接入 Home Assistant。这里从一个 DHT22 节点和 USB 网关开始,讲清硬件、接线、固件、接入步骤与安全边界。

智能家居买到后来,手机里常常堆着几家 App 。一个品牌的传感器便宜,另一个品牌的开关好用,想让它们互相配合,还得看网关、云端和平台愿不愿意开放。
Home Assistant 能把很多设备收进同一个面板,但家里总有成品传感器照顾不到的位置:花盆土壤湿度、地下室渗水、老式水表脉冲、车库门状态,或者一个需要睡眠半年以上的电池节点。
MySensors 把这部分硬件交给自己设计。它是一套面向 Arduino 、 ESP32 、 ESP8266 、 nRF5 等平台的开源框架,负责节点通信、路由和与控制器对接。 RF24 、 RFM69 、 RFM95 和 RS485 用在传感器网络;MQTT 位于网关与控制器之间,不能把它当成一种无线电。

项目可以做温湿度、门磁、人体移动、照明、能耗监测、灌溉和车库门控制。入门的目标不该是“全屋一次改完”,而是跑通一个无关安全的传感器:读数稳定进入 Home Assistant,断电重启后还能恢复,连续观察几天没有频繁丢包。
项目网站:mysensors.org
一套专属智能家,分成四层
MySensors 的链路可以拆成四部分:
- 节点:Arduino Nano 加 DHT22 、门磁、继电器或其他传感器;
- 传输:nRF24L01 、 RFM69 、 RFM95 或 RS485;
- 网关:把无线/有线消息转成 USB 串口、 TCP 或 MQTT;
- 控制器:Home Assistant 负责设备面板、历史记录和自动化。

网关固定使用节点 ID 0,普通节点使用 1–254,255 用于广播。第一次搭建时把传感器节点固定为 1,比自动分配 ID 更容易排错。
项目常被概括成“自愈 Mesh”。准确的说法是自组织树形网络:节点会寻找通往网关的父节点,常供电的中继器可以帮助转发;电池传感器通常会休眠,只做叶子节点。中继器需要一直醒着,不适合靠小电池长期供电。

这套方案适合谁
MySensors 适合愿意焊接、刷固件和检查串口日志的人。它的优势来自硬件选择自由:可以换传感器、换无线模块、调整上报周期,也能做市面上很难找到的形态。
下面几类场景比较合适:
- 房间多、 Wi-Fi 覆盖差,希望用低功耗无线节点;
- 需要定制门磁、漏水、土壤、脉冲计数或环境传感器;
- 已有 Home Assistant,想把自制硬件稳定接进去;
- 需要 RS485 等有线节点,或希望控制节点固件与数据流。
想买回来直接扫码配对,Zigbee 成品设备更省时间。家里主要使用 ESP32/ESP8266,ESPHome 与 Home Assistant 的配置过程更短。 MySensors 把无线、节点协议和网关都开放出来,代价是接线、供电、射频和固件维护也要自己负责。
第一个项目:温湿度节点进 Home Assistant
这次只搭一条最小链路:
DHT22 传感器节点
↓ nRF24L01
Arduino USB 串口网关
↓ USB
Home Assistant
串口网关比 TCP 和 MQTT 网关少一层网络配置,也缩小了攻击面。等它稳定以后,再考虑无线网关、 MQTT 、中继和电池优化。
准备硬件
- Arduino Nano 兼容板 2 块,ATmega328P 、 5V 、 16MHz;
- 普通 nRF24L01+ 模块 2 块,首轮不选 PA/LNA 大功率版;
- 稳定的 3.3V 供电或 nRF24 转接板 2 块;
- 每块无线模块附近放
4.7–47µF电容,并联100nF去耦; - DHT22/AM2302 模块 1 块;
- 面包板、杜邦线和两根能传数据的 USB 线。
nRF24 的 VCC 只能接稳定 3.3V,直接接 5V 可能损坏模块。无线节点时好时坏,最常见的问题就是供电不稳和电容离模块太远。

两块 Nano 都这样接 nRF24
Nano GND → nRF24 GND
3.3V → nRF24 VCC
Nano D9 → CE
Nano D10 → CSN
Nano D13 → SCK
Nano D11 → MOSI
Nano D12 → MISO
IRQ → 不接
传感器节点再接 DHT22:
DHT22 GND → Nano GND
DHT22 VCC → 模块标注的供电端,常见成品模块接 5V
DHT22 DATA → Nano D3

第一步:烧录 USB 串口网关
在 Arduino IDE 的 Library Manager 搜索 MySensors,安装稳定版 2.3.2。打开:
File → Examples → MySensors → GatewaySerial
网关配置的主要部分如下:
#define MY_DEBUG
#define MY_RADIO_RF24
#define MY_RF24_PA_LEVEL RF24_PA_LOW
#define MY_GATEWAY_SERIAL
#include <MySensors.h>
选择 Arduino Nano 与对应串口后上传。 16MHz Nano 默认使用 115200 波特率;8MHz 板的官方示例会降到 38400。
上传完成后可以短暂打开串口监视器查看启动日志,随后关闭。 Home Assistant 和 Arduino 串口监视器不能同时占用同一个设备。
第二步:烧录温湿度节点
官方 DHT 示例位于:
MySensorsArduinoExamples/
examples/DhtTemperatureAndHumiditySensor/
它使用同仓库 libraries/DHT 中的修改版 DHT 库。下载 mysensors/MySensorsArduinoExamples 后,把该 DHT 库放入 Arduino libraries 目录,再打开示例。
为了让第一次接入更确定,在 #include <MySensors.h> 前加入固定节点 ID:
#define MY_DEBUG
#define MY_RADIO_RF24
#define MY_NODE_ID 1
#include <SPI.h>
#include <MySensors.h>
#include <DHT.h>
示例会向控制器声明两个子设备:
sendSketchInfo("TemperatureAndHumidity", "1.1");
present(0, S_HUM);
present(1, S_TEMP);
读取和上报部分使用预先声明的消息对象:
MyMessage msgHum(0, V_HUM);
MyMessage msgTemp(1, V_TEMP);
// 在 loop() 读取成功后发送
send(msgTemp.set(temperature, 1));
send(msgHum.set(humidity, 1));
官方完整示例默认每 60 秒测量一次,数值变化时上报,并定期强制刷新。 Home Assistant 要求节点先完成 presentation(),再从 loop() 发送初始值;只声明设备、不发送第一次温湿度,实体可能不会创建。
第三步:接入 Home Assistant
把网关 USB 连接到 Home Assistant 主机。 Linux 上先确认设备:
ls /dev/ttyACM*
常见结果是:
/dev/ttyACM0
进入 Home Assistant:
设置 → 设备与服务 → 添加集成 → MySensors
选择串口网关并填写:
Device: /dev/ttyACM0
Baud: 115200
Version: 2.3.2
Home Assistant 跑在 Docker 、虚拟机或 NAS 套件里时,还要把 USB 设备传给对应容器或虚拟机。这个步骤没完成,集成页面看得到,串口却打不开。
传感器节点通电后,应出现节点 1,湿度 child 0,温度 child 1。先在开发者工具的状态页面观察数值,再做一个低风险自动化,例如温度超过设定值时发通知。不要用第一版 DIY 节点直接控制门锁、燃气、电热器或其他高风险设备。
扩展全屋之前,先解决四个问题
射频和供电
先把节点放在网关旁边跑稳,再逐步拉远。记录失败发送、重连和电池电压。需要中继时,用常供电节点,别让休眠传感器承担转发。
节点身份和备份
固定节点 ID 能简化首轮测试。规模扩大后再启用自动分配,并备份 Home Assistant 的 MySensors 持久化文件和节点固件。换网关或重装系统前,先保留这些状态。
签名与加密
MySensors 的签名和无线加密默认关闭。签名用于验证来源和完整性,不隐藏传感器数值;无线加密也不会自动保护网关到 Home Assistant 的 USB 、 TCP 或 MQTT 链路。
RF24 驱动当前文档明确提示其加密 IV 固定为零,安全性偏弱。需要敏感控制时,应把本地网络隔离、 Home Assistant 账号、 MQTT 认证和物理访问一起考虑,不能只打开一个编译选项就结束。
版本与漏洞
最新稳定版 2.3.2 发布于 2019 年。开发分支已经进入 2.4.0-rc.1,2026 年仍有提交和论坛讨论,但稳定版更新节奏很慢。
截至 2026 年 7 月,项目还有一个公开的 C_STREAM 串口/MQTT 解析溢出问题(#1622),报告称当前版本都受影响。入门阶段使用直连 USB 网关,不开放 TCP 5003,不把 MQTT Broker 或网关输入主题暴露到公网,也暂时不启用 OTA/C_STREAM 。等修复进入正式版本后再调整。
能做什么,也要知道它管不了什么
MySensors 能把自制传感器和执行器接进家庭自动化平台,也能通过电池休眠、无线树形路由和有线 RS485 覆盖特殊位置。它不能直接兼容所有 Zigbee 、蓝牙或品牌私有设备,也无法绕过厂商云 API 的限制。
DIY 温湿度、植物灌溉和水表计数很适合练手。烟雾、燃气、医疗监测和防盗报警仍应使用符合当地标准的专业设备,MySensors 可以提供辅助状态,别让它成为唯一安全链路。
从一个 USB 网关和一个温湿度节点开始,连续跑一周。读数、断线恢复和日志都稳定,再加门磁、漏水或土壤节点。这样的扩展速度慢一点,却能清楚知道家里每一条自动化依赖了什么。
你最想自己做哪种传感器:漏水、门磁、土壤湿度,还是水电表计数?
来源链接:https://www.mysensors.org Home Assistant 集成:https://www.home-assistant.io/integrations/mysensors/