Skip to content

Get server found status to prevent deepsleep #19

@jerome83136

Description

@jerome83136

Hello,

I would like to prevent my transmitters from goind into deep sleep when no server is found.

Currently; when no server is found the autofind server mechanism is triggered and all Wifi channels are scanned by the transmitters until they find a reachable receiver. Then the server and channel are saved into flash.

The problem is that the auto find mechanism doesn't seem to be considered by "on_send_failed"
So I cannot find a way to prevent deep sleep while the auto find is in progress. (I would like to wait for a server to be found and saved to flash, before going deep sleep)

Is there a way to access the status of found servers and use i as a condition to prevent/allow deep sleep ?

Here are the DEBUG boot logs of my transmitter; where we can see auto find scanning, which gets stopped when deep sleep triggers (after 30 seconds)

[I][logger:359]: Log initialized
[I][app:029]: Running through setup()...
[I][beethowen_transmitter:147]: Connecting server to {address} 70:04:1d:33:54:88 on {channel} 1
[C][adc:047]: Setting up ADC 'battery_voltage'...
[C][adc:093]: ADC 'battery_voltage' setup fin[D][beethowen_transmitter:287]: ESPNow send failed, resetting server_found.
[D][beethowen_transmitter:296]: Sending finished {success} 0, {has_outstanding_measurements} 0, {count} 2
[D][app:029]: espnow send failed ! Preventing deepsleep...
[D][beethowen_transmitter:135]: trying to find server on {channel} 1, {local_passkey_} 0x0000, {remote_expected_passkey_} 0x0000
[D][beethowen_transmitter:135]: trying to find server on {channel} 3, {local_passkey_} 0x0000, {remote_expected_passkey_} 0x0000
[W][component:214]: Component beethowen_transmitter took a long time for an operation (0.61 s).
[W][component:215]: Components should block for at most 20-30ms.
[D][beethowen_transmitter:135]: trying to find server on {channel} 5, {local_passkey_} 0x0000, {remote_expected_passkey_} 0x0000
[W][component:214]: Component beethowen_transmitter took a long time for an operation (0.61 s).
[W][component:215]: Components should block for at most 20-30ms.
[D][beethowen_transmitter:135]: trying to find server on {channel} 7, {local_passkey_} 0x0000, {remote_expected_passkey_} 0x0000
[W][component:214]: Component beethowen_transmitter took a long time for an operation (0.61 s).
[W][component:215]: Components should block for at most 20-30ms.
[D][beethowen_transmitter:135]: trying to find server on {channel} 9, {local_passkey_} 0x0000, {remote_expected_passkey_} 0x0000
[W][component:214]: Component beethowen_transmitter took a long time for an operation (0.61 s).
[W][component:215]: Components should block for at most 20-30ms.
[D][beethowen_transmitter:135]: trying to find server on {channel} 11, {local_passkey_} 0x0000, {remote_expected_passkey_} 0x0000
[W][component:214]: Component beethowen_transmitter took a long time for an operation (0.61 s).
[W][component:215]: Components should block for at most 20-30ms.
[D][beethowen_transmitter:135]: trying to find server on {channel} 2, {local_passkey_} 0x0000, {remote_expected_passkey_} 0x0000
[W][component:214]: Component beethowen_transmitter took a long time for an operation (0.61 s).
[W][component:215]: Components should block for at most 20-30ms.
[D][beethowen_transmitter:135]: trying to find server on {channel} 4, {local_passkey_} 0x0000, {remote_expected_passkey_} 0x0000
[W][component:214]: Component beethowen_transmitter took a long time for an operation (0.61 s).
[W][component:215]: Components should block for at most 20-30ms.
[D][beethowen_transmitter:135]: trying to find server on {channel} 6, {local_passkey_} 0x0000, {remote_expected_passkey_} 0x0000
[W][component:214]: Component beethowen_transmitter took a long time for an operation (0.61 s).
[W][component:215]: Components should block for at most 20-30ms.
[D][beethowen_transmitter:135]: trying to find server on {channel} 8, {local_passkey_} 0x0000, {remote_expected_passkey_} 0x0000
[W][component:214]: Component beethowen_transmitter took a long time for an operation (0.61 s).
[W][component:215]: Components should block for at most 20-30ms.
[D][beethowen_transmitter:135]: trying to find server on {channel} 10, {local_passkey_} 0x0000, {remote_expected_passkey_} 0x0000
[W][component:214]: Component beethowen_transmitter took a long time for an operation (0.61 s).
[W][component:215]: Components should block for at most 20-30ms.
[D][sensor:094]: 'battery_voltage': Sending state 2.35054 V with 4 decimals of accuracy
[D][beethowen_transmitter:135]: trying to find server on {channel} 1, {local_passkey_} 0x0000, {remote_expected_passkey_} 0x0000
[W][component:214]: Component beethowen_transmitter took a long time for an operation (0.65 s).
[W][component:215]: Components should block for at most 20-30ms.
[D][beethowen_transmitter:135]: trying to find server on {channel} 3, {local_passkey_} 0x0000, {remote_expected_passkey_} 0x0000
[W][component:214]: Component beethowen_transmitter took a long time for an operation (0.61 s).
[W][component:215]: Components should block for at most 20-30ms.
[D][beethowen_transmitter:135]: trying to find server on {channel} 5, {local_passkey_} 0x0000, {remote_expected_passkey_} 0x0000
[W][component:214]: Component beethowen_transmitter took a long time for an operation (0.61 s).
[W][component:215]: Components should block for at most 20-30ms.
[D][beethowen_transmitter:135]: trying to find server on {channel} 7, {local_passkey_} 0x0000, {remote_expected_passkey_} 0x0000
[W][component:214]: Component beethowen_transmitter took a long time for an operation (0.61 s).
[W][component:215]: Components should block for at most 20-30ms.
[D][beethowen_transmitter:135]: trying to find server on {channel} 9, {local_passkey_} 0x0000, {remote_expected_passkey_} 0x0000
[W][component:214]: Component beethowen_transmitter took a long time for an operation (0.61 s).
[W][component:215]: Components should block for at most 20-30ms.
[D][beethowen_transmitter:135]: trying to find server on {channel} 11, {local_passkey_} 0x0000, {remote_expected_passkey_} 0x0000
[W][component:214]: Component beethowen_transmitter took a long time for an operation (0.61 s).
[W][component:215]: Components should block for at most 20-30ms.
[D][beethowen_transmitter:135]: trying to find server on {channel} 2, {local_passkey_} 0x0000, {remote_expected_passkey_} 0x0000
[W][component:214]: Component beethowen_transmitter took a long time for an operation (0.61 s).
[W][component:215]: Components should block for at most 20-30ms.
[D][beethowen_transmitter:135]: trying to find server on {channel} 4, {local_passkey_} 0x0000, {remote_expected_passkey_} 0x0000
[W][component:214]: Component beethowen_transmitter took a long time for an operation (0.61 s).
[W][component:215]: Components should block for at most 20-30ms.
[D][beethowen_transmitter:135]: trying to find server on {channel} 6, {local_passkey_} 0x0000, {remote_expected_passkey_} 0x0000
[W][component:214]: Component beethowen_transmitter took a long time for an operation (0.61 s).
[W][component:215]: Components should block for at most 20-30ms.
[D][beethowen_transmitter:135]: trying to find server on {channel} 8, {local_passkey_} 0x0000, {remote_expected_passkey_} 0x0000
[W][component:214]: Component beethowen_transmitter took a long time for an operation (0.61 s).
[W][component:215]: Components should block for at most 20-30ms.
[D][beethowen_transmitter:135]: trying to find server on {channel} 10, {local_passkey_} 0x0000, {remote_expected_passkey_} 0x0000
[W][component:214]: Component beethowen_transmitter took a long time for an operation (0.61 s).
[W][component:215]: Components should block for at most 20-30ms.
[D][beethowen_transmitter:135]: trying to find server on {channel} 1, {local_passkey_} 0x0000, {remote_expected_passkey_} 0x0000
[W][component:214]: Component beethowen_transmitter took a long time for an operation (0.61 s).
[W][component:215]: Components should block for at most 20-30ms.
[D][beethowen_transmitter:135]: trying to find server on {channel} 3, {local_passkey_} 0x0000, {remote_expected_passkey_} 0x0000
[W][component:214]: Component beethowen_transmitter took a long time for an operation (0.61 s).
[W][component:215]: Components should block for at most 20-30ms.
[D][beethowen_transmitter:135]: trying to find server on {channel} 5, {local_passkey_} 0x0000, {remote_expected_passkey_} 0x0000
[W][component:214]: Component beethowen_transmitter took a long time for an operation (0.61 s).
[W][component:215]: Components should block for at most 20-30ms.
[D][beethowen_transmitter:135]: trying to find server on {channel} 7, {local_passkey_} 0x0000, {remote_expected_passkey_} 0x0000
[W][component:214]: Component beethowen_transmitter took a long time for an operation (0.61 s).
[W][component:215]: Components should block for at most 20-30ms.
[D][beethowen_transmitter:135]: trying to find server on {channel} 9, {local_passkey_} 0x0000, {remote_expected_passkey_} 0x0000
[W][component:214]: Component beethowen_transmitter took a long time for an operation (0.61 s).
[W][component:215]: Components should block for at most 20-30ms.
[D][sensor:094]: 'battery_voltage': Sending state 2.18596 V with 4 decimals of accuracy
[D][beethowen_transmitter:135]: trying to find server on {channel} 11, {local_passkey_} 0x0000, {remote_expected_passkey_} 0x0000
[W][component:214]: Component beethowen_transmitter took a long time for an operation (0.61 s).
[W][component:215]: Components should block for at most 20-30ms.
[D][beethowen_transmitter:135]: trying to find server on {channel} 2, {local_passkey_} 0x0000, {remote_expected_passkey_} 0x0000
[W][component:214]: Component beethowen_transmitter took a long time for an operation (0.61 s).
[W][component:215]: Components should block for at most 20-30ms.
[D][beethowen_transmitter:135]: trying to find server on {channel} 4, {local_passkey_} 0x0000, {remote_expected_passkey_} 0x0000
[W][component:214]: Component beethowen_transmitter took a long time for an operation (0.61 s).
[W][component:215]: Components should block for at most 20-30ms.
[D][beethowen_transmitter:135]: trying to find server on {channel} 6, {local_passkey_} 0x0000, {remote_expected_passkey_} 0x0000
[W][component:214]: Component beethowen_transmitter took a long time for an operation (0.61 s).
[W][component:215]: Components should block for at most 20-30ms.
[D][beethowen_transmitter:135]: trying to find server on {channel} 8, {local_passkey_} 0x0000, {remote_expected_passkey_} 0x0000
[W][component:214]: Component beethowen_transmitter took a long time for an operation (0.61 s).
[W][component:215]: Components should block for at most 20-30ms.
[D][beethowen_transmitter:135]: trying to find server on {channel} 10, {local_passkey_} 0x0000, {remote_expected_passkey_} 0x0000
[W][component:214]: Component beethowen_transmitter took a long time for an operation (0.61 s).
[W][component:215]: Components should block for at most 20-30ms.
[D][beethowen_transmitter:135]: trying to find server on {channel} 1, {local_passkey_} 0x0000, {remote_expected_passkey_} 0x0000
[W][component:214]: Component beethowen_transmitter took a long time for an operation (0.61 s).
[W][component:215]: Components should block for at most 20-30ms.
[D][beethowen_transmitter:135]: trying to find server on {channel} 3, {local_passkey_} 0x0000, {remote_expected_passkey_} 0x0000
[W][component:214]: Component beethowen_transmitter took a long time for an operation (0.61 s).
[W][component:215]: Components should block for at most 20-30ms.
[D][beethowen_transmitter:135]: trying to find server on {channel} 5, {local_passkey_} 0x0000, {remote_expected_passkey_} 0x0000
[W][component:214]: Component beethowen_transmitter took a long time for an operation (0.61 s).
[W][component:215]: Components should block for at most 20-30ms.
[D][beethowen_transmitter:135]: trying to find server on {channel} 7, {local_passkey_} 0x0000, {remote_expected_passkey_} 0x0000
[W][component:214]: Component beethowen_transmitter took a long time for an operation (0.61 s).
[W][component:215]: Components should block for at most 20-30ms.
[D][beethowen_transmitter:135]: trying to find server on {channel} 9, {local_passkey_} 0x0000, {remote_expected_passkey_} 0x0000
[W][component:214]: Component beethowen_transmitter took a long time for an operation (0.61 s).
[W][component:215]: Components should block for at most 20-30ms.
[D][beethowen_transmitter:135]: trying to find server on {channel} 11, {local_passkey_} 0x0000, {remote_expected_passkey_} 0x0000
[W][component:214]: Component beethowen_transmitter took a long time for an operation (0.61 s).
[W][component:215]: Components should block for at most 20-30ms.
[D][beethowen_transmitter:135]: trying to find server on {channel} 2, {local_passkey_} 0x0000, {remote_expected_passkey_} 0x0000
[W][component:214]: Component beethowen_transmitter took a long time for an operation (0.61 s).
[W][component:215]: Components should block for at most 20-30ms.
[D][beethowen_transmitter:135]: trying to find server on {channel} 4, {local_passkey_} 0x0000, {remote_expected_passkey_} 0x0000
[W][component:214]: Component beethowen_transmitter took a long time for an operation (0.61 s).
[W][component:215]: Components should block for at most 20-30ms.
[D][beethowen_transmitter:135]: trying to find server on {channel} 6, {local_passkey_} 0x0000, {remote_expected_passkey_} 0x0000
[W][component:214]: Component beethowen_transmitter took a long time for an operation (0.61 s).
[W][component:215]: Components should block for at most 20-30ms.
[D][beethowen_transmitter:135]: trying to find server on {channel} 8, {local_passkey_} 0x0000, {remote_expected_passkey_} 0x0000
[W][component:214]: Component beethowen_transmitter took a long time for an operation (0.61 s).
[W][component:215]: Components should block for at most 20-30ms.
[D][sensor:094]: 'battery_voltage': Sending state 2.09734 V with 4 decimals of accuracy
[D][beethowen_transmitter:135]: trying to find server on {channel} 10, {local_passkey_} 0x0000, {remote_expected_passkey_} 0x0000
[W][component:214]: Component beethowen_transmitter took a long time for an operation (0.61 s).
[W][component:215]: Components should block for at most 20-30ms.
[I][deep_sleep:117]: Beginning Deep Sleep
[I][deep_sleep:119]: Sleeping for 600000000us
[D][esp32.preferences:114]: Saving 1 preferences to flash...
[D][esp32.preferences:143]: Saving 1 preferences to flash: 0 cached, 1 written, 0 failed
Terminal disconnected: NetworkError: The device has been lost.

