跳转到内容

ESP-NOW 数据包传输平台

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

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

NOTE

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

# Example configuration entry
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: "Test Temperature"
  • espnow_id (必填, ID): 用于传输的 esp-now ID。
  • peer_address (可选, MAC 地址): 要发送数据包到的 MAC 地址。这可以是特定 的对端地址用于点对点通信,也可以是广播地址。默认 FF:FF:FF:FF:FF:FF
  • 还包括 数据包传输组件 的所有其他选项

NOTE

对端必须先在 Espnow 组件中注册 才能接收数据包。peer_address 仅控制哪些对端接收传输的数据; 传入数据包接受所有已注册对端的数据。

peer_address 配置决定传输模式。

packet_transport:
- platform: espnow
sensors:
- sensor_id

所有将广播地址(FF:FF:FF:FF:FF:FF)注册为对端的设备都会接收数据包。 这在多个设备监控单个传感器源的中心辐射拓扑中非常有用。

WARNING

使用广播模式会增加无线电通道上的 ESP-NOW 流量,这可能会影响其他 ESP-NOW 设备的性能。尽可能使用特定的对端地址以减少干扰。

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

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

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

esphome:
name: temp-sensor
espnow:
peers:
- "AA:BB:CC:DD:EE:01" # Consumer mac address
packet_transport:
- platform: espnow
peer_address: "AA:BB:CC:DD:EE:01" # Consumer mac address
encryption: "MySecretKey123"
sensors:
- outdoor_temp
sensor:
- platform: ...
temperature:
name: "Outdoor Temperature"
id: outdoor_temp
espnow:
peers:
- "AA:BB:CC:DD:EE:00" # Provider mac address
packet_transport:
- platform: espnow
encryption: "MySecretKey123"
providers:
- name: temp-sensor # Provider device name
sensor:
- platform: packet_transport
provider: temp-sensor
id: remote_temp
remote_id: outdoor_temp
name: "Remote Outdoor Temperature"

NOTE

provider 字段必须与提供者设备 esphome: 块中配置的设备名称匹配;此名称包含在 packet_transport 数据中。

此示例显示中心节点从多个远程设备接收传感器数据。

espnow:
peers:
- "AA:BB:CC:DD:EE:01" # room-sensor-1 mac address
- "AA:BB:CC:DD:EE:02" # room-sensor-2 mac address
- "AA:BB:CC:DD:EE:03" # outdoor-sensor mac address
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: "Room 1 Temperature"
- platform: packet_transport
provider: room-sensor-2
remote_id: temperature
name: "Room 2 Temperature"
- platform: packet_transport
provider: outdoor-sensor
remote_id: temperature
name: "Outdoor Temperature"
esphome:
name: room-sensor-1 # room-sensor-2, outdoor-sensor on the other devices
espnow:
packet_transport:
- platform: espnow
encryption: "HubSecret123"
sensors:
- temperature
sensor:
- platform: ...
temperature:
id: temperature