esphome_component_bthome
esphome_component_bthome copied to clipboard
Get server found status to prevent deepsleep
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
Hello everyone, Anyone to help here ? Thank you Best regards
experience this issue also