Transmitter config:

esphome:
  name: test-deepsleep-sender

esp32:
  board: esp32-c3-devkitm-1
  variant: esp32c3

external_components:
  - source: github://afarago/esphome_component_bthome

logger:
#  level: NONE
#  baud_rate: 0

interval:
  - interval: 5sec
    then:
      - beethowen_transmitter.send

beethowen_transmitter:
  id: mySender
  connect_persistent: true
  sensors:
    - measurement_type: voltage
      sensor_id: battery_voltage
  auto_send: false
  on_send_failed:
    - lambda: |-
        ESP_LOGD("app", "espnow send failed ! Preventing deepsleep...");
  on_send_finished:
    - lambda: |-
        ESP_LOGD("app", "espnow send success ! Going deepsleep...");
        id(deep_sleep1).begin_sleep(true);

sensor:
  - platform: adc
    pin: GPIO0
    # pin: VCC ## debug, but remove multiply
    id: battery_voltage
    accuracy_decimals: 4
    unit_of_measurement: "V"
    update_interval: 10sec
    filters:
      # 4.2 V is scaled down to 1.0 V
      - filter_out: nan # <-- Processing will stop here on unknown values.
      - multiply: 4.22

deep_sleep:
  id: deep_sleep1
  run_duration: 30s
  sleep_duration: 10min
  wakeup_pin: GPIO4
  wakeup_pin_mode: INVERT_WAKEUP

Receiver config:

substitutions:
  systemName: "test-deepsleep-receiver"

esphome:
  name: ${systemName}

esp32:
  board: esp32-c3-devkitm-1
  variant: esp32c3

external_components:
  - source: github://afarago/esphome_component_bthome

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  fast_connect: true
  # power_save_mode: HIGH # This makes esp-now loss packages.

web_server:

mdns:
  disabled: true

logger:

api:
  encryption:
    key: ###########

ota:

#time:
#  - platform: homeassistant
#    id: my_time
#    timezone: Europe/Berlin

beethowen_receiver:
  dump: unmatched
  devices:
    - mac_address: "EC:DA:3B:3A:92:08"
      name_prefix: mySender
      dump: all

sensor:
  - platform: beethowen_receiver
    mac_address: "EC:DA:3B:3A:92:08"
    sensors:
      - measurement_type: voltage
        name: Battery voltage
        id: mySender_voltage
  - platform: template
    name: "mySender.battery_level"
    unit_of_measurement: '%'
    update_interval: 10s
    lambda: |-
      return (id(mySender_voltage).state);

Can someone explain me if I do it the wrong way maybe ? :)

Thank you for our help
Best regards

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions