ESP-NOW Packet Transport Platform
The Packet Transport Component platform allows ESPHome nodes to directly communicate with each over a communication channel. The ESP-NOW implementation of the platform uses ESP-NOW as a communication medium. See the Packet Transport Component and ESPNow communication Component for more information.
ESP-NOW provides low-latency, low-power wireless communication between ESP32 devices without requiring a Wi-Fi connection. This makes it ideal for battery-powered sensors or applications where Wi-Fi overhead would impact performance.
Note:
ESP-NOW communication occurs independently of Wi-Fi. Devices can communicate via ESP-NOW even when Wi-Fi is disabled, making it suitable for power-sensitive applications.
Example Configuration
# 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"
Configuration Variables
- espnow_id (Required, ID): The esp-now ID to use for transport.
- peer_address (Optional, MAC Address): MAC address to send packets to. This can be either a specific peer address for point-to-point communication, or the broadcast address. Default FF:FF:FF:FF:FF:FF
- All other options from the Packet Transport Component
Note:
Peers must be registered with the ESPNow communication Component component before they can receive packets. Thepeer_address
only controls which peer(s) receive transmitted data; incoming packets are accepted from all registered peers.
Broadcast vs Unicast
The peer_address
configuration determines the transmission mode.
Broadcast Mode (default)
packet_transport:
- platform: espnow
sensors:
- sensor_id
All devices with the broadcast address (FF:FF:FF:FF:FF:FF
) registered as a peer will receive the packets. This is useful for hub-and-spoke topologies where multiple devices monitor a single sensor source.
Warning:
Using broadcast mode increases ESP-NOW traffic on the radio channel, which may impact performance of other ESP-NOW devices in range. Use specific peer addresses whenever possible to minimize interference.
Unicast Mode
packet_transport:
- platform: espnow
peer_address: "AA:BB:CC:DD:EE:FF"
sensors:
- sensor_id
Only the specified peer receives the packets. This is more efficient for point-to-point communication and reduces radio channel congestion for neighboring ESP-NOW devices.
Simple Example
This example shows two devices exchanging sensor data over ESP-NOW with encryption enabled.
Temperature Provider
espnow:
peers:
- mac_address: "AA:BB:CC:DD:EE:01" # Device 2
packet_transport:
- platform: espnow
peer_address: "AA:BB:CC:DD:EE:01" # Send to Device 2
encryption: "MySecretKey123"
sensors:
- outdoor_temp
sensor:
- platform: ...
temperature:
name: "Outdoor Temperature"
id: outdoor_temp
Temperature Consumer
espnow:
peers:
- mac_address: "AA:BB:CC:DD:EE:00" # Device 1
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: "Remote Outdoor Temperature"
Multi-Device Hub Example
This example shows a central hub receiving sensor data from multiple remote devices.
Hub Device
espnow:
peers:
- mac_address: "FF:FF:FF:FF:FF:FF"
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"
Remote Sensors
espnow:
peers:
- mac_address: "FF:FF:FF:FF:FF:FF"
packet_transport:
- platform: espnow
peer_address: "FF:FF:FF:FF:FF:FF"
encryption: "HubSecret123"
sensors:
- temperature
sensor:
- platform: ...
temperature:
id: temperature