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_addressonly 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_idAll 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_idOnly 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_tempTemperature 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