#:########################################################################################:# # ESP-NOW Test Transmitter #:########################################################################################:# # # Hardware: # - ESP32-S3-Zero / ESP32-S3 Super Mini style board # # Wiring: # - Button between GPIO4 and GND. # # Behaviour: # - Sleeps most of the time. # - Button press wakes the ESP32-S3. # - Sends ESP-NOW broadcast 3 times. # - Goes back to deep sleep. # # IMPORTANT: # - Set espnow.channel to the same 2.4 GHz Wi-Fi channel used by the receiver. # #:########################################################################################:# substitutions: device_name: espnow-test-transmitter friendly_name: "ESPNow Test Transmitter" esphome: name: ${device_name} friendly_name: ${friendly_name} on_boot: priority: -100 then: - logger.log: "Booted. Sending ESP-NOW test packet..." - script.execute: send_espnow_press - delay: 500ms - logger.log: "Going back to deep sleep." - deep_sleep.enter: deep_sleep_control esp32: board: esp32-s3-devkitc-1 framework: type: arduino logger: level: DEBUG #:########################################################################################:# # No Wi-Fi on transmitter #:########################################################################################:# # # This keeps the transmitter fast and battery-friendly. # Upload over USB for this test. # #:########################################################################################:# # ESP-NOW Transmit #:########################################################################################:# espnow: channel: 6 script: - id: send_espnow_press mode: single then: - lambda: |- id(press_count) += 1; - espnow.broadcast: data: !lambda |- std::string msg = "REMOTE_A:BUTTON_1:" + to_string(id(press_count)); return std::vector(msg.begin(), msg.end()); - delay: 50ms - espnow.broadcast: data: !lambda |- std::string msg = "REMOTE_A:BUTTON_1:" + to_string(id(press_count)); return std::vector(msg.begin(), msg.end()); - delay: 50ms - espnow.broadcast: data: !lambda |- std::string msg = "REMOTE_A:BUTTON_1:" + to_string(id(press_count)); return std::vector(msg.begin(), msg.end()); globals: - id: press_count type: int restore_value: true initial_value: '0' #:########################################################################################:# # Wake Button and Deep Sleep #:########################################################################################:# binary_sensor: - platform: gpio id: wake_button name: "Wake Button" internal: true pin: number: GPIO4 mode: INPUT_PULLUP inverted: true deep_sleep: id: deep_sleep_control wakeup_pin: number: GPIO4 mode: INPUT_PULLUP inverted: true sleep_duration: 365d