跳转到内容

ESP-NOW 数据包传输平台

数据包传输组件 平台允许 ESPHome 节点通过通信通道直接相互通信。该平台的 ESP-NOW 实现使用 ESP-NOW 作为通信媒介。有关更多信息,请参阅 数据包传输组件Espnow

ESP-NOW 提供低延迟、低功耗的 ESP32 设备之间的无线通信,无需 Wi-Fi 连接。这使其成为电池供电传感器或 Wi-Fi 开销会影响性能的应用的理想选择。

注意: ESP-NOW 通信独立于 Wi-Fi 进行。即使禁用 Wi-Fi,设备也可以通过 ESP-NOW 进行通信,这使其适用于对功耗敏感的应用。

# 示例配置
espnow:
id: espnow_component
packet_transport:
- platform: espnow
id: transport_unicast
espnow_id: espnow_component
peer_address: "AA:BB:CC:DD:EE:FF"
encryption:
key: "0123456789abcdef0123456789abcdef"
sensors:
- temp_sensor
sensor:
- platform: internal_temperature
id: temp_sensor
name: "测试温度"
  • espnow_id (必需, ID):用于传输的 esp-now ID。
  • peer_address (可选, MAC 地址):发送数据包的目标 MAC 地址。可以是点对点通信的特定对等地址,也可以是广播地址。默认 FF:FF:FF:FF:FF:FF
  • 来自 数据包传输组件 的所有其他选项

注意: 对等设备必须先在 Espnow 组件中注册,才能接收数据包。peer_address 仅控制哪些对等设备接收传输的数据;传入的数据包接受来自所有已注册对等设备的数据。

peer_address 配置决定传输模式。

packet_transport:
- platform: espnow
sensors:
- sensor_id

所有将广播地址(FF:FF:FF:FF:FF:FF)注册为对等设备的设备都将接收数据包。这对于多个设备监控单个传感器源的星型拓扑结构非常有用。

警告: 使用广播模式会增加无线信道上的 ESP-NOW 流量,可能会影响范围内其他 ESP-NOW 设备的性能。尽可能使用特定的对等地址以最小化干扰。

packet_transport:
- platform: espnow
peer_address: "AA:BB:CC:DD:EE:FF"
sensors:
- sensor_id

只有指定的对等设备接收数据包。这对点对点通信更高效,并减少相邻 ESP-NOW 设备的无线信道拥塞。

此示例显示两个设备通过启用加密的 ESP-NOW 交换传感器数据。

espnow:
peers:
- "AA:BB:CC:DD:EE:01" # 消费者 mac 地址
packet_transport:
- platform: espnow
peer_address: "AA:BB:CC:DD:EE:01" # 消费者 mac 地址
encryption: "MySecretKey123"
sensors:
- outdoor_temp
sensor:
- platform: ...
temperature:
name: "室外温度"
id: outdoor_temp
espnow:
peers:
- "AA:BB:CC:DD:EE:00" # 提供者 mac 地址
packet_transport:
- platform: espnow
encryption: "MySecretKey123"
providers:
- name: temp-sensor # 提供者设备名称
sensor:
- platform: packet_transport
provider: temp-sensor
id: remote_temp
remote_id: outdoor_temp
name: "远程室外温度"

此示例显示一个中央集线器从多个远程设备接收传感器数据。

espnow:
peers:
- "AA:BB:CC:DD:EE:01" # room-sensor-1 mac 地址
- "AA:BB:CC:DD:EE:02" # room-sensor-2 mac 地址
- "AA:BB:CC:DD:EE:03" # outdoor-sensor mac 地址
packet_transport:
- platform: espnow
encryption: "HubSecret123"
providers:
- name: room-sensor-1
- name: room-sensor-2
- name: outdoor-sensor
sensor:
- platform: packet_transport
provider: room-sensor-1
remote_id: temperature
name: "房间 1 温度"
- platform: packet_transport
provider: room-sensor-2
remote_id: temperature
name: "房间 2 温度"
- platform: packet_transport
provider: outdoor-sensor
remote_id: temperature
name: "室外温度"
espnow:
packet_transport:
- platform: espnow
encryption: "HubSecret123"
sensors:
- temperature
sensor:
- platform: ...
temperature:
id: temperature