Coder Social home page Coder Social logo

esphome-idasen-desk-controller's People

Contributors

angadsingh avatar bahlo avatar ihorsyerkov avatar j5lien avatar jab2870 avatar mathijsg avatar melkypie avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

esphome-idasen-desk-controller's Issues

Error reading char at handle 26, status=5

Hi, I'm having a weird problem, preventing me to use this at all. As far as I know, @sud33p has the same issue.

I wanted to set up an ESP32 with for my Idasen desk with this config:

esphome:
  name: idasen
  platform: ESP32
  board: esp32dev

# === DESK ===

external_components:
  - source: github://j5lien/[email protected]


esp32_ble_tracker:
ble_client:
  - mac_address: "CA:B3:52:CE:1E:70" # Replace with the desk bluetooth mac address
    id: idasen_desk

idasen_desk_controller:
    # Reference to the ble client component id
    # -----------
    # Required
  ble_client_id: idasen_desk
    # Fallback to use only up and down commands (less precise)
    # -----------
    # Optional
  only_up_down_command: false

cover:
  - platform: idasen_desk_controller
    name: "Desk"

However, I keep getting the same error:

[16:36:03][D][esp32_ble_tracker:214]: Starting scan...
[16:36:03][D][esp32_ble_tracker:720]: Found device DE:9E:9A:10:97:6B RSSI=-86
[16:36:03][D][esp32_ble_tracker:741]:   Address Type: RANDOM
[16:36:03][D][ble_client:047]: Found device at MAC address [CA:B3:52:CE:1E:70]
[16:36:03][I][ble_client:085]: Attempting BLE connection to ca:b3:52:ce:1e:70
[16:36:04][W][idasen_desk_controller:049]: [Desk] Disconnected!
[16:36:04][W][ble_client:117]: connect to ca:b3:52:ce:1e:70 failed, status=133

This error is repeating over and over again, until I press the pairing button on my desk. Then this happens:

[16:36:04][D][esp32_ble_tracker:214]: Starting scan...
[16:36:04][D][ble_client:047]: Found device at MAC address [CA:B3:52:CE:1E:70]
[16:36:04][I][ble_client:085]: Attempting BLE connection to ca:b3:52:ce:1e:70
[16:36:04][I][idasen_desk_controller:042]: [Desk] Connected successfully!
[16:36:05][I][ble_client:161]: Service UUID: 0x1800
[16:36:05][I][ble_client:162]:   start_handle: 0x1  end_handle: 0x9
[16:36:05][I][ble_client:341]:  characteristic 0x2A00, handle 0x3, properties 0xa
[16:36:05][I][ble_client:341]:  characteristic 0x2A01, handle 0x5, properties 0x2
[16:36:05][I][ble_client:341]:  characteristic 0x2A04, handle 0x7, properties 0x2
[16:36:05][I][ble_client:341]:  characteristic 0x2AA6, handle 0x9, properties 0x2
[16:36:05][I][ble_client:161]: Service UUID: 0x1801
[16:36:06][I][ble_client:162]:   start_handle: 0xa  end_handle: 0xd
[16:36:06][I][ble_client:341]:  characteristic 0x2A05, handle 0xc, properties 0x20
[16:36:06][I][ble_client:161]: Service UUID: 99FA0001-338A-1024-8A49-009C0215F78A
[16:36:06][I][ble_client:162]:   start_handle: 0xe  end_handle: 0x13
[16:36:06][I][ble_client:341]:  characteristic 99FA0002-338A-1024-8A49-009C0215F78A, handle 0x10, properties 0xc
[16:36:06][I][ble_client:341]:  characteristic 99FA0003-338A-1024-8A49-009C0215F78A, handle 0x12, properties 0x12
[16:36:06][I][ble_client:161]: Service UUID: 99FA0010-338A-1024-8A49-009C0215F78A
[16:36:06][I][ble_client:162]:   start_handle: 0x14  end_handle: 0x17
[16:36:06][I][ble_client:161]: Service UUID: 99FA0020-338A-1024-8A49-009C0215F78A
[16:36:06][I][ble_client:162]:   start_handle: 0x18  end_handle: 0x1f
[16:36:06][I][ble_client:341]:  characteristic 99FA0021-338A-1024-8A49-009C0215F78A, handle 0x1a, properties 0x12
[16:36:06][I][ble_client:341]:  characteristic 99FA0029-338A-1024-8A49-009C0215F78A, handle 0x1d, properties 0x2
[16:36:06][I][ble_client:341]:  characteristic 99FA002A-338A-1024-8A49-009C0215F78A, handle 0x1f, properties 0x2
[16:36:06][I][ble_client:161]: Service UUID: 99FA0030-338A-1024-8A49-009C0215F78A
[16:36:06][I][ble_client:162]:   start_handle: 0x20  end_handle: 0xffff
[16:36:06][I][ble_client:341]:  characteristic 99FA0031-338A-1024-8A49-009C0215F78A, handle 0x22, properties 0xc
[16:36:06][D][esp32_ble_tracker:214]: Starting scan...
[16:36:06][D][esp32_ble_tracker:720]: Found device CA:B3:52:CE:1E:70 RSSI=-56
[16:36:06][D][esp32_ble_tracker:741]:   Address Type: RANDOM
[16:36:06][D][esp32_ble_tracker:745]:   TX Power: 2
[16:36:06][D][esp32_ble_tracker:720]: Found device FE:96:45:99:85:E0 RSSI=-92
[16:36:06][D][esp32_ble_tracker:741]:   Address Type: RANDOM
[16:36:06][D][esp32_ble_tracker:743]:   Name: 'Charge 4'
[16:36:07][D][esp32_ble_tracker:720]: Found device 37:F7:7F:51:C3:81 RSSI=-50
[16:36:07][D][esp32_ble_tracker:741]:   Address Type: RANDOM
[16:36:10][D][esp32_ble_tracker:720]: Found device B4:E8:42:2D:D0:89 RSSI=-66
[16:36:10][D][esp32_ble_tracker:741]:   Address Type: PUBLIC
[16:36:10][D][esp32_ble_tracker:743]:   Name: 'LEDnetWF0100332DD088'
[16:36:11][W][idasen_desk_controller:104]: Error reading char at handle 26, status=5
[16:36:13][D][esp32_ble_tracker:720]: Found device DE:9E:9A:10:97:6B RSSI=-84
[16:36:13][D][esp32_ble_tracker:741]:   Address Type: RANDOM
[16:36:22][D][esp32_ble_tracker:720]: Found device 7E:C8:A9:90:13:FC RSSI=-82
[16:36:22][D][esp32_ble_tracker:741]:   Address Type: RANDOM
[16:36:25][D][esp32_ble_tracker:720]: Found device C4:80:7F:64:1D:5F RSSI=-90
[16:36:25][D][esp32_ble_tracker:741]:   Address Type: RANDOM
[16:36:36][W][idasen_desk_controller:049]: [Desk] Disconnected!

Looks promising at first, but then the error pops up, it disconnects again and the loop with the first log I showed continues.
Any idea what could be causing this?
If you need any more information, please let me know!
Thank you.

TypeError in sensor_schema reported as missing 1 required positional argument: 'device_class_'

When trying to define the ESP32 code, I am getting sensor definition issue. When running validation on the code, the issue is reported by problem with sensor.py file:
File "/config/esphome/custom_components/idasen_desk_controller/sensor.py", line 22, in <module> sensor.sensor_schema(UNIT_HEIGHT, ICON_HEIGHT, 0), TypeError: sensor_schema() missing 1 required positional argument: 'device_class_' Failed config

Is it possible, something has been changed in the definition of HA sensor itself, that causes the issue? I am on HA core-2021.3.4 and ESPHOME 1.16.2.

DPG1C woes: cannot move using Cover and wrong sensor height

I have a desk made with Linak actuators and a DPG1C32 controller, not from IKEA. The controller seems to be 99% compatible with what this project expects, except for a few quirks.

I actually found a workaround the moving issue by browsing some other threads, but I'm posting it here for future people with the same problem.

It seems that the Linak app sets something in the controller that makes it not work with this integration, I suspect it's the "allow desk to be moved automatically without holding a button" toggle in settings, but now that I have it working I don't want to break it to confirm the suspicion ๐Ÿ˜
In any case, factory resetting the DPG1C by holding the "star" button for 8 seconds allowed movement to work just fine! Seems that broke after a while.

This could probably be added to the README instructions as a possible troubleshooting step.

As for the wrong height, I seem to be in similar place as #61, they are dividing by a magic value to get close to the real height. It seems that the DPG1C registers contain something different than the expected by the lambda.

uint16_t raw_height = ((uint16_t)x[1] << 8) | x[0];

Height shown by the sensor seems to be slightly over 1/3 of the real one. Sadly this is not an easy order of magnitude or power of two explained by binary shift shenanigans. I will try to dump the registers and see if I can figure out the true height from whatever this thing has internally later.

I did a thing

At max height (133cm for my model):

x[0]:   01100100
x[1]:   00011001
Concat: 0001100101100100
Float: 6500.0
Cm: 65.0

At min height (68cm for my model)

x[0]:   00000000
x[1]:   00000000
Concat: 0000000000000000
Float: 0.0
Cm: 0.0

So yeah, on this model those two registers seems to contain a weird glorified percentage. True height must be stored somewhere else, or processed somehow before being shown in screen&app. ๐Ÿค”

I'm now converting that range that to the true values

    lambda: |-
      uint16_t raw_height = ((uint16_t)x[1] << 8) | x[0];

      float actual_height = 68.0 + (raw_height / 6500.0) * (133.0 - 68.0);

      ESP_LOGW("x[0]", "0x%X", x[0]);
      ESP_LOGW("x[1]", "0x%X", x[1]);
      ESP_LOGW("Height", "%f", actual_height);

      return actual_height;

EDIT: now it's back to not working no matter what I do for some reason ๐Ÿค”
EDIT2: back to working by pairing it briefly with the official app and back to the ESP. The official app seems to be doing something. Subsequent cold boots of the DPG1C seem to break the ability to control via ESPHome unless it talked to the app first.

Error when installing component.

Hi, Been using this for over a year now and wanted to reinstall it ontop a new ESP32 but i keep getting error when ESPhome tries to pull the installation.

Compiling /data/livingroom-esp32/.pioenvs/livingroom-esp32/src/esphome/components/sensor/filter.cpp.o
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp: In member function 'virtual void esphome::idasen_desk_controller::IdasenDeskControllerComponent::gattc_event_handler(esp_gattc_cb_event_t, esp_gatt_if_t, esp_ble_gattc_cb_param_t*)':
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:68:61: error: 'class esphome::ble_client::BLEClient' has no member named 'gattc_if'
           esp_ble_gattc_register_for_notify(this->parent()->gattc_if, this->parent()->remote_bda, this->output_handle_);
                                                             ^
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:68:87: error: 'class esphome::ble_client::BLEClient' has no member named 'remote_bda'
           esp_ble_gattc_register_for_notify(this->parent()->gattc_if, this->parent()->remote_bda, this->output_handle_);
                                                                                       ^
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:101:50: error: 'class esphome::ble_client::BLEClient' has no member named 'conn_id'
       if (param->read.conn_id != this->parent()->conn_id)
                                                  ^
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:115:52: error: 'class esphome::ble_client::BLEClient' has no member named 'conn_id'
       if (param->notify.conn_id != this->parent()->conn_id || param->notify.handle != this->output_handle_)
                                                    ^
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp: In member function 'void esphome::idasen_desk_controller::IdasenDeskControllerComponent::write_value_(uint16_t, short unsigned int)':
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:141:65: error: 'class esphome::ble_client::BLEClient' has no member named 'gattc_if'
   esp_err_t status = ::esp_ble_gattc_write_char(this->parent()->gattc_if, this->parent()->conn_id, handle, 2, data,
                                                                 ^
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:141:91: error: 'class esphome::ble_client::BLEClient' has no member named 'conn_id'
   esp_err_t status = ::esp_ble_gattc_write_char(this->parent()->gattc_if, this->parent()->conn_id, handle, 2, data,
                                                                                           ^
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp: In member function 'void esphome::idasen_desk_controller::IdasenDeskControllerComponent::read_value_(uint16_t)':
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:152:47: error: 'class esphome::ble_client::BLEClient' has no member named 'gattc_if'
       esp_ble_gattc_read_char(this->parent()->gattc_if, this->parent()->conn_id, handle, ESP_GATT_AUTH_REQ_NONE);
                                               ^
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:152:73: error: 'class esphome::ble_client::BLEClient' has no member named 'conn_id'
       esp_ble_gattc_read_char(this->parent()->gattc_if, this->parent()->conn_id, handle, ESP_GATT_AUTH_REQ_NONE);
                                                                         ^
*** [/data/livingroom-esp32/.pioenvs/livingroom-esp32/src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp.o] Error 1

updating firmware of the controller

I know that this repo is not the best place to find an answer for this but I wanted try my chance.
My DPG1C32 controller which normally has full features is modified with DPG1C02 firmware by linak as you can see from the below image.
image

Is there any way to reset this controller to its original firmware?

Down Button not working

First of all thanks for this awsome integration :) I have it integrated with home assistant and would have never gotten this to work on my own.
Mostly everything is working. I can set it to a height and then the desk is moving up and down. And if I manually use the up button it's also working. But the down button is not.
What can I do here? What information can i provide to help or where look myself?

unable to move after a while

I am using an Linak DPG1C Controller with my desk which worked fine at first. After some time the controls got unresponsive but all sensor values appeared correctly. If i move the desk manually, all values change.

These are my ESPHome Logs while trying to move the desk:

[11:35:52][D][idasen_desk_controller:217]: Update Desk - Move from 69 to 14
[11:35:53][D][idasen_desk_controller:217]: Update Desk - Move from 69 to 14
[11:35:53][D][idasen_desk_controller:217]: Update Desk - Move from 69 to 14

This happens until I stop pressing the button or move the desk by hand.

Is this a known issue? Could someone help me solving the problem?

Desk not moving / Disconnecting shortly after connection

Not sure if this the same issue as #25 or not but it looks the ESP32 connects briefly to the desk but drops connection soon after. While connected I am unable to move the desk.
Running controller v2.0.1 with ESPHome v1.19.4

Connection issue:

[08:41:05][D][esp32_ble_tracker:180]: Starting scan...
[08:41:05][D][ble_client:045]: Found device at MAC address [C3:E7:62:F2:33:E6]
[08:41:05][I][ble_client:083]: Attempting BLE connection to c3:e7:62:f2:33:e6
[08:41:06][I][idasen_desk_controller:042]: [Computer Desk] Connected successfully!
[08:41:06][D][binary_sensor:036]: 'Desk Connection': Sending state ON
[08:41:07][I][ble_client:159]: Service UUID: 0x1800
[08:41:07][I][ble_client:160]:   start_handle: 0x1  end_handle: 0x9
[08:41:07][I][ble_client:339]:  characteristic 0x2A00, handle 0x3, properties 0xa
[08:41:07][I][ble_client:339]:  characteristic 0x2A01, handle 0x5, properties 0x2
[08:41:07][I][ble_client:339]:  characteristic 0x2A04, handle 0x7, properties 0x2
[08:41:07][I][ble_client:339]:  characteristic 0x2AA6, handle 0x9, properties 0x2
[08:41:07][I][ble_client:159]: Service UUID: 0x1801
[08:41:07][I][ble_client:160]:   start_handle: 0xa  end_handle: 0xd
[08:41:07][I][ble_client:339]:  characteristic 0x2A05, handle 0xc, properties 0x20
[08:41:07][I][ble_client:159]: Service UUID: 99FA0001338A10-248A-4900-9C02-15F78A
[08:41:07][I][ble_client:160]:   start_handle: 0xe  end_handle: 0x13
[08:41:07][I][ble_client:339]:  characteristic 99FA0002338A10-248A-4900-9C02-15F78A, handle 0x10, properties 0xc
[08:41:07][I][ble_client:339]:  characteristic 99FA0003338A10-248A-4900-9C02-15F78A, handle 0x12, properties 0x12
[08:41:07][I][ble_client:159]: Service UUID: 99FA0010338A10-248A-4900-9C02-15F78A
[08:41:07][I][ble_client:160]:   start_handle: 0x14  end_handle: 0x17
[08:41:07][I][ble_client:339]:  characteristic 99FA0011338A10-248A-4900-9C02-15F78A, handle 0x16, properties 0x1e
[08:41:07][I][ble_client:159]: Service UUID: 99FA0020338A10-248A-4900-9C02-15F78A
[08:41:07][I][ble_client:160]:   start_handle: 0x18  end_handle: 0x1f
[08:41:07][I][ble_client:339]:  characteristic 99FA0021338A10-248A-4900-9C02-15F78A, handle 0x1a, properties 0x12
[08:41:07][I][ble_client:339]:  characteristic 99FA0029338A10-248A-4900-9C02-15F78A, handle 0x1d, properties 0x2
[08:41:07][I][ble_client:339]:  characteristic 99FA002A338A10-248A-4900-9C02-15F78A, handle 0x1f, properties 0x2
[08:41:07][I][ble_client:159]: Service UUID: 99FA0030338A10-248A-4900-9C02-15F78A
[08:41:07][I][ble_client:160]:   start_handle: 0x20  end_handle: 0xffff
[08:41:07][I][ble_client:339]:  characteristic 99FA0031338A10-248A-4900-9C02-15F78A, handle 0x22, properties 0xc
[08:41:07][D][esp32_ble_tracker:180]: Starting scan...
[08:41:08][D][esp32_ble_tracker:620]: Found device 52:60:99:8F:8C:A1 RSSI=-69
[08:41:08][D][esp32_ble_tracker:641]:   Address Type: RANDOM
[08:41:08][D][esp32_ble_tracker:620]: Found device C3:E7:62:F2:33:E6 RSSI=-49
[08:41:08][D][esp32_ble_tracker:641]:   Address Type: RANDOM
[08:41:08][D][esp32_ble_tracker:645]:   TX Power: 2
[08:41:09][D][esp32_ble_tracker:620]: Found device E7:E7:F2:2E:42:DC RSSI=-75
[08:41:09][D][esp32_ble_tracker:641]:   Address Type: RANDOM
[08:41:09][D][esp32_ble_tracker:643]:   Name: '5852A70F0B4633A3E9'
[08:41:09][D][esp32_ble_tracker:645]:   TX Power: 2
[08:41:10][D][esp32_ble_tracker:620]: Found device 49:56:41:DB:0A:24 RSSI=-86
[08:41:10][D][esp32_ble_tracker:641]:   Address Type: RANDOM
[08:41:10][D][esp32_ble_tracker:645]:   TX Power: 2
[08:41:10][D][esp32_ble_tracker:620]: Found device 52:F5:96:20:25:CD RSSI=-67
[08:41:10][D][esp32_ble_tracker:641]:   Address Type: RANDOM
[08:41:10][D][esp32_ble_tracker:620]: Found device 04:FC:5A:D6:AA:9A RSSI=-46
[08:41:10][D][esp32_ble_tracker:641]:   Address Type: RANDOM
[08:41:12][D][esp32_ble_tracker:620]: Found device C0:28:8D:F2:69:39 RSSI=-83
[08:41:12][D][esp32_ble_tracker:641]:   Address Type: PUBLIC
[08:41:12][W][idasen_desk_controller:104]: Error reading char at handle 26, status=5
[08:41:15][D][esp32_ble_tracker:620]: Found device 5B:F9:28:B1:A3:37 RSSI=-85
[08:41:15][D][esp32_ble_tracker:641]:   Address Type: RANDOM
[08:41:15][D][esp32_ble_tracker:620]: Found device 74:AC:B9:5C:E0:93 RSSI=-81
[08:41:15][D][esp32_ble_tracker:641]:   Address Type: PUBLIC
[08:41:31][D][esp32_ble_tracker:620]: Found device 09:10:78:F7:25:9B RSSI=-45
[08:41:31][D][esp32_ble_tracker:641]:   Address Type: RANDOM
[08:41:38][W][idasen_desk_controller:049]: [Computer Desk] Disconnected!
[08:41:38][D][binary_sensor:036]: 'Desk Connection': Sending state OFF

Moving issue:

[08:42:17][D][ble_client:045]: Found device at MAC address [C3:E7:62:F2:33:E6]
[08:42:17][I][ble_client:083]: Attempting BLE connection to c3:e7:62:f2:33:e6
[08:42:17][I][idasen_desk_controller:042]: [Computer Desk] Connected successfully!
[08:42:17][D][binary_sensor:036]: 'Desk Connection': Sending state ON
[08:42:19][I][ble_client:159]: Service UUID: 0x1800
[08:42:19][I][ble_client:160]:   start_handle: 0x1  end_handle: 0x9
[08:42:19][I][ble_client:339]:  characteristic 0x2A00, handle 0x3, properties 0xa
[08:42:19][I][ble_client:339]:  characteristic 0x2A01, handle 0x5, properties 0x2
[08:42:19][I][ble_client:339]:  characteristic 0x2A04, handle 0x7, properties 0x2
[08:42:19][I][ble_client:339]:  characteristic 0x2AA6, handle 0x9, properties 0x2
[08:42:19][I][ble_client:159]: Service UUID: 0x1801
[08:42:19][I][ble_client:160]:   start_handle: 0xa  end_handle: 0xd
[08:42:19][I][ble_client:339]:  characteristic 0x2A05, handle 0xc, properties 0x20
[08:42:19][I][ble_client:159]: Service UUID: 99FA0001338A10-248A-4900-9C02-15F78A
[08:42:19][I][ble_client:160]:   start_handle: 0xe  end_handle: 0x13
[08:42:19][I][ble_client:339]:  characteristic 99FA0002338A10-248A-4900-9C02-15F78A, handle 0x10, properties 0xc
[08:42:19][I][ble_client:339]:  characteristic 99FA0003338A10-248A-4900-9C02-15F78A, handle 0x12, properties 0x12
[08:42:19][I][ble_client:159]: Service UUID: 99FA0010338A10-248A-4900-9C02-15F78A
[08:42:19][I][ble_client:160]:   start_handle: 0x14  end_handle: 0x17
[08:42:19][I][ble_client:339]:  characteristic 99FA0011338A10-248A-4900-9C02-15F78A, handle 0x16, properties 0x1e
[08:42:19][I][ble_client:159]: Service UUID: 99FA0020338A10-248A-4900-9C02-15F78A
[08:42:19][I][ble_client:160]:   start_handle: 0x18  end_handle: 0x1f
[08:42:19][I][ble_client:339]:  characteristic 99FA0021338A10-248A-4900-9C02-15F78A, handle 0x1a, properties 0x12
[08:42:19][I][ble_client:339]:  characteristic 99FA0029338A10-248A-4900-9C02-15F78A, handle 0x1d, properties 0x2
[08:42:19][I][ble_client:339]:  characteristic 99FA002A338A10-248A-4900-9C02-15F78A, handle 0x1f, properties 0x2
[08:42:19][I][ble_client:159]: Service UUID: 99FA0030338A10-248A-4900-9C02-15F78A
[08:42:19][I][ble_client:160]:   start_handle: 0x20  end_handle: 0xffff
[08:42:19][I][ble_client:339]:  characteristic 99FA0031338A10-248A-4900-9C02-15F78A, handle 0x22, properties 0xc
[08:42:19][D][esp32_ble_tracker:180]: Starting scan...
[08:42:19][D][esp32_ble_tracker:620]: Found device 09:10:78:F7:25:9B RSSI=-51
[08:42:19][D][esp32_ble_tracker:641]:   Address Type: RANDOM
[08:42:19][D][esp32_ble_tracker:620]: Found device C3:E7:62:F2:33:E6 RSSI=-55
[08:42:19][D][esp32_ble_tracker:641]:   Address Type: RANDOM
[08:42:19][D][esp32_ble_tracker:645]:   TX Power: 2
[08:42:20][D][esp32_ble_tracker:620]: Found device 5F:B2:8E:B1:54:1F RSSI=-76
[08:42:20][D][esp32_ble_tracker:641]:   Address Type: RANDOM
[08:42:20][D][esp32_ble_tracker:620]: Found device 74:AC:B9:5C:E0:93 RSSI=-74
[08:42:20][D][esp32_ble_tracker:641]:   Address Type: PUBLIC
[08:42:21][D][esp32_ble_tracker:620]: Found device 5B:F9:28:B1:A3:37 RSSI=-81
[08:42:21][D][esp32_ble_tracker:641]:   Address Type: RANDOM
[08:42:21][D][esp32_ble_tracker:620]: Found device 52:60:99:8F:8C:A1 RSSI=-61
[08:42:21][D][esp32_ble_tracker:641]:   Address Type: RANDOM
[08:42:21][D][esp32_ble_tracker:620]: Found device E7:E7:F2:2E:42:DC RSSI=-74
[08:42:21][D][esp32_ble_tracker:641]:   Address Type: RANDOM
[08:42:21][D][esp32_ble_tracker:643]:   Name: '5852A70F0B4633A3E9'
[08:42:21][D][esp32_ble_tracker:645]:   TX Power: 2
[08:42:23][D][cover:072]: 'Computer Desk' - Setting
[08:42:23][D][cover:080]:   Position: 0%
[08:42:23][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 0
[08:42:24][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 0
[08:42:24][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 0
[08:42:24][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 0
[08:42:24][W][idasen_desk_controller:104]: Error reading char at handle 26, status=5
[08:42:24][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 0
[08:42:24][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 0
[08:42:25][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 0
[08:42:25][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 0
[08:42:25][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 0
[08:42:25][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 0
[08:42:25][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 0
[08:42:26][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 0
[08:42:26][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 0
[08:42:26][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 0
[08:42:26][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 0
[08:42:26][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 0
[08:42:27][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 0
[08:42:27][D][cover:072]: 'Computer Desk' - Setting
[08:42:27][D][cover:076]:   Command: STOP
[08:42:27][D][idasen_desk_controller:248]: Cover control - STOP
[08:42:27][D][cover:072]: 'Computer Desk' - Setting
[08:42:27][D][cover:080]:   Position: 72%
[08:42:27][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 72
[08:42:27][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 72
[08:42:28][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 72
[08:42:28][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 72
[08:42:28][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 72
[08:42:28][D][cover:072]: 'Computer Desk' - Setting
[08:42:28][D][cover:076]:   Command: STOP
[08:42:28][D][idasen_desk_controller:248]: Cover control - STOP
[08:42:50][W][idasen_desk_controller:049]: [Computer Desk] Disconnected!
[08:42:50][D][binary_sensor:036]: 'Desk Connection': Sending state OFF

I can't reconnect the desk without putting it back into pairing mode.

Height is received only at startup

I had this issue where after using the animated graphic card, the buttons would not work. I lost my patience and I stopped using it. Today I flashed the microcontroller again using the same code and I noticed the height measurements are no longer working. This is also the reason the hardware button stopped after using the animated card because it would continuously send commands without ever reaching the set height.

Last time I check, it was identical to the one posted here

substitutions:
  devicename: smart-desk
  friendly_name: Smart Desk

esphome:
  name: $devicename
  comment: controls the height of the desk over bluetooth

esp32:
  board: esp32dev
  framework:
    type: arduino

# Enable logging
logger:

# Enable Home Assistant API
api:

ota:
  password: "3e3a4320572fa2f86190f00b072843a1"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  fast_connect: true
  #power_save_mode: none

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Smart-Desk Fallback Hotspot"
    password: "XDBOHjorEm4J"

captive_portal:

text_sensor:
  - platform: wifi_info
    ip_address:
      name: $friendly_name IP Address
    mac_address:
      name: $friendly_name Mac Address
  

external_components:
  #- source: github://j5lien/[email protected]
  #- source: github://j5lien/esphome-idasen-desk-controller@pull/51/head
  - source: github://j5lien/[email protected]
    
esp32_ble_tracker:


idasen_desk_controller:
    # Reference to the ble client component id
    # -----------
    # Required
    ble_client_id: idasen_desk
    # Fallback to use only up and down commands (less precise)
    # -----------
    # Optional
    only_up_down_command: false
    
cover:
  - platform: idasen_desk_controller
    name: "Desk"


globals:
  # To store the Desk Connection Status
  - id: ble_client_connected
    type: bool
    initial_value: 'false'



ble_client:
  - mac_address: !secret desk_ble_mac
    id: idasen_desk
    on_connect:
      then:
        # Update the Desk Connection Status
        - lambda: |-
            id(ble_client_connected) = true;
        - delay: 5s
        # Update desk height and speed sensors after bluetooth is connected
        - lambda: |-
            id(desk_height).update();
    on_disconnect:
      then:
        # Update the Desk Connection Status
        - lambda: |-
            id(ble_client_connected) = false;
sensor:

  # LAN Connection
  - platform: wifi_signal
    name: $friendly_name WiFi Signal
    update_interval: 30s
  - platform: uptime
    name: $friendly_name Uptime

  # Desk Height Sensor
  - platform: ble_client
    type: characteristic
    ble_client_id: idasen_desk
    id: desk_height
    name: 'Desk Height'
    service_uuid: '99fa0020-338a-1024-8a49-009c0215f78a'
    characteristic_uuid: '99fa0021-338a-1024-8a49-009c0215f78a'
    icon: 'mdi:arrow-up-down'
    unit_of_measurement: 'cm'
    accuracy_decimals: 1
    update_interval: never
    notify: true
    lambda: |-
      uint16_t raw_height = ((uint16_t)x[1] << 8) | x[0];
      unsigned short height_mm = raw_height / 10;

      return (float) height_mm / 10;

  # # Desk Speed Sensor
  # - platform: ble_client
  #   type: characteristic
  #   ble_client_id: idasen_desk
  #   id: desk_speed
  #   name: 'Desk Speed'
  #   service_uuid: '99fa0020-338a-1024-8a49-009c0215f78a'
  #   characteristic_uuid: '99fa0021-338a-1024-8a49-009c0215f78a'
  #   icon: 'mdi:speedometer'
  #   unit_of_measurement: 'cm/min' # I'm not sure this unit is correct
  #   accuracy_decimals: 0
  #   update_interval: never
  #   notify: true
  #   lambda: |-
  #     uint16_t raw_speed = ((uint16_t)x[3] << 8) | x[2];
  #     return raw_speed / 100;

binary_sensor:
  # Desk Bluetooth Connection Status
  - platform: template
    name: 'Desk Connection'
    id: desk_connection
    lambda: 'return id(ble_client_connected);'

  # # Desk Moving Status
  # - platform: template
  #   name: 'Desk Moving'
  #   id: desk_moving
  #   lambda: 'return id(desk_speed).state > 0;'
    
  # Device status entity in HomeAssistant.
  - platform: status
    name: ${friendly_name} Status

#restart device
switch:
  - platform: restart
    name: $friendly_name Restart

Crash after initial connection

Hi all,
I'm running into this issue with my ESP32 controlling my desk. The setup is a AZDelivery NodeMCU. I tried playing with build flags etc to resolve the issue but this keeps on happening. Any idea what may cause this behavior?

Cheers,
Tim

[10:53:55][C][idasen_desk_controller:053]: BLE Device found: Name: Tim Desk, Address: e9:43:60:ec:XX:XX, txPower: -8
[10:53:55][C][idasen_desk_controller:122]: Connecting client to device e9:43:60:ec:XX:XX
[10:53:57][C][idasen_desk_controller:126]: Fail to connect to client
[10:53:59][C][idasen_desk_controller:122]: Connecting client to device e9:43:60:ec:XX:XX
[10:53:59][D][binary_sensor:036]: 'Office ESP Desk Desk Connection': Sending state ON
[10:53:59][C][idasen_desk_controller:132]: Retrieve input remote characteristic.
[10:54:01][E][BLERemoteCharacteristic.cpp:274] retrieveDescriptors(): esp_ble_gattc_get_all_descr: Unknown
[10:54:01][E][BLERemoteCharacteristic.cpp:274] retrieveDescriptors(): esp_ble_gattc_get_all_descr: Unknown
[10:54:01][E][BLERemoteCharacteristic.cpp:274] retrieveDescriptors(): esp_ble_gattc_get_all_descr: Unknown
[10:54:01][E][BLERemoteCharacteristic.cpp:274] retrieveDescriptors(): esp_ble_gattc_get_all_descr: Unknown
[10:54:01][C][idasen_desk_controller:137]: Retrieve output remote characteristic.
[10:54:01][E][BLERemoteCharacteristic.cpp:274] retrieveDescriptors(): esp_ble_gattc_get_all_descr: Unknown
[10:54:01][E][BLERemoteService.cpp:185] retrieveCharacteristics(): esp_ble_gattc_get_all_char: Unknown
[10:54:01][C][idasen_desk_controller:142]: Register notification callback on output characteristic.
[10:54:01][C][idasen_desk_controller:148]Guru Meditation Error: Core  0 panic'ed (InstrFetchProhibited). Exception was unhandled.
[10:54:01]Core 0 register dump:
[10:54:01]PC      : 0x801979c0  PS      : 0x00060930  A0      : 0x801738b2  A1      : 0x3ffec440
[10:54:01]A2      : 0x3ffec4a4  A3      : 0x3fff411c  A4      : 0x00060320  A5      : 0x00000000
[10:54:01]A6      : 0x00000001  A7      : 0x00000026  A8      : 0x801a32df  A9      : 0x3ffec3f0
[10:54:01]A10     : 0x3fff411c  A11     : 0x00000270  A12     : 0x00000000  A13     : 0x3fff4140
[10:54:01]A14     : 0x3fff40cc  A15     : 0x00000009  SAR     : 0x00000010  EXCCAUSE: 0x00000014
[10:54:01]EXCVADDR: 0x801979c0  LBEG    : 0x4000c28c  LEND    : 0x4000c296  LCOUNT  : 0x00000000
[10:54:01]
[10:54:01]Backtrace: 0x401979c0:0x3ffec440 0x401738af:0x3ffec460 0x40179a2f:0x3ffec480 0x401784e6:0x3ffec4a0 0x40198c05:0x3ffec4c0 0x4019620e:0x3ffec750 0x401979bd:0x3ffec770 0x40198c17:0x3ffeca00 0x4019620e:0x3ffecc90 0x401979bd:0x3ffeccb0 0x40198c17:0x3ffecf40 0x4019620e:0x3ffed1d0 0x401979bd:0x3ffed1f0 0x40198c17:0x3ffed480 0x4019620e:0x3ffed710 0x401979bd:0x3ffed730 0x40198f4b:0x3ffed9c0 0x40199133:0x3ffedc50 0x4019620e:0x3ffedc70 0x4019634d:0x3ffedc90 0x4019e92a:0x3ffedcb0 0x4017378a:0x3ffedcd0 0x4008e8c5:0x3ffedd00
WARNING Found stack trace! Trying to decode it
WARNING Decoded 0x401979c0: bta_gattc_pop_command_to_send at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/bt/bluedroid/bta/gatt/bta_gattc_act.c:1519
WARNING Decoded 0x401738af: btu_free_timer at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/bt/bluedroid/stack/btu/btu_task.c:504
WARNING Decoded 0x40179a2f: gatt_clcb_dealloc at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/bt/bluedroid/stack/gatt/gatt_utils.c:1761
WARNING Decoded 0x401784e6: GATTC_Write at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/bt/bluedroid/stack/gatt/gatt_api.c:1040
WARNING Decoded 0x40198c05: bta_gattc_write at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/bt/bluedroid/bta/gatt/bta_gattc_act.c:1163
WARNING Decoded 0x4019620e: bta_gattc_sm_execute at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/bt/bluedroid/bta/gatt/bta_gattc_main.c:288
WARNING Decoded 0x401979bd: bta_gattc_pop_command_to_send at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/bt/bluedroid/bta/gatt/bta_gattc_act.c:1519
WARNING Decoded 0x40198c17: bta_gattc_write at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/bt/bluedroid/bta/gatt/bta_gattc_act.c:1170
WARNING Decoded 0x4019620e: bta_gattc_sm_execute at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/bt/bluedroid/bta/gatt/bta_gattc_main.c:288
WARNING Decoded 0x401979bd: bta_gattc_pop_command_to_send at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/bt/bluedroid/bta/gatt/bta_gattc_act.c:1519
WARNING Decoded 0x40198c17: bta_gattc_write at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/bt/bluedroid/bta/gatt/bta_gattc_act.c:1170
WARNING Decoded 0x4019620e: bta_gattc_sm_execute at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/bt/bluedroid/bta/gatt/bta_gattc_main.c:288
WARNING Decoded 0x401979bd: bta_gattc_pop_command_to_send at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/bt/bluedroid/bta/gatt/bta_gattc_act.c:1519
WARNING Decoded 0x40198c17: bta_gattc_write at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/bt/bluedroid/bta/gatt/bta_gattc_act.c:1170
WARNING Decoded 0x4019620e: bta_gattc_sm_execute at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/bt/bluedroid/bta/gatt/bta_gattc_main.c:288
WARNING Decoded 0x401979bd: bta_gattc_pop_command_to_send at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/bt/bluedroid/bta/gatt/bta_gattc_act.c:1519
WARNING Decoded 0x40198f4b: bta_gattc_write_cmpl at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/bt/bluedroid/bta/gatt/bta_gattc_act.c:1302
WARNING Decoded 0x40199133: bta_gattc_op_cmpl at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/bt/bluedroid/bta/gatt/bta_gattc_act.c:1423
WARNING Decoded 0x4019620e: bta_gattc_sm_execute at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/bt/bluedroid/bta/gatt/bta_gattc_main.c:288
WARNING Decoded 0x4019634d: bta_gattc_hdl_event at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/bt/bluedroid/bta/gatt/bta_gattc_main.c:397
WARNING Decoded 0x4019e92a: bta_sys_event at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/bt/bluedroid/bta/sys/bta_sys_main.c:496
WARNING Decoded 0x4017378a: btu_task_thread_handler at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/bt/bluedroid/stack/btu/btu_task.c:233
WARNING Decoded 0x4008e8c5: vPortTaskWrapper at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/freertos/port.c:355 (discriminator 1)

Integration 'idasen_desk_controller' not found.

Once I add platform: idasen_desk_controller in the cover section of configuration.yaml I get the error message โ€žPlatform error cover.idasen_desk_controller - Integration 'idasen_desk_controller' not found.โ€œ When checking the configuration.

Is there anything I missed out on?

Endless loop when calling cover.control in ESPHome or stopping the desk manually

To move the desk with millimeter precision, I created a service, since moving the cover with float values doesn't seem to work with Home Assistant directly.

api:
  password: XXX
  services:
    - service: move_to_position
      variables:
        position: float
      then:
        - cover.control:
            id: idasen_desk
            position: !lambda 'return position/100;'

Often when moving the desk only a small amount it moves to the target position and then keeps trying to move the desk in an endless loop. The same happens when the desk is already at the target position and also if the desk is stopped manually with the old "dumb" control switch while moving.

I think the easiest solution here would be to break the loop if the speed is 0 twice in a row.

Log:

[10:28:02][D][cover:072]: 'AZ Desk Nico' - Setting
[10:28:02][D][cover:080]:   Position: 22%
[10:28:02][D][idasen_desk_controller:199]: Desk bluetooth data: height 14.3 - speed 0.0
[10:28:02][D][idasen_desk_controller:289]: Cover control - START - position 0.2 - target 14.6 - current 14.3
[10:28:02][D][idasen_desk_controller:199]: Desk bluetooth data: height 14.3 - speed 0.0
[10:28:02][D][idasen_desk_controller:274]: Update Desk - Move from 14.3 to 14.6
[10:28:02][D][cover:152]: 'AZ Desk Nico' - Publishing:
[10:28:02][D][cover:155]:   Position: 22%
[10:28:02][D][cover:168]:   Current Operation: OPENING
[10:28:03][D][idasen_desk_controller:199]: Desk bluetooth data: height 14.3 - speed 0.0
[10:28:03][D][idasen_desk_controller:274]: Update Desk - Move from 14.3 to 14.6
[10:28:03][D][idasen_desk_controller:199]: Desk bluetooth data: height 14.3 - speed 12.0
[10:28:03][D][binary_sensor:036]: 'AZ Desk Nico Moving': Sending state ON
[10:28:03][D][idasen_desk_controller:274]: Update Desk - Move from 14.3 to 14.6
[10:28:03][D][idasen_desk_controller:199]: Desk bluetooth data: height 14.6 - speed 0.0
[10:28:03][D][sensor:092]: 'AZ Desk Nico Height': Sending state 76.60000 cm with 1 decimals of accuracy
[10:28:03][D][binary_sensor:036]: 'AZ Desk Nico Moving': Sending state OFF
[10:28:03][D][idasen_desk_controller:274]: Update Desk - Move from 14.6 to 14.6
[10:28:03][D][idasen_desk_controller:199]: Desk bluetooth data: height 14.6 - speed 0.0
[10:28:03][D][idasen_desk_controller:274]: Update Desk - Move from 14.6 to 14.6
[10:28:03][D][idasen_desk_controller:199]: Desk bluetooth data: height 14.6 - speed 0.0
[10:28:03][D][idasen_desk_controller:274]: Update Desk - Move from 14.6 to 14.6
[10:28:04][D][idasen_desk_controller:199]: Desk bluetooth data: height 14.6 - speed 0.0
[10:28:04][D][idasen_desk_controller:274]: Update Desk - Move from 14.6 to 14.6
[10:28:04][D][idasen_desk_controller:199]: Desk bluetooth data: height 14.6 - speed 0.0
[10:28:04][D][idasen_desk_controller:274]: Update Desk - Move from 14.6 to 14.6
[10:28:04][D][idasen_desk_controller:199]: Desk bluetooth data: height 14.6 - speed 0.0
[10:28:04][D][idasen_desk_controller:274]: Update Desk - Move from 14.6 to 14.6
........

Are you open to being sponsord?

Hey Julien,
a friend & me have desks that could be compatible to your ESP-Home-Component, but it doesn't work reliably.
Would you be willing to work on this for a bit of money? :)

Our controllers are probably called dpg1m30.

v1.2.3 - Platform not found 'sensor.idasen_desk_controller'

I am using the following config:

esphome:
  name: h-office-esphome-23dd9c
  platform: esp32
  board: esp32dev # Replace with your board
  # Starting with ESPHome 2021.10, libraries need to be included manually
  libraries:
    - "ESP32 BLE Arduino"

# Enable logging
logger:

# Enable Home Assistant API
api:

ota:

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "h-office-esphome-23dd9c"
    password: !secret captive_wifi_password

captive_portal:

# BEGIN BLUETOOTH DISCOVERY INTEGRATION
esp32_ble_tracker:
# END BLUETOOTH DISCOVERY INTEGRATION

# BEGIN IDASEN DESK CONTROLLER INTEGRATION
# https://github.com/j5lien/esphome-idasen-desk-controller/tree/v1.2.3
external_components:
  - source: github://j5lien/[email protected]

idasen_desk_controller:
    # Desk controller bluetooth mac address
    # -----------
    # Required
    mac_address: "REDACTED"
    # Use bluetooth callback to update sensors and cover entities
    # Deactivate this option when data are not correctly updated when using the cover entity
    # -----------
    # Optionnal (default true)
    bluetooth_callback: false

cover:
  - platform: idasen_desk_controller
    name: "H Office Desk"

#sensor:
#  - platform: idasen_desk_controller
#    desk_height:
#      # Height in cm
#      name: "H Office Desk Height"
#      # Millimeter precision
#      accuracy_decimals: 1

binary_sensor:
  # Desk bluetooth connection
  - platform: idasen_desk_controller
    name: "H Office Desk Connection"
    type: CONNECTION
  # Desk moving status
  - platform: idasen_desk_controller
    name: "H Office Desk Moving"
    type: MOVING
# END IDASEN DESK CONTROLLER INTEGRATION

It works as expected however as soon as I comment in the sensor I get an error saying that the sensor.idasen_desk_controller isn't found. Any idea what's going on?

If I try to compile I get:

INFO Reading configuration /config/esphome/h-office-esphome-23dd9c.yaml...
ERROR Unable to load component idasen_desk_controller.sensor:
Traceback (most recent call last):
  File "/esphome/esphome/loader.py", line 162, in _lookup_module
    module = importlib.import_module(f"esphome.components.{domain}")
  File "/usr/lib/python3.9/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 790, in exec_module
  File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
  File "/config/esphome/.esphome/external_components/c787d8e2/components/idasen_desk_controller/sensor.py", line 20, in <module>
    sensor.sensor_schema(UNIT_HEIGHT, ICON_HEIGHT, 0),
TypeError: sensor_schema() takes from 0 to 1 positional arguments but 3 were given
Failed config

sensor.idasen_desk_controller: [source /config/esphome/h-office-esphome-23dd9c.yaml:53]
  
  Platform not found: 'sensor.idasen_desk_controller'.
  platform: idasen_desk_controller
  desk_height: 
    name: H Office Desk Height
    accuracy_decimals: 1

base hight?

Hi,

I'm using the desk control, and see that the max height is 127cm, and that is correct. Going down, it goes to 0. I think you should it is from 62-127 cm. How can I set this, so I see the correct hight? I should suspect a base hight parameter.

1.2.2 Dependency problem - BLEDevice.h

Hey, are all dependencies included in the last release? I am not able to compile the application.
I am using esphome integration in hassio.

Error:

INFO Reading configuration /config/esphome/desk.yaml...
INFO Generating C++ source...
INFO Compiling app...
Processing desk (board: esp32dev; framework: arduino; platform: platformio/espressif32 @ 3.3.2)
--------------------------------------------------------------------------------
HARDWARE: ESP32 240MHz, 320KB RAM, 4MB Flash
Dependency Graph
|-- <AsyncTCP-esphome> 1.2.2
|-- <WiFi> 1.0
|-- <FS> 1.0
|-- <Update> 1.0
|-- <ESPAsyncWebServer-esphome> 2.1.0
|   |-- <AsyncTCP-esphome> 1.2.2
|-- <DNSServer> 1.1.0
|-- <ESPmDNS> 1.0
Compiling /data/desk/.pioenvs/desk/src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp.o
In file included from src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:1:0:
src/esphome/components/idasen_desk_controller/idasen_desk_controller.h:7:23: fatal error: BLEDevice.h: No such file or directory

*******************************************************************
* Looking for BLEDevice.h dependency? Check our library registry!
*
* CLI  > platformio lib search "header:BLEDevice.h"
* Web  > https://platformio.org/lib/search?query=header:BLEDevice.h
*
*******************************************************************

compilation terminated.
*** [/data/desk/.pioenvs/desk/src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp.o] Error 1
========================== [FAILED] Took 2.66 seconds ==========================

my config:

esphome:
  name: desk
  platform: ESP32
  board: esp32dev

# Enable logging
logger:

# Enable Home Assistant API
api:

ota:
  password: ""

wifi:
  ssid: ""
  password: ""

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Desk Fallback Hotspot"
    password: ""

captive_portal:

external_components:
  - source: github://j5lien/[email protected]
      
idasen_desk_controller:
    # Desk controller bluetooth mac address
    # -----------
    # Required
    mac_address: "C8:2C:49:BC:C0:57"
    # Use bluetooth callback to update sensors and cover entities
    # Deactivate this option when data are not correctly updated when using the cover entity
    # -----------
    # Optionnal (default true)
    bluetooth_callback: false

cover:
  - platform: idasen_desk_controller
    name: "Desk"

ESP32 keeps connecting and disconnecting

Problem: ESP32 connects and disconnects to the IDASEN ikea desk.
System using: ESPhome on desktop which connects to the ESPhome dashboard
Script used:

    esphome:
      name: desk
      platform: ESP32
      board: nodemcu-32s

    esp32_ble_tracker:
    
    globals:
      # To store the Desk Connection Status
      - id: ble_client_connected
        type: bool
        initial_value: 'false'
    
    ble_client:
      - mac_address: "EE:04:05:A7:F4:2D"
        id: idasen_desk
        on_connect:
          then:
            # Update the Desk Connection Status
            - lambda: |-
                id(ble_client_connected) = true;
            - delay: 5s
            # Update desk height and speed sensors after bluetooth is connected
            - lambda: |-
                id(desk_height).update();
                id(desk_speed).update();
        on_disconnect:
          then:
            # Update the Desk Connection Status
            - lambda: |-
                id(ble_client_connected) = false;
    
    sensor:
      # Desk Height Sensor
      - platform: ble_client
        ble_client_id: idasen_desk
        id: desk_height
        name: 'Desk Height'
        service_uuid: '99fa0020-338a-1024-8a49-009c0215f78a'
        characteristic_uuid: '99fa0021-338a-1024-8a49-009c0215f78a'
        icon: 'mdi:arrow-up-down'
        unit_of_measurement: 'cm'
        accuracy_decimals: 1
        update_interval: never
        notify: true
        lambda: |-
          uint16_t raw_height = ((uint16_t)x[1] << 8) | x[0];
          unsigned short height_mm = raw_height / 10;
    
          return (float) height_mm / 10;
    
      # Desk Speed Sensor
      - platform: ble_client
        ble_client_id: idasen_desk
        id: desk_speed
        name: 'Desk Speed'
        service_uuid: '99fa0020-338a-1024-8a49-009c0215f78a'
        characteristic_uuid: '99fa0021-338a-1024-8a49-009c0215f78a'
        icon: 'mdi:speedometer'
        unit_of_measurement: 'cm/min' # I'm not sure this unit is correct
        accuracy_decimals: 0
        update_interval: never
        notify: true
        lambda: |-
          uint16_t raw_speed = ((uint16_t)x[3] << 8) | x[2];
          return raw_speed / 100;
    
    binary_sensor:
      # Desk Bluetooth Connection Status
      - platform: template
        name: 'Desk Connection'
        id: desk_connection
        lambda: 'return id(ble_client_connected);'
    
      # Desk Moving Status
      - platform: template
        name: 'Desk Moving'
        id: desk_moving
        lambda: 'return id(desk_speed).state > 0;'
    
    # Enable logging
    logger:
    
    # Enable Home Assistant API
    api:
      password: "Desk1995!~"
    
    ota:
      password: "Desk1995!~"
    
    wifi:
      ssid: "NotSoSecretSID"
      password: "secret"
    
      # Enable fallback hotspot (captive portal) in case wifi connection fails
      ap:
    
    captive_portal:

Error:

[16:43:51][D][esp32_ble_tracker:214]: Starting scan...
[16:43:51][D][esp32_ble_tracker:719]: Found device EE:C1:E5:CA:80:E5 RSSI=-87
[16:43:51][D][esp32_ble_tracker:740]:   Address Type: RANDOM
[16:43:51][D][esp32_ble_tracker:742]:   Name: 'Amazfit Bip Watch'
[16:43:51][D][esp32_ble_tracker:719]: Found device 71:E2:4B:5F:AA:32 RSSI=-63
[16:43:51][D][esp32_ble_tracker:740]:   Address Type: RANDOM
[16:43:52][D][ble_client:047]: Found device at MAC address [EE:04:05:A7:F4:2D]
[16:43:52][I][ble_client:085]: Attempting BLE connection to ee:04:05:a7:f4:2d
[16:43:53]lld_pdu_get_tx_flush_nb HCI packet count mismatch (0, 1)
[16:43:53][W][ble_sensor:039]: [Desk Height] Disconnected!
[16:43:53][D][sensor:113]: 'Desk Height': Sending state nan cm with 1 decimals of accuracy
[16:43:53][W][ble_sensor:039]: [Desk Speed] Disconnected!
[16:43:53][D][sensor:113]: 'Desk Speed': Sending state nan cm/min with 0 decimals of accuracy
[16:43:53][W][ble_client:117]: connect to ee:04:05:a7:f4:2d failed, status=133
[16:43:53][D][esp32_ble_tracker:214]: Starting scan...
[16:43:53][D][ble_client:047]: Found device at MAC address [EE:04:05:A7:F4:2D]
[16:43:53][I][ble_client:085]: Attempting BLE connection to ee:04:05:a7:f4:2d
[16:43:53]lld_pdu_get_tx_flush_nb HCI packet count mismatch (0, 1)
[16:43:53][W][ble_sensor:039]: [Desk Height] Disconnected!
[16:43:53][D][sensor:113]: 'Desk Height': Sending state nan cm with 1 decimals of accuracy
[16:43:53][W][ble_sensor:039]: [Desk Speed] Disconnected!
[16:43:53][D][sensor:113]: 'Desk Speed': Sending state nan cm/min with 0 decimals of accuracy
[16:43:53][W][ble_client:117]: connect to ee:04:05:a7:f4:2d failed, status=133
[16:43:53][D][esp32_ble_tracker:214]: Starting scan...
[16:43:53][D][ble_client:047]: Found device at MAC address [EE:04:05:A7:F4:2D]
[16:43:53][I][ble_client:085]: Attempting BLE connection to ee:04:05:a7:f4:2d
[16:43:53][I][ble_sensor:033]: [Desk Height] Connected successfully!
[16:43:53][I][ble_sensor:033]: [Desk Speed] Connected successfully!
[16:43:53][D][binary_sensor:036]: 'Desk Connection': Sending state ON
[16:43:55][I][ble_client:161]: Service UUID: 0x1800
[16:43:55][I][ble_client:162]:   start_handle: 0x1  end_handle: 0x9
[16:43:55][I][ble_client:341]:  characteristic 0x2A00, handle 0x3, properties 0xa
[16:43:55][I][ble_client:341]:  characteristic 0x2A01, handle 0x5, properties 0x2
[16:43:55][I][ble_client:341]:  characteristic 0x2A04, handle 0x7, properties 0x2
[16:43:55][I][ble_client:341]:  characteristic 0x2AA6, handle 0x9, properties 0x2
[16:43:55][I][ble_client:161]: Service UUID: 0x1801
[16:43:55][I][ble_client:162]:   start_handle: 0xa  end_handle: 0xd
[16:43:55][I][ble_client:341]:  characteristic 0x2A05, handle 0xc, properties 0x20
[16:43:55][I][ble_client:161]: Service UUID: 99FA0001-338A-1024-8A49-009C0215F78A
[16:43:55][I][ble_client:162]:   start_handle: 0xe  end_handle: 0x13
[16:43:55][I][ble_client:341]:  characteristic 99FA0002-338A-1024-8A49-009C0215F78A, handle 0x10, properties 0xc
[16:43:55][I][ble_client:341]:  characteristic 99FA0003-338A-1024-8A49-009C0215F78A, handle 0x12, properties 0x12
[16:43:55][I][ble_client:161]: Service UUID: 99FA0010-338A-1024-8A49-009C0215F78A
[16:43:55][I][ble_client:162]:   start_handle: 0x14  end_handle: 0x17
[16:43:55][I][ble_client:341]:  characteristic 99FA0011-338A-1024-8A49-009C0215F78A, handle 0x16, properties 0x1e
[16:43:55][I][ble_client:161]: Service UUID: 99FA0020-338A-1024-8A49-009C0215F78A
[16:43:55][I][ble_client:162]:   start_handle: 0x18  end_handle: 0x1f
[16:43:55][I][ble_client:341]:  characteristic 99FA0021-338A-1024-8A49-009C0215F78A, handle 0x1a, properties 0x12
[16:43:55][I][ble_client:341]:  characteristic 99FA0029-338A-1024-8A49-009C0215F78A, handle 0x1d, properties 0x2
[16:43:55][I][ble_client:341]:  characteristic 99FA002A-338A-1024-8A49-009C0215F78A, handle 0x1f, properties 0x2
[16:43:55][I][ble_client:161]: Service UUID: 99FA0030-338A-1024-8A49-009C0215F78A
[16:43:55][I][ble_client:162]:   start_handle: 0x20  end_handle: 0xffff
[16:43:55][I][ble_client:341]:  characteristic 99FA0031-338A-1024-8A49-009C0215F78A, handle 0x22, properties 0xc
[16:43:55][D][sensor:113]: 'Desk Height': Sending state nan cm with 1 decimals of accuracy
[16:43:55][W][ble_sensor:051]: No sensor characteristic found at service 8AF71502-9C00-498A-2410-8A332000FA99 char 8AF71502-9C00-498A-2410-8A332100FA99
[16:43:55][D][sensor:113]: 'Desk Speed': Sending state nan cm/min with 0 decimals of accuracy
[16:43:55][W][ble_sensor:051]: No sensor characteristic found at service 8AF71502-9C00-498A-2410-8A332000FA99 char 8AF71502-9C00-498A-2410-8A332100FA99
[16:43:55][D][esp32_ble_tracker:214]: Starting scan...
[16:43:55][D][esp32_ble_tracker:719]: Found device 49:71:8D:65:9B:5A RSSI=-86
[16:43:55][D][esp32_ble_tracker:740]:   Address Type: RANDOM
[16:43:55][D][esp32_ble_tracker:719]: Found device EE:04:05:A7:F4:2D RSSI=-52
[16:43:55][D][esp32_ble_tracker:740]:   Address Type: RANDOM
[16:43:55][D][esp32_ble_tracker:744]:   TX Power: 2
[16:43:58][D][esp32_ble_tracker:719]: Found device 71:E2:4B:5F:AA:32 RSSI=-68
[16:43:58][D][esp32_ble_tracker:740]:   Address Type: RANDOM
[16:43:58][W][ble_sensor:119]: [Desk Height] Cannot poll, not connected
[16:43:58][W][ble_sensor:119]: [Desk Speed] Cannot poll, not connected
[16:44:01][D][esp32_ble_tracker:719]: Found device EE:C1:E5:CA:80:E5 RSSI=-88
[16:44:01][D][esp32_ble_tracker:740]:   Address Type: RANDOM
[16:44:01][D][esp32_ble_tracker:742]:   Name: 'Amazfit Bip Watch'
[16:44:02][D][esp32_ble_tracker:719]: Found device 7F:A5:4D:A3:72:AB RSSI=-88
[16:44:02][D][esp32_ble_tracker:740]:   Address Type: RANDOM
[16:44:09][D][esp32_ble_tracker:719]: Found device 30:50:75:6F:57:10 RSSI=-47
[16:44:09][D][esp32_ble_tracker:740]:   Address Type: PUBLIC
[16:44:09][D][esp32_ble_tracker:742]:   Name: 'Jabra Evolve 75e'
[16:44:18][D][esp32_ble_tracker:719]: Found device E7:4E:2C:AB:DE:9E RSSI=-42
[16:44:18][D][esp32_ble_tracker:740]:   Address Type: RANDOM
[16:44:19][D][esp32_ble_tracker:719]: Found device 59:AF:5C:9E:08:98 RSSI=-49
[16:44:19][D][esp32_ble_tracker:740]:   Address Type: RANDOM
[16:44:19][D][esp32_ble_tracker:744]:   TX Power: 2
[16:44:26][W][ble_sensor:039]: [Desk Height] Disconnected!
[16:44:26][D][sensor:113]: 'Desk Height': Sending state nan cm with 1 decimals of accuracy
[16:44:26][W][ble_sensor:039]: [Desk Speed] Disconnected!
[16:44:26][D][sensor:113]: 'Desk Speed': Sending state nan cm/min with 0 decimals of accuracy
[16:44:26][D][binary_sensor:036]: 'Desk Connection': Sending state OFF
[16:44:26][D][ble_client:047]: Found device at MAC address [EE:04:05:A7:F4:2D]
[16:44:26][I][ble_client:085]: Attempting BLE connection to ee:04:05:a7:f4:2d
[16:44:56][W][ble_sensor:039]: [Desk Height] Disconnected!
[16:44:56][D][sensor:113]: 'Desk Height': Sending state nan cm with 1 decimals of accuracy
[16:44:56][W][ble_sensor:039]: [Desk Speed] Disconnected!
[16:44:56][D][sensor:113]: 'Desk Speed': Sending state nan cm/min with 0 decimals of accuracy
[16:44:56][W][ble_client:117]: connect to ee:04:05:a7:f4:2d failed, status=133
[16:44:56][D][esp32_ble_tracker:214]: Starting scan...
[16:44:57][D][ble_client:047]: Found device at MAC address [EE:04:05:A7:F4:2D]
[16:44:57][D][esp32_ble_tracker:719]: Found device EE:C1:E5:CA:80:E5 RSSI=-87
[16:44:57][D][esp32_ble_tracker:740]:   Address Type: RANDOM
[16:44:57][D][esp32_ble_tracker:742]:   Name: 'Amazfit Bip Watch'
[16:44:57][I][ble_client:085]: Attempting BLE connection to ee:04:05:a7:f4:2d
[16:44:57]lld_pdu_get_tx_flush_nb HCI packet count mismatch (0, 1)
[16:44:57][W][ble_sensor:039]: [Desk Height] Disconnected!
[16:44:57][D][sensor:113]: 'Desk Height': Sending state nan cm with 1 decimals of accuracy
[16:44:57][W][ble_sensor:039]: [Desk Speed] Disconnected!
[16:44:57][D][sensor:113]: 'Desk Speed': Sending state nan cm/min with 0 decimals of accuracy
[16:44:57][W][ble_client:117]: connect to ee:04:05:a7:f4:2d failed, status=133
[16:44:57][D][esp32_ble_tracker:214]: Starting scan...
[16:44:57][D][esp32_ble_tracker:719]: Found device 7F:A5:4D:A3:72:AB RSSI=-84
[16:44:57][D][esp32_ble_tracker:740]:   Address Type: RANDOM
[16:44:58][D][ble_client:047]: Found device at MAC address [EE:04:05:A7:F4:2D]
[16:44:58][I][ble_client:085]: Attempting BLE connection to ee:04:05:a7:f4:2d
[16:44:58]lld_pdu_get_tx_flush_nb HCI packet count mismatch (0, 1)
[16:44:58][W][ble_sensor:039]: [Desk Height] Disconnected!
[16:44:58][D][sensor:113]: 'Desk Height': Sending state nan cm with 1 decimals of accuracy
[16:44:58][W][ble_sensor:039]: [Desk Speed] Disconnected!
[16:44:58][D][sensor:113]: 'Desk Speed': Sending state nan cm/min with 0 decimals of accuracy
[16:44:58][W][ble_client:117]: connect to ee:04:05:a7:f4:2d failed, status=133
[16:44:58][D][esp32_ble_tracker:214]: Starting scan...
[16:44:58][D][esp32_ble_tracker:719]: Found device EE:C1:E5:CA:80:E5 RSSI=-87
[16:44:58][D][esp32_ble_tracker:740]:   Address Type: RANDOM
[16:44:58][D][esp32_ble_tracker:742]:   Name: 'Amazfit Bip Watch'
[16:44:58][D][ble_client:047]: Found device at MAC address [EE:04:05:A7:F4:2D]
[16:44:58][I][ble_client:085]: Attempting BLE connection to ee:04:05:a7:f4:2d
[16:44:58]lld_pdu_get_tx_flush_nb HCI packet count mismatch (0, 1)
[16:44:58][W][ble_sensor:039]: [Desk Height] Disconnected!
[16:44:58][D][sensor:113]: 'Desk Height': Sending state nan cm with 1 decimals of accuracy
[16:44:58][W][ble_sensor:039]: [Desk Speed] Disconnected!
[16:44:58][D][sensor:113]: 'Desk Speed': Sending state nan cm/min with 0 decimals of accuracy
[16:44:58][W][ble_client:117]: connect to ee:04:05:a7:f4:2d failed, status=133
[16:44:58][D][esp32_ble_tracker:214]: Starting scan...
[16:44:59][D][ble_client:047]: Found device at MAC address [EE:04:05:A7:F4:2D]
[16:44:59][I][ble_client:085]: Attempting BLE connection to ee:04:05:a7:f4:2d
[16:44:59]lld_pdu_get_tx_flush_nb HCI packet count mismatch (0, 1)
[16:44:59][W][ble_sensor:039]: [Desk Height] Disconnected!
[16:44:59][D][sensor:113]: 'Desk Height': Sending state nan cm with 1 decimals of accuracy
[16:44:59][W][ble_sensor:039]: [Desk Speed] Disconnected!
[16:44:59][D][sensor:113]: 'Desk Speed': Sending state nan cm/min with 0 decimals of accuracy
[16:44:59][W][ble_client:117]: connect to ee:04:05:a7:f4:2d failed, status=133
[16:44:59][D][esp32_ble_tracker:214]: Starting scan...
[16:44:59][D][esp32_ble_tracker:719]: Found device 71:E2:4B:5F:AA:32 RSSI=-65
[16:44:59][D][esp32_ble_tracker:740]:   Address Type: RANDOM
[16:45:00][D][ble_client:047]: Found device at MAC address [EE:04:05:A7:F4:2D]
[16:45:00][I][ble_client:085]: Attempting BLE connection to ee:04:05:a7:f4:2d
[16:45:00]lld_pdu_get_tx_flush_nb HCI packet count mismatch (0, 1)
[16:45:00][W][ble_sensor:039]: [Desk Height] Disconnected!
[16:45:00][D][sensor:113]: 'Desk Height': Sending state nan cm with 1 decimals of accuracy
[16:45:00][W][ble_sensor:039]: [Desk Speed] Disconnected!
[16:45:00][D][sensor:113]: 'Desk Speed': Sending state nan cm/min with 0 decimals of accuracy
[16:45:00][W][ble_client:117]: connect to ee:04:05:a7:f4:2d failed, status=133
[16:45:00][D][esp32_ble_tracker:214]: Starting scan...
[16:45:00][D][ble_client:047]: Found device at MAC address [EE:04:05:A7:F4:2D]
[16:45:00][I][ble_client:085]: Attempting BLE connection to ee:04:05:a7:f4:2d
[16:45:00]lld_pdu_get_tx_flush_nb HCI packet count mismatch (0, 1)
[16:45:00][W][ble_sensor:039]: [Desk Height] Disconnected!
[16:45:00][D][sensor:113]: 'Desk Height': Sending state nan cm with 1 decimals of accuracy
[16:45:00][W][ble_sensor:039]: [Desk Speed] Disconnected!
[16:45:00][D][sensor:113]: 'Desk Speed': Sending state nan cm/min with 0 decimals of accuracy
[16:45:00][W][ble_client:117]: connect to ee:04:05:a7:f4:2d failed, status=133
[16:45:00][D][esp32_ble_tracker:214]: Starting scan...

I have looked everywhere, tried other ESP32, checked if any device was still connected. But nothing. Please help.

Desk Still not moving

Hi, and thank you a lot for this great work.
I struggled the whole day getting v2.0.0 up and running. Everything went fine except the desk is not moving when trying to move it from Homeassistant.

image

Then i saw you updated to v2.0.1 and I went straight updating my device but again the same behaviour.

Any help is appreciated

Installation of the cover component does not work

The values of the sensors work properly and the connection is stable. But as soon as I try to install the cover component, ESP Home does not let me install the configuration anymore.

Have already set the state of only_up_down_command to true or false. But either way the result is the same. Also I tested the Version 1.2.0 from other issues, but this way is also not installable on my ESP32. Using the mac_adress instead of the ble_client_id is also no solution.

I am using this device:
https://amzn.eu/im8RbFC

Here you can see my configuration from ESP Home Addon
ESP Home Konfiguration.txt

And this is the log during the installation
logs_flos-schreibtischsteuerung_upload.txt

At the moment, I can only check the sensor data.

Disconnecting with error

Hey,

I wanted to try this out with my new desk and an ESP32 I had lying around.

When I hold the connect button on the desk, the following is logged by the ESP32:

[14:24:43][D][esp32_ble_tracker:180]: Starting scan...
[14:24:43][D][esp32_ble_tracker:620]: Found device D0:06:00:00:01:D4 RSSI=-79
[14:24:43][D][esp32_ble_tracker:641]: Address Type: PUBLIC
[14:24:43][D][esp32_ble_tracker:643]: Name: 'Triones:D006000001D4'
[14:24:43][D][esp32_ble_tracker:620]: Found device 7D:A4:DB:3E:8D:1B RSSI=-60
[14:24:43][D][esp32_ble_tracker:641]: Address Type: RANDOM
[14:24:44][D][ble_client:045]: Found device at MAC address [C6:DE:41:D2:C1:B4]
[14:24:44][I][ble_client:083]: Attempting BLE connection to c6:de:41:d2:c1:b4
[14:24:45][I][idasen_desk_controller:042]: [Schreibtisch] Connected successfully!
[14:24:45][I][ble_sensor:033]: [Schreibtisch Hรถhe] Connected successfully!
[14:24:45][I][ble_sensor:033]: [Schreibtisch Geschwindigkeit] Connected successfully!
[14:24:46][I][ble_client:159]: Service UUID: 0x1800
[14:24:46][I][ble_client:160]: start_handle: 0x1 end_handle: 0x9
[14:24:46][I][ble_client:339]: characteristic 0x2A00, handle 0x3, properties 0xa
[14:24:46][I][ble_client:339]: characteristic 0x2A01, handle 0x5, properties 0x2
[14:24:46][I][ble_client:339]: characteristic 0x2A04, handle 0x7, properties 0x2
[14:24:46][I][ble_client:339]: characteristic 0x2AA6, handle 0x9, properties 0x2
[14:24:46][I][ble_client:159]: Service UUID: 0x1801
[14:24:46][I][ble_client:160]: start_handle: 0xa end_handle: 0xd
[14:24:46][I][ble_client:339]: characteristic 0x2A05, handle 0xc, properties 0x20
[14:24:46][I][ble_client:159]: Service UUID: 99FA0001-338A-1024-8A49-009C0215F78A
[14:24:46][I][ble_client:160]: start_handle: 0xe end_handle: 0x13
[14:24:46][I][ble_client:339]: characteristic 99FA0002-338A-1024-8A49-009C0215F78A, handle 0x10, properties 0xc
[14:24:46][I][ble_client:339]: characteristic 99FA0003-338A-1024-8A49-009C0215F78A, handle 0x12, properties 0x12
[14:24:46][I][ble_client:159]: Service UUID: 99FA0010-338A-1024-8A49-009C0215F78A
[14:24:46][I][ble_client:160]: start_handle: 0x14 end_handle: 0x17
[14:24:46][I][ble_client:339]: characteristic 99FA0011-338A-1024-8A49-009C0215F78A, handle 0x16, properties 0x1e
[14:24:46][I][ble_client:159]: Service UUID: 99FA0020-338A-1024-8A49-009C0215F78A
[14:24:46][I][ble_client:160]: start_handle: 0x18 end_handle: 0x1f
[14:24:46][I][ble_client:339]: characteristic 99FA0021-338A-1024-8A49-009C0215F78A, handle 0x1a, properties 0x12
[14:24:46][I][ble_client:339]: characteristic 99FA0029-338A-1024-8A49-009C0215F78A, handle 0x1d, properties 0x2
[14:24:46][I][ble_client:339]: characteristic 99FA002A-338A-1024-8A49-009C0215F78A, handle 0x1f, properties 0x2
[14:24:46][I][ble_client:159]: Service UUID: 99FA0030-338A-1024-8A49-009C0215F78A
[14:24:46][I][ble_client:160]: start_handle: 0x20 end_handle: 0xffff
[14:24:46][I][ble_client:339]: characteristic 99FA0031-338A-1024-8A49-009C0215F78A, handle 0x22, properties 0xc
[14:24:47][W][ble_client:170]: No descriptor found for notify of handle 0x1a
[14:24:47][W][ble_client:170]: No descriptor found for notify of handle 0x1a
[14:24:47][D][esp32_ble_tracker:180]: Starting scan...
[14:24:47][D][esp32_ble_tracker:620]: Found device D0:06:00:00:01:D4 RSSI=-76
[14:24:47][D][esp32_ble_tracker:641]: Address Type: PUBLIC
[14:24:47][D][esp32_ble_tracker:643]: Name: 'Triones:D006000001D4'
[14:24:47][D][esp32_ble_tracker:620]: Found device C6:DE:41:D2:C1:B4 RSSI=-63
[14:24:47][D][esp32_ble_tracker:641]: Address Type: RANDOM
[14:24:47][D][esp32_ble_tracker:645]: TX Power: 2
[14:24:47][D][esp32_ble_tracker:620]: Found device 7D:A4:DB:3E:8D:1B RSSI=-55
[14:24:47][D][esp32_ble_tracker:641]: Address Type: RANDOM
[14:24:48][D][esp32_ble_tracker:620]: Found device 7E:E1:4E:7B:02:44 RSSI=-53
[14:24:49][D][esp32_ble_tracker:641]: Address Type: RANDOM
[14:24:50][D][esp32_ble_tracker:620]: Found device 49:CC:D3:6E:AF:EB RSSI=-57
[14:24:50][D][esp32_ble_tracker:641]: Address Type: RANDOM
[14:24:52][W][idasen_desk_controller:104]: Error reading char at handle 26, status=5
[14:24:52][W][ble_sensor:082]: Error reading char at handle 26, status=5
[14:24:52][W][ble_sensor:082]: Error reading char at handle 26, status=5
[14:25:17][W][idasen_desk_controller:049]: [Schreibtisch] Disconnected!
[14:25:17][W][ble_sensor:039]: [Schreibtisch Hรถhe] Disconnected!

I have my phone disconnected from the desk. There seems to be an error with the data payload, but i think you will know better :) I would appreciate some help! Thanks in advance

Linak BLE2LIN support

I have a Desk with the Linak controller and a Linak BLE2LIN002 Bluetooth adapter (ver 1.08). Similar to what @lars-1 reported in #7 (comment) the device disconnects quite quickly, and seems not to be able to read an actual height.

Is the Protocol of the Linak BLE2LIN known to be different to Ikea Idasen?

What is I find interesting is that the first time the esp32_ble_tracker does not list the MAC of the BLE2LIN adapter. But it finds it shortly after. In the next scan it appears, and shortly after the desk disconnects. Could it be that the scan actually leads to the disconnect?

I also don't understand where No sensor characteristic found at service 8AF71502-9C00-498A-2410-8A332000FA99 char 8AF71502-9C00-498A-2410-8A332100FA99 is coming from. Those UUID's seem to exist nowhere, I wonder if something goes wrong during parsing/transferring UUIDs.

I am using ESPHome 2021.9.2 on a ESP32 dev board.

[19:52:55][D][esp32_ble_tracker:180]: Starting scan...
[19:52:55][V][component:207]: Component esp32_ble_tracker took a long time for an operation (0.06 s).
[19:52:55][V][component:208]: Components should block for at most 20-30ms.
[19:52:55][D][esp32_ble_tracker:628]: Found device 12:23:23:34:45:56 RSSI=-64
[19:52:55][D][esp32_ble_tracker:649]:   Address Type: PUBLIC
[19:52:56][D][esp32_ble_tracker:628]: Found device 12:23:23:34:45:57 RSSI=-84
[19:52:56][D][esp32_ble_tracker:649]:   Address Type: PUBLIC
[19:52:56][D][esp32_ble_tracker:651]:   Name: '....'
[19:52:56][V][esp32_ble_tracker:599]: Unhandled type: advType: 0x12
...
[19:53:44][D][ble_client:045]: Found device at MAC address [E4:1E:AA:AA:AA:AA]
[19:53:44][I][ble_client:083]: Attempting BLE connection to e4:1e:aa:aa:aa:aa
[19:53:44][V][ble_client:113]: [e4:1e:aa:aa:aa:aa] ESP_GATTC_OPEN_EVT
[19:53:44][I][ble_sensor:033]: [Desk Height] Connected successfully!
[19:53:44][I][ble_sensor:033]: [Desk Speed] Connected successfully!
[19:53:44][I][idasen_desk_controller:042]: [] Connected successfully!
[19:53:44][D][binary_sensor:036]: 'Desk Connection': Sending state ON
[19:53:49][V][ble_client:132]: cfg_mtu status 0, mtu 23
[19:53:49][V][ble_client:157]: [e4:1e:aa:aa:aa:aa] ESP_GATTC_SEARCH_CMPL_EVT
[19:53:49][I][ble_client:159]: Service UUID: 0x1800
[19:53:49][I][ble_client:160]:   start_handle: 0x1  end_handle: 0x7
[19:53:49][I][ble_client:339]:  characteristic 0x2A00, handle 0x3, properties 0xa
[19:53:49][I][ble_client:339]:  characteristic 0x2A01, handle 0x5, properties 0x2
[19:53:49][I][ble_client:339]:  characteristic 0x2A04, handle 0x7, properties 0x2
[19:53:49][I][ble_client:159]: Service UUID: 0x1801
[19:53:49][I][ble_client:160]:   start_handle: 0x8  end_handle: 0xb
[19:53:49][I][ble_client:339]:  characteristic 0x2A05, handle 0xa, properties 0x20
[19:53:49][V][ble_client:374]:    descriptor 0x2902, handle 0xb
[19:53:49][I][ble_client:159]: Service UUID: 99FA0001-338A-1024-8A49-009C0215F78A
[19:53:49][I][ble_client:160]:   start_handle: 0xc  end_handle: 0x11
[19:53:49][I][ble_client:339]:  characteristic 99FA0002-338A-1024-8A49-009C0215F78A, handle 0xe, properties 0xc
[19:53:49][I][ble_client:339]:  characteristic 99FA0003-338A-1024-8A49-009C0215F78A, handle 0x10, properties 0x12
[19:53:49][V][ble_client:374]:    descriptor 0x2902, handle 0x11
[19:53:49][I][ble_client:159]: Service UUID: 99FA0010-338A-1024-8A49-009C0215F78A
[19:53:49][I][ble_client:160]:   start_handle: 0x12  end_handle: 0x15
[19:53:49][I][ble_client:339]:  characteristic 99FA0011-338A-1024-8A49-009C0215F78A, handle 0x14, properties 0x1e
[19:53:49][V][ble_client:374]:    descriptor 0x2902, handle 0x15
[19:53:49][I][ble_client:159]: Service UUID: 0x180A
[19:53:49][I][ble_client:160]:   start_handle: 0x16  end_handle: 0x1a
[19:53:49][I][ble_client:339]:  characteristic 0x2A29, handle 0x18, properties 0x2
[19:53:49][I][ble_client:339]:  characteristic 0x2A24, handle 0x1a, properties 0x2
[19:53:49][I][ble_client:159]: Service UUID: 99FA0020-338A-1024-8A49-009C0215F78A
[19:53:49][I][ble_client:160]:   start_handle: 0x1b  end_handle: 0x37
[19:53:49][I][ble_client:339]:  characteristic 99FA0021-338A-1024-8A49-009C0215F78A, handle 0x1d, properties 0x12
[19:53:49][V][ble_client:374]:    descriptor 0x2902, handle 0x1e
[19:53:49][I][ble_client:339]:  characteristic 99FA0022-338A-1024-8A49-009C0215F78A, handle 0x20, properties 0x12
[19:53:49][V][ble_client:374]:    descriptor 0x2902, handle 0x21
[19:53:49][I][ble_client:339]:  characteristic 99FA0023-338A-1024-8A49-009C0215F78A, handle 0x23, properties 0x12
[19:53:49][V][ble_client:374]:    descriptor 0x2902, handle 0x24
[19:53:49][I][ble_client:339]:  characteristic 99FA0024-338A-1024-8A49-009C0215F78A, handle 0x26, properties 0x12
[19:53:49][V][ble_client:374]:    descriptor 0x2902, handle 0x27
[19:53:49][I][ble_client:339]:  characteristic 99FA0025-338A-1024-8A49-009C0215F78A, handle 0x29, properties 0x12
[19:53:49][V][ble_client:374]:    descriptor 0x2902, handle 0x2a
[19:53:49][I][ble_client:339]:  characteristic 99FA0026-338A-1024-8A49-009C0215F78A, handle 0x2c, properties 0x12
[19:53:49][V][ble_client:374]:    descriptor 0x2902, handle 0x2d
[19:53:49][I][ble_client:339]:  characteristic 99FA0027-338A-1024-8A49-009C0215F78A, handle 0x2f, properties 0x12
[19:53:49][V][ble_client:374]:    descriptor 0x2902, handle 0x30
[19:53:49][I][ble_client:339]:  characteristic 99FA0028-338A-1024-8A49-009C0215F78A, handle 0x32, properties 0x12
[19:53:49][V][ble_client:374]:    descriptor 0x2902, handle 0x33
[19:53:49][I][ble_client:339]:  characteristic 99FA0029-338A-1024-8A49-009C0215F78A, handle 0x35, properties 0x2
[19:53:49][I][ble_client:339]:  characteristic 99FA002A-338A-1024-8A49-009C0215F78A, handle 0x37, properties 0x2
[19:53:49][I][ble_client:159]: Service UUID: 99FA0030-338A-1024-8A49-009C0215F78A
[19:53:49][I][ble_client:160]:   start_handle: 0x38  end_handle: 0x40
[19:53:49][I][ble_client:339]:  characteristic 99FA0031-338A-1024-8A49-009C0215F78A, handle 0x3a, properties 0xc
[19:53:49][I][ble_client:339]:  characteristic 99FA0032-338A-1024-8A49-009C0215F78A, handle 0x3c, properties 0xc
[19:53:49][I][ble_client:339]:  characteristic 99FA0033-338A-1024-8A49-009C0215F78A, handle 0x3e, properties 0xc
[19:53:49][I][ble_client:339]:  characteristic 99FA0034-338A-1024-8A49-009C0215F78A, handle 0x40, properties 0xc
[19:53:49][I][ble_client:159]: Service UUID: 99FA0040-338A-1024-8A49-009C0215F78A
[19:53:49][I][ble_client:160]:   start_handle: 0x41  end_handle: 0x46
[19:53:49][I][ble_client:339]:  characteristic 99FA0041-338A-1024-8A49-009C0215F78A, handle 0x43, properties 0x12
[19:53:49][V][ble_client:374]:    descriptor 0x2902, handle 0x44
[19:53:49][I][ble_client:339]:  characteristic 99FA0043-338A-1024-8A49-009C0215F78A, handle 0x46, properties 0x2
[19:53:49][I][ble_client:159]: Service UUID: 99FA0050-338A-1024-8A49-009C0215F78A
[19:53:49][I][ble_client:160]:   start_handle: 0x47  end_handle: 0xffff
[19:53:49][I][ble_client:339]:  characteristic 99FA0051-338A-1024-8A49-009C0215F78A, handle 0x49, properties 0xe
[19:53:49][V][sensor:070]: 'Desk Height': Received new state nan
[19:53:49][D][sensor:121]: 'Desk Height': Sending state nan cm with 1 decimals of accuracy
[19:53:49][W][ble_sensor:051]: No sensor characteristic found at service 8AF71502-9C00-498A-2410-8A332000FA99 char 8AF71502-9C00-498A-2410-8A332100FA99
[19:53:49][V][sensor:070]: 'Desk Speed': Received new state nan
[19:53:49][D][sensor:121]: 'Desk Speed': Sending state nan cm/min with 0 decimals of accuracy
[19:53:49][W][ble_sensor:051]: No sensor characteristic found at service 8AF71502-9C00-498A-2410-8A332000FA99 char 8AF71502-9C00-498A-2410-8A332100FA99
[19:53:49][D][esp32_ble_tracker:180]: Starting scan...
[19:53:49][V][component:207]: Component esp32_ble_tracker took a long time for an operation (0.49 s).
[19:53:49][V][component:208]: Components should block for at most 20-30ms.
[19:53:49][W][ble_sensor:119]: [Desk Height] Cannot poll, not connected
[19:53:49][W][ble_sensor:119]: [Desk Speed] Cannot poll, not connected
[19:53:50][D][esp32_ble_tracker:628]: Found device E4:1E:aa:aa:aa:aa RSSI=-54
[19:53:50][D][esp32_ble_tracker:649]:   Address Type: RANDOM
[19:53:50][D][esp32_ble_tracker:628]: Found device 12:23:23:34:45:56 RSSI=-64
...
[19:53:54][W][ble_sensor:082]: Error reading char at handle 29, status=5
[19:53:54][W][ble_sensor:082]: Error reading char at handle 29, status=5
[19:53:54][W][idasen_desk_controller:104]: Error reading char at handle 29, status=5
...
[19:54:19][V][ble_client:140]: [e4:1e:aa:aa:aa:aa] ESP_GATTC_DISCONNECT_EVT
[19:54:19][W][ble_sensor:039]: [Desk Height] Disconnected!
[19:54:19][V][sensor:070]: 'Desk Height': Received new state nan
[19:54:19][D][sensor:121]: 'Desk Height': Sending state nan cm with 1 decimals of accuracy
[19:54:19][W][ble_sensor:039]: [Desk Speed] Disconnected!
[19:54:19][V][sensor:070]: 'Desk Speed': Received new state nan
[19:54:19][D][sensor:121]: 'Desk Speed': Sending state nan cm/min with 0 decimals of accuracy
[19:54:19][W][idasen_desk_controller:049]: [] Disconnected!
[19:54:19][D][binary_sensor:036]: 'Desk Connection': Sending state OFF
[19:54:19][D][ble_client:045]: Found device at MAC address [E4:1E:aa:aa:aa:aa]
[19:54:19][I][ble_client:083]: Attempting BLE connection to e4:1e:aa:aa:aa:aa
...

new esphome version breaks compilation

After installing latest esphome version, cannot update esp with idasen desk controller plugin.

needed to also include "type: characteristic" in esphome config entry for ble_client sensor.

compilation error log:
Processing esphome-bt-monitor2 (board: nodemcu-32s; framework: arduino; platform: platformio/espressif32 @ 3.5.0)

HARDWARE: ESP32 240MHz, 320KB RAM, 4MB Flash
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
Dependency Graph
|-- AsyncTCP-esphome @ 1.2.2
|-- WiFi @ 1.0
|-- FS @ 1.0
|-- Update @ 1.0
|-- ESPAsyncWebServer-esphome @ 2.1.0
| |-- AsyncTCP-esphome @ 1.2.2
|-- DNSServer @ 1.1.0
|-- ESPmDNS @ 1.0
|-- ArduinoJson @ 6.18.5
Compiling .pioenvs/esphome-bt-monitor2/src/esphome/components/api/api_connection.cpp.o
Compiling .pioenvs/esphome-bt-monitor2/src/esphome/components/api/api_pb2.cpp.o
Compiling .pioenvs/esphome-bt-monitor2/src/esphome/components/api/api_pb2_service.cpp.o
Compiling .pioenvs/esphome-bt-monitor2/src/esphome/components/api/api_server.cpp.o
Compiling .pioenvs/esphome-bt-monitor2/src/esphome/components/api/list_entities.cpp.o
Compiling .pioenvs/esphome-bt-monitor2/src/esphome/components/api/subscribe_state.cpp.o
Compiling .pioenvs/esphome-bt-monitor2/src/esphome/components/api/user_services.cpp.o
Compiling .pioenvs/esphome-bt-monitor2/src/esphome/components/ble_client/automation.cpp.o
Compiling .pioenvs/esphome-bt-monitor2/src/esphome/components/ble_client/ble_client.cpp.o
Compiling .pioenvs/esphome-bt-monitor2/src/esphome/components/ble_client/sensor/ble_rssi_sensor.cpp.o
Compiling .pioenvs/esphome-bt-monitor2/src/esphome/components/ble_client/sensor/ble_sensor.cpp.o
Compiling .pioenvs/esphome-bt-monitor2/src/esphome/components/captive_portal/captive_portal.cpp.o
Compiling .pioenvs/esphome-bt-monitor2/src/esphome/components/esp32_ble_client/ble_characteristic.cpp.o
Compiling .pioenvs/esphome-bt-monitor2/src/esphome/components/esp32_ble_client/ble_client_base.cpp.o
Compiling .pioenvs/esphome-bt-monitor2/src/esphome/components/esp32_ble_client/ble_service.cpp.o
Compiling .pioenvs/esphome-bt-monitor2/src/esphome/components/esp32_ble_tracker/esp32_ble_tracker.cpp.o
Compiling .pioenvs/esphome-bt-monitor2/src/esphome/components/homeassistant/time/homeassistant_time.cpp.o
Compiling .pioenvs/esphome-bt-monitor2/src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp.o
Compiling .pioenvs/esphome-bt-monitor2/src/esphome/components/logger/logger.cpp.o
Compiling .pioenvs/esphome-bt-monitor2/src/esphome/components/md5/md5.cpp.o
Compiling .pioenvs/esphome-bt-monitor2/src/esphome/components/mdns/mdns_component.cpp.o
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp: In member function 'virtual void esphome::idasen_desk_controller::IdasenDeskControllerComponent::gattc_event_handler(esp_gattc_cb_event_t, esp_gatt_if_t, esp_ble_gattc_cb_param_t*)':
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:68:61: error: 'class esphome::ble_client::BLEClient' has no member named 'gattc_if'
esp_ble_gattc_register_for_notify(this->parent()->gattc_if, this->parent()->remote_bda, this->output_handle_);
^
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:68:87: error: 'class esphome::ble_client::BLEClient' has no member named 'remote_bda'
esp_ble_gattc_register_for_notify(this->parent()->gattc_if, this->parent()->remote_bda, this->output_handle_);
^
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:101:50: error: 'class esphome::ble_client::BLEClient' has no member named 'conn_id'
if (param->read.conn_id != this->parent()->conn_id)
^
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:115:52: error: 'class esphome::ble_client::BLEClient' has no member named 'conn_id'
if (param->notify.conn_id != this->parent()->conn_id || param->notify.handle != this->output_handle_)
^
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp: In member function 'void esphome::idasen_desk_controller::IdasenDeskControllerComponent::write_value_(uint16_t, short unsigned int)':
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:141:65: error: 'class esphome::ble_client::BLEClient' has no member named 'gattc_if'
esp_err_t status = ::esp_ble_gattc_write_char(this->parent()->gattc_if, this->parent()->conn_id, handle, 2, data,
^
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:141:91: error: 'class esphome::ble_client::BLEClient' has no member named 'conn_id'
esp_err_t status = ::esp_ble_gattc_write_char(this->parent()->gattc_if, this->parent()->conn_id, handle, 2, data,
^
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp: In member function 'void esphome::idasen_desk_controller::IdasenDeskControllerComponent::read_value_(uint16_t)':
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:152:47: error: 'class esphome::ble_client::BLEClient' has no member named 'gattc_if'
esp_ble_gattc_read_char(this->parent()->gattc_if, this->parent()->conn_id, handle, ESP_GATT_AUTH_REQ_NONE);
^
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:152:73: error: 'class esphome::ble_client::BLEClient' has no member named 'conn_id'
esp_ble_gattc_read_char(this->parent()->gattc_if, this->parent()->conn_id, handle, ESP_GATT_AUTH_REQ_NONE);
^
*** [.pioenvs/esphome-bt-monitor2/src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp.o] Error 1
========================= [FAILED] Took 261.46 seconds =========================

Connecting but not showing any parameters and not moving

Hey, I copy-pasted the config and it doesn't work - logs/config below.
Also, ESP connects to the desk only after holding the BT button on the controller - phone app can reconnect after disconnecting. Also I've noticed that after disconnecting desk can go only down, and slower then normal - after hitting the lowest point, it can go up and down again.

esphome:
  name: gateway-desk
  platform: ESP32
  board: esp-wrover-kit

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  manual_ip:
    static_ip: 192.168.12.43
    gateway: 192.168.12.1
    subnet: 255.255.255.0
  fast_connect: true
  ap:
    ssid: "Gateway-desk"
    password: !secret fallback

captive_portal:

logger:

api:
  password: !secret api_gateway_desk

ota:
  password: !secret api_gateway_desk

external_components:
  - source: github://j5lien/[email protected]

esp32_ble_tracker:

idasen_desk_controller:
    ble_client_id: idasen_desk
    only_up_down_command: true

globals:
  - id: ble_client_connected
    type: bool
    initial_value: 'false'

ble_client:
  - mac_address: "ED:D3:5C:57:32:0A"
    id: idasen_desk
    on_connect:
      then:
        # Update the Desk Connection Status
        - lambda: |-
            id(ble_client_connected) = true;
        - delay: 5s
        - lambda: |-
            id(desk_height).update();
            id(desk_speed).update();
    on_disconnect:
      then:
        - lambda: |-
            id(ble_client_connected) = false;

cover:
  - platform: idasen_desk_controller
    name: "Desk"

sensor:
  - platform: ble_client
    ble_client_id: idasen_desk
    id: desk_height
    name: 'Desk Height'
    service_uuid: '99fa0020-338a-1024-8a49-009c0215f78a'
    characteristic_uuid: '99fa0021-338a-1024-8a49-009c0215f78a'
    icon: 'mdi:arrow-up-down'
    unit_of_measurement: 'cm'
    accuracy_decimals: 1
    update_interval: never
    notify: true
    lambda: |-
      uint16_t raw_height = ((uint16_t)x[1] << 8) | x[0];
      unsigned short height_mm = raw_height / 10;

      return (float) height_mm / 10;

  - platform: ble_client
    ble_client_id: idasen_desk
    id: desk_speed
    name: 'Desk Speed'
    service_uuid: '99fa0020-338a-1024-8a49-009c0215f78a'
    characteristic_uuid: '99fa0021-338a-1024-8a49-009c0215f78a'
    icon: 'mdi:speedometer'
    unit_of_measurement: 'cm/min' # I'm not sure this unit is correct
    accuracy_decimals: 0
    update_interval: never
    notify: true
    lambda: |-
      uint16_t raw_speed = ((uint16_t)x[3] << 8) | x[2];
      return raw_speed / 100;

binary_sensor:
  - platform: template
    name: 'Desk Connection'
    id: desk_connection
    lambda: 'return id(ble_client_connected);'

  - platform: template
    name: 'Desk Moving'
    id: desk_moving
    lambda: 'return id(desk_speed).state > 0;'

Log:

[13:52:10][C][esp32_ble_tracker:606]: BLE Tracker:
[13:52:10][C][esp32_ble_tracker:607]:   Scan Duration: 300 s
[13:52:11][C][esp32_ble_tracker:608]:   Scan Interval: 320.0 ms
[13:52:11][C][esp32_ble_tracker:609]:   Scan Window: 30.0 ms
[13:52:11][C][esp32_ble_tracker:610]:   Scan Type: ACTIVE
[13:52:11][C][ble_client:033]: BLE Client:
[13:52:11][C][ble_client:034]:   Address: ed:d3:5c:57:32:0a
[13:52:11][C][ble_sensor:019]: BLE Sensor 'Desk Height'
[13:52:11][C][ble_sensor:019]:   State Class: ''
[13:52:11][C][ble_sensor:019]:   Unit of Measurement: 'cm'
[13:52:11][C][ble_sensor:019]:   Accuracy Decimals: 1
[13:52:11][C][ble_sensor:019]:   Icon: 'mdi:arrow-up-down'
[13:52:11][C][ble_sensor:020]:   MAC address        : ed:d3:5c:57:32:0a
[13:52:11][C][ble_sensor:021]:   Service UUID       : 99FA0020338A10-248A-4900-9C02-15F78A
[13:52:11][C][ble_sensor:022]:   Characteristic UUID: 99FA0021338A10-248A-4900-9C02-15F78A
[13:52:11][C][ble_sensor:023]:   Descriptor UUID    : 00000000000000-0000-0000-0000-000000
[13:52:11][C][ble_sensor:024]:   Notifications      : YES
[13:52:11][C][ble_sensor:025]:   Update Interval: 4294967.5s
[13:52:11][C][ble_sensor:019]: BLE Sensor 'Desk Speed'
[13:52:11][C][ble_sensor:019]:   State Class: ''
[13:52:11][C][ble_sensor:019]:   Unit of Measurement: 'cm/min'
[13:52:11][C][ble_sensor:019]:   Accuracy Decimals: 0
[13:52:11][C][ble_sensor:019]:   Icon: 'mdi:speedometer'
[13:52:11][C][ble_sensor:020]:   MAC address        : ed:d3:5c:57:32:0a
[13:52:11][C][ble_sensor:021]:   Service UUID       : 99FA0020338A10-248A-4900-9C02-15F78A
[13:52:11][C][ble_sensor:022]:   Characteristic UUID: 99FA0021338A10-248A-4900-9C02-15F78A
[13:52:11][C][ble_sensor:023]:   Descriptor UUID    : 00000000000000-0000-0000-0000-000000
[13:52:11][C][ble_sensor:024]:   Notifications      : YES
[13:52:11][C][ble_sensor:025]:   Update Interval: 4294967.5s
[13:52:11][C][idasen_desk_controller:024]: Idasen Desk Controller:
[13:52:11][C][idasen_desk_controller:025]:   MAC address        : ed:d3:5c:57:32:0a
[13:52:11][C][idasen_desk_controller:026]:   Notifications      : disable
[13:52:11][C][idasen_desk_controller:027]:   Desk 'Desk'
[13:52:17][D][cover:072]: 'Desk' - Setting
[13:52:17][D][cover:080]:   Position: 100%
[13:52:17][W][idasen_desk_controller:155]: [Desk] Error sending read request for cover, status=-1
[13:52:17][D][cover:072]: 'Desk' - Setting
[13:52:17][D][cover:076]:   Command: STOP
[13:52:17][W][idasen_desk_controller:155]: [Desk] Error sending read request for cover, status=-1
[13:52:17][D][idasen_desk_controller:248]: Cover control - STOP
[13:52:17][W][idasen_desk_controller:146]: [Desk] Error sending write request for cover, status=-1
[13:52:18][D][cover:072]: 'Desk' - Setting
[13:52:18][D][cover:080]:   Position: 0%
[13:52:18][W][idasen_desk_controller:155]: [Desk] Error sending read request for cover, status=-1
[13:52:18][D][cover:072]: 'Desk' - Setting
[13:52:18][D][cover:076]:   Command: STOP
[13:52:18][W][idasen_desk_controller:155]: [Desk] Error sending read request for cover, status=-1
[13:52:18][D][idasen_desk_controller:248]: Cover control - STOP
[13:52:18][W][idasen_desk_controller:146]: [Desk] Error sending write request for cover, status=-1
[13:52:55][D][cover:072]: 'Desk' - Setting
[13:52:55][D][cover:080]:   Position: 71%
[13:52:55][W][idasen_desk_controller:155]: [Desk] Error sending read request for cover, status=-1
[13:52:55][W][idasen_desk_controller:155]: [Desk] Error sending read request for cover, status=-1
[13:52:55][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 71
[13:52:55][W][idasen_desk_controller:146]: [Desk] Error sending write request for cover, status=-1
[13:52:55][W][idasen_desk_controller:155]: [Desk] Error sending read request for cover, status=-1
[13:52:55][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 71
[13:52:55][W][idasen_desk_controller:146]: [Desk] Error sending write request for cover, status=-1
[13:52:55][W][idasen_desk_controller:155]: [Desk] Error sending read request for cover, status=-1
[13:52:56][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 71
[13:52:56][W][idasen_desk_controller:146]: [Desk] Error sending write request for cover, status=-1
[13:52:56][W][idasen_desk_controller:155]: [Desk] Error sending read request for cover, status=-1
[13:52:56][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 71
[13:52:56][W][idasen_desk_controller:146]: [Desk] Error sending write request for cover, status=-1
[13:52:56][W][idasen_desk_controller:155]: [Desk] Error sending read request for cover, status=-1
[13:52:56][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 71
[13:52:56][W][idasen_desk_controller:146]: [Desk] Error sending write request for cover, status=-1
[13:52:56][D][cover:072]: 'Desk' - Setting
[13:52:56][D][cover:080]:   Position: 100%
[13:52:56][W][idasen_desk_controller:155]: [Desk] Error sending read request for cover, status=-1
[13:52:56][W][idasen_desk_controller:146]: [Desk] Error sending write request for cover, status=-1
[13:52:57][D][cover:072]: 'Desk' - Setting
[13:52:57][D][cover:076]:   Command: STOP
[13:52:57][W][idasen_desk_controller:155]: [Desk] Error sending read request for cover, status=-1
[13:52:57][D][idasen_desk_controller:248]: Cover control - STOP
[13:52:57][W][idasen_desk_controller:146]: [Desk] Error sending write request for cover, status=-1
[13:52:57][D][cover:072]: 'Desk' - Setting
[13:52:57][D][cover:080]:   Position: 100%
[13:52:57][W][idasen_desk_controller:155]: [Desk] Error sending read request for cover, status=-1
[13:52:57][D][cover:072]: 'Desk' - Setting
[13:52:57][D][cover:076]:   Command: STOP
[13:52:57][W][idasen_desk_controller:155]: [Desk] Error sending read request for cover, status=-1
[13:52:57][D][idasen_desk_controller:248]: Cover control - STOP
[13:52:57][W][idasen_desk_controller:146]: [Desk] Error sending write request for cover, status=-1
[13:53:45][D][ble_client:045]: Found device at MAC address [ED:D3:5C:57:32:0A]
[13:53:45][I][ble_client:083]: Attempting BLE connection to ed:d3:5c:57:32:0a
[13:54:15][W][ble_sensor:039]: [Desk Height] Disconnected!
[13:54:15][D][sensor:117]: 'Desk Height': Sending state nan cm with 1 decimals of accuracy
[13:54:15][W][ble_sensor:039]: [Desk Speed] Disconnected!
[13:54:15][D][sensor:117]: 'Desk Speed': Sending state nan cm/min with 0 decimals of accuracy
[13:54:15][W][idasen_desk_controller:049]: [Desk] Disconnected!
[13:54:15][W][ble_client:115]: connect to ed:d3:5c:57:32:0a failed, status=133
[13:54:15][D][esp32_ble_tracker:180]: Starting scan...
[13:54:15][D][ble_client:045]: Found device at MAC address [ED:D3:5C:57:32:0A]
[13:54:15][I][ble_client:083]: Attempting BLE connection to ed:d3:5c:57:32:0a
[13:54:15][I][ble_sensor:033]: [Desk Height] Connected successfully!
[13:54:15][I][ble_sensor:033]: [Desk Speed] Connected successfully!
[13:54:15][I][idasen_desk_controller:042]: [Desk] Connected successfully!
[13:54:15][D][binary_sensor:036]: 'Desk Connection': Sending state ON
[13:54:17][I][ble_client:159]: Service UUID: 0x1800
[13:54:17][I][ble_client:160]:   start_handle: 0x1  end_handle: 0x9
[13:54:17][I][ble_client:339]:  characteristic 0x2A00, handle 0x3, properties 0xa
[13:54:17][I][ble_client:339]:  characteristic 0x2A01, handle 0x5, properties 0x2
[13:54:17][I][ble_client:339]:  characteristic 0x2A04, handle 0x7, properties 0x2
[13:54:17][I][ble_client:339]:  characteristic 0x2AA6, handle 0x9, properties 0x2
[13:54:17][I][ble_client:159]: Service UUID: 0x1801
[13:54:17][I][ble_client:160]:   start_handle: 0xa  end_handle: 0xd
[13:54:17][I][ble_client:339]:  characteristic 0x2A05, handle 0xc, properties 0x20
[13:54:17][I][ble_client:159]: Service UUID: 99FA0001338A10-248A-4900-9C02-15F78A
[13:54:17][I][ble_client:160]:   start_handle: 0xe  end_handle: 0x13
[13:54:17][I][ble_client:339]:  characteristic 99FA0002338A10-248A-4900-9C02-15F78A, handle 0x10, properties 0xc
[13:54:17][I][ble_client:339]:  characteristic 99FA0003338A10-248A-4900-9C02-15F78A, handle 0x12, properties 0x12
[13:54:17][I][ble_client:159]: Service UUID: 99FA0010338A10-248A-4900-9C02-15F78A
[13:54:17][I][ble_client:160]:   start_handle: 0x14  end_handle: 0x17
[13:54:17][I][ble_client:339]:  characteristic 99FA0011338A10-248A-4900-9C02-15F78A, handle 0x16, properties 0x1e
[13:54:17][I][ble_client:159]: Service UUID: 99FA0020338A10-248A-4900-9C02-15F78A
[13:54:17][I][ble_client:160]:   start_handle: 0x18  end_handle: 0x1f
[13:54:17][I][ble_client:339]:  characteristic 99FA0021338A10-248A-4900-9C02-15F78A, handle 0x1a, properties 0x12
[13:54:17][I][ble_client:339]:  characteristic 99FA0029338A10-248A-4900-9C02-15F78A, handle 0x1d, properties 0x2
[13:54:17][I][ble_client:339]:  characteristic 99FA002A338A10-248A-4900-9C02-15F78A, handle 0x1f, properties 0x2
[13:54:17][I][ble_client:159]: Service UUID: 99FA0030338A10-248A-4900-9C02-15F78A
[13:54:17][I][ble_client:160]:   start_handle: 0x20  end_handle: 0xffff
[13:54:17][I][ble_client:339]:  characteristic 99FA0031338A10-248A-4900-9C02-15F78A, handle 0x22, properties 0xc
[13:54:17][W][ble_client:170]: No descriptor found for notify of handle 0x1a
[13:54:17][W][ble_client:170]: No descriptor found for notify of handle 0x1a
[13:54:21][W][ble_sensor:082]: Error reading char at handle 26, status=5
[13:54:21][W][ble_sensor:082]: Error reading char at handle 26, status=5
[13:54:21][W][idasen_desk_controller:104]: Error reading char at handle 26, status=5
[13:54:21][W][ble_sensor:082]: Error reading char at handle 26, status=5
[13:54:21][W][ble_sensor:082]: Error reading char at handle 26, status=5
[13:54:21][W][idasen_desk_controller:104]: Error reading char at handle 26, status=5
[13:54:22][D][cover:072]: 'Desk' - Setting
[13:54:22][D][cover:080]:   Position: 100%
[13:54:22][W][ble_sensor:082]: Error reading char at handle 26, status=5
[13:54:22][W][ble_sensor:082]: Error reading char at handle 26, status=5
[13:54:22][W][idasen_desk_controller:104]: Error reading char at handle 26, status=5
[13:54:23][D][cover:072]: 'Desk' - Setting
[13:54:23][D][cover:076]:   Command: STOP
[13:54:23][D][idasen_desk_controller:248]: Cover control - STOP
[13:54:23][D][cover:072]: 'Desk' - Setting
[13:54:23][D][cover:080]:   Position: 100%
[13:54:23][D][cover:072]: 'Desk' - Setting
[13:54:23][D][cover:076]:   Command: STOP
[13:54:23][D][idasen_desk_controller:248]: Cover control - STOP
[13:54:24][D][cover:072]: 'Desk' - Setting
[13:54:24][D][cover:080]:   Position: 0%
[13:54:24][D][cover:072]: 'Desk' - Setting
[13:54:24][D][cover:076]:   Command: STOP
[13:54:24][D][idasen_desk_controller:248]: Cover control - STOP
[13:54:25][D][cover:072]: 'Desk' - Setting
[13:54:25][D][cover:080]:   Position: 22%
[13:54:25][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 22
[13:54:25][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 22
[13:54:25][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 22
[13:54:25][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 22
[13:54:26][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 22
[13:54:26][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 22
[13:54:26][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 22
[13:54:26][D][cover:072]: 'Desk' - Setting
[13:54:26][D][cover:080]:   Position: 71%
[13:54:26][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 71
...107 attempts...
[13:54:48][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 71
[13:54:48][W][ble_sensor:039]: [Desk Height] Disconnected!
[13:54:48][D][sensor:117]: 'Desk Height': Sending state nan cm with 1 decimals of accuracy
[13:54:48][W][ble_sensor:039]: [Desk Speed] Disconnected!
[13:54:48][D][sensor:117]: 'Desk Speed': Sending state nan cm/min with 0 decimals of accuracy
[13:54:48][W][idasen_desk_controller:049]: [Desk] Disconnected!
[13:54:48][D][binary_sensor:036]: 'Desk Connection': Sending state OFF
[13:54:48][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 71
[13:54:48][W][idasen_desk_controller:146]: [Desk] Error sending write request for cover, status=-1
[13:54:48][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 71
[13:54:48][W][idasen_desk_controller:146]: [Desk] Error sending write request for cover, status=-1
[13:54:48][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 71
[13:54:48][W][idasen_desk_controller:146]: [Desk] Error sending write request for cover, status=-1
[13:54:48][D][ble_client:045]: Found device at MAC address [ED:D3:5C:57:32:0A]
[13:54:48][I][ble_client:083]: Attempting BLE connection to ed:d3:5c:57:32:0a
[13:54:48][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 71
[13:54:48][W][idasen_desk_controller:146]: [Desk] Error sending write request for cover, status=-1
[13:54:49][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 71
[13:54:49][W][idasen_desk_controller:146]: [Desk] Error sending write request for cover, status=-1

Height/Moving sensors not update

I must use version 1.2.2 in order to avoi dconnection/disconnection loop but while moving the height sensor doesn't update unless i press the stop button for the cover.

Here is the log

[19:39:25][C][mdns:085]:   Hostname: deskcontrol
[19:39:25][C][idasen_desk_controller:100]: Idasen Desk Controller:
[19:39:25][C][idasen_desk_controller:101]:   Mac address: F5:45:F6:xx:xx:xx
[19:39:25][C][idasen_desk_controller:102]:   Bluetooth callback: true
[19:39:25][C][idasen_desk_controller:103]:   Desk height 'Desk Height'
[19:39:25][C][idasen_desk_controller:103]:     State Class: ''
[19:39:25][C][idasen_desk_controller:103]:     Unit of Measurement: 'cm'
[19:39:25][C][idasen_desk_controller:103]:     Accuracy Decimals: 1
[19:39:25][C][idasen_desk_controller:103]:     Icon: 'mdi:arrow-up-down'
[19:39:25][C][idasen_desk_controller:104]:   Desk moving 'Desk Moving'
[19:39:25][C][idasen_desk_controller:104]:     Device Class: 'moving'
[19:39:25][C][idasen_desk_controller:105]:   Desk connection 'Desk Connection'
[19:41:03][D][cover:078]: 'Desk' - Setting
[19:41:03][D][cover:082]:   Command: STOP
[19:41:03][D][idasen_desk_controller:329]: Cover control - STOP
[19:41:03][D][idasen_desk_controller:208]: Desk bluetooth data: height 17.1 - speed 0.0
[19:41:03][D][idasen_desk_controller:209]: Speed 0.0 Counter: 1.0
[19:41:03][D][sensor:113]: 'Desk Height': Sending state 17.10000 cm with 1 decimals of accuracy
[19:41:03][D][cover:172]: 'Desk' - Publishing:
[19:41:03][D][cover:175]:   Position: 26%
[19:41:03][D][cover:188]:   Current Operation: IDLE

esphome desk controller not connecting

Thank you for all the effort you have put into developing this controller!

I run into an issue where the controller finds my desk, however it doesn't add it to be controlled.

This is a line from the log output:
'[0;35m[C][idasen_desk_controller:053]: BLE Device found: Name: Desk 1403, Address: fd:7f:6d:4a:a1:bb, serviceUUID: 99fa0001-338a-1024-8a49-009c0215f78a, txPower: 4๏ฟฝ[0m'

The controller just keeps scanning for BLE devices.
Could it be that the name: Desk 1403 is causing problems?

Component idasen_desk_controller requires component esp32.

Hey, this is my configuration:

esphome:
  name: idasen
  platform: ESP32
  board: esp32dev

external_components:
  - source: github://j5lien/[email protected]


esp32_ble_tracker:
ble_client:
  - mac_address: "00:00:00:00:00:00"
    id: idasen_desk

idasen_desk_controller:
  ble_client_id: idasen_desk
  only_up_down_command: false


# Enable logging
logger:

# Enable Home Assistant API
api:

ota:
  password: "..."

wifi:
  ssid: "..."
  password: "..."
  fast_connect: true

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Idasen Fallback Hotspot"
    password: "..."

captive_portal:

When validating the configuration, I get the following error:

INFO Reading configuration /config/esphome/idasen.yaml...
Failed config

idasen_desk_controller: [source /config/esphome/idasen.yaml:16]
  
  Component idasen_desk_controller requires component esp32.
  ble_client_id: idasen_desk
  only_up_down_command: False

Do you have any idea why that might be? Any help is appreciated, thanks :D

ESP32 keeps crashing on ESPHome 2022.11.2

Hi,

my ESP32 keeps crashing with this component enabled on ESPHome 2022.11.2.

I have disabled all services other than this integration.

Here is the log of the ESP32 before the crash:

[I][logger:258]: Log initialized
[C][ota:469]: There have been 9 suspected unsuccessful boot attempts.
[D][esp32.preferences:113]: Saving 1 preferences to flash...
[D][esp32.preferences:142]: Saving 1 preferences to flash: 0 cached, 1 written, 0 failed
[I][app:029]: Running through setup()...
[D][esp32_ble_tracker:264]: Starting scan...
[C][wifi:037]: Setting up WiFi...
[C][wifi:038]:   Local MAC: 30:AE:A4:96:88:C8
[I][wifi:257]: WiFi Connecting to 'Heiden.Funk.IoT'...
[D][binary_sensor:036]: 'Sebastians Desk Connection': Sending state OFF
[D][binary_sensor:036]: 'Sebastians Desk Moving': Sending state OFF
[D][esp32_ble_tracker:812]: Found device A0:2C:36:66:0A:9C RSSI=-42
[D][esp32_ble_tracker:833]:   Address Type: PUBLIC
[D][esp32_ble_tracker:835]:   Name: 'LM1420'
[D][esp32_ble_tracker:837]:   TX Power: 2
[D][esp32_ble_tracker:812]: Found device D5:21:97:A1:DB:C1 RSSI=-64
[D][esp32_ble_tracker:833]:   Address Type: RANDOM
[D][esp32_ble_tracker:835]:   Name: 'LHB-3C334B54'
[D][esp32_ble_tracker:812]: Found device DD:A0:52:CB:FB:D7 RSSI=-63
[D][esp32_ble_tracker:833]:   Address Type: RANDOM
[D][esp32_ble_tracker:835]:   Name: 'LHB-2234193E'
[D][esp32_ble_tracker:812]: Found device 77:F3:51:E0:7E:88 RSSI=-61
[D][esp32_ble_tracker:833]:   Address Type: RANDOM
[D][esp32_ble_tracker:812]: Found device 28:17:0F:D1:7C:67 RSSI=-45
[D][esp32_ble_tracker:833]:   Address Type: RANDOM
[D][esp32_ble_tracker:812]: Found device 46:FB:20:99:0B:5E RSSI=-64
[D][esp32_ble_tracker:833]:   Address Type: RANDOM
[D][esp32_ble_tracker:835]:   Name: 'LE-spyflys Revolve SoundLi'
[D][esp32_ble_tracker:837]:   TX Power: 2
[D][esp-idf:000]: E (5840) wifi:
[D][esp-idf:000]: Set status to INIT
[D][esp-idf:000]: 

[D][esp32_ble_tracker:812]: Found device 56:12:75:EA:43:FF RSSI=-86
[D][esp32_ble_tracker:833]:   Address Type: RANDOM
[D][esp32_ble_tracker:837]:   TX Power: 2
[I][wifi:518]: WiFi Connected!
[C][wifi:362]:   Local MAC: 30:AE:A4:96:88:C8
[C][wifi:363]:   SSID: [redacted]
[C][wifi:364]:   IP Address: 192.168.40.201
[C][wifi:366]:   BSSID: [redacted]
[C][wifi:367]:   Hostname: 'sebastians-esp32'
[C][wifi:369]:   Signal strength: -57 dB โ–‚โ–„โ–†โ–ˆ
[C][wifi:373]:   Channel: 2
[C][wifi:374]:   Subnet: 255.255.255.0
[C][wifi:375]:   Gateway: 192.168.40.1
[C][wifi:376]:   DNS1: 192.168.40.1
[C][wifi:377]:   DNS2: 0.0.0.0
[D][wifi:527]: Disabling AP...
[C][ota:093]: Over-The-Air Updates:
[C][ota:094]:   Address: sebastians-esp32.heiden.io:3232
[C][ota:097]:   Using Password.
[W][ota:103]: Last Boot was an unhandled reset, will proceed to safe mode in 1 restarts
[C][api:025]: Setting up Home Assistant API server...
[C][idasen_desk_controller:019]: Setting up Idasen Desk Controller...
[I][app:062]: setup() finished successfully!
[I][app:102]: ESPHome version 2022.11.2 compiled on Nov 24 2022, 00:10:48
[C][wifi:504]: WiFi:
[C][wifi:362]:   Local MAC: 30:AE:A4:96:88:C8
[C][wifi:363]:   SSID: [redacted]
[C][wifi:364]:   IP Address: 192.168.40.201
[C][wifi:366]:   BSSID: [redacted]
[C][wifi:367]:   Hostname: 'sebastians-esp32'
[C][wifi:369]:   Signal strength: -57 dB โ–‚โ–„โ–†โ–ˆ
[C][wifi:373]:   Channel: 2
[C][wifi:374]:   Subnet: 255.255.255.0
[C][wifi:375]:   Gateway: 192.168.40.1
[C][wifi:376]:   DNS1: 192.168.40.1
[C][wifi:377]:   DNS2: 0.0.0.0
[C][logger:293]: Logger:
[C][logger:294]:   Level: DEBUG
[C][logger:295]:   Log Baud Rate: 115200
[C][logger:296]:   Hardware UART: UART0
[C][template.binary_sensor:018]: Template Binary Sensor 'Sebastians Desk Connection'
[C][template.binary_sensor:018]: Template Binary Sensor 'Sebastians Desk Moving'
[C][ble_sensor:017]: BLE Sensor 'Sebastians Desk Height'
[C][ble_sensor:017]:   State Class: ''
[C][ble_sensor:017]:   Unit of Measurement: 'cm'
[C][ble_sensor:017]:   Accuracy Decimals: 1
[C][ble_sensor:017]:   Icon: 'mdi:arrow-up-down'
[C][ble_sensor:018]:   MAC address        : ed:43:c8:e2:df:4b
[C][ble_sensor:019]:   Service UUID       : 99FA0020-338A-1024-8A49-009C0215F78A
[C][ble_sensor:020]:   Characteristic UUID: 99FA0021-338A-1024-8A49-009C0215F78A
[C][ble_sensor:021]:   Descriptor UUID    : 00000000-0000-0000-0000-000000000000
[C][ble_sensor:022]:   Notifications      : YES
[C][ble_sensor:023]:   Update Interval: never
[C][ble_sensor:017]: BLE Sensor 'Sebastians Desk Speed'
[C][ble_sensor:017]:   State Class: ''
[C][ble_sensor:017]:   Unit of Measurement: 'cm/min'
[C][ble_sensor:017]:   Accuracy Decimals: 0
[C][ble_sensor:017]:   Icon: 'mdi:speedometer'
[C][ble_sensor:018]:   MAC address        : ed:43:c8:e2:df:4b
[C][ble_sensor:019]:   Service UUID       : 99FA0020-338A-1024-8A49-009C0215F78A
[C][ble_sensor:020]:   Characteristic UUID: 99FA0021-338A-1024-8A49-009C0215F78A
[C][ble_sensor:021]:   Descriptor UUID    : 00000000-0000-0000-0000-000000000000
[C][ble_sensor:022]:   Notifications      : YES
[C][ble_sensor:023]:   Update Interval: never
[C][esp32_ble_tracker:796]: BLE Tracker:
[C][esp32_ble_tracker:797]:   Scan Duration: 300 s
[C][esp32_ble_tracker:798]:   Scan Interval: 320.0 ms
[C][esp32_ble_tracker:799]:   Scan Window: 30.0 ms
[C][esp32_ble_tracker:800]:   Scan Type: ACTIVE
[C][esp32_ble_tracker:801]:   Continuous Scanning: True
[C][ble_client:027]: BLE Client:
[C][ble_client:028]:   Address: ed:43:c8:e2:df:4b
[C][captive_portal:088]: Captive Portal:
[C][mdns:103]: mDNS:
[C][mdns:104]:   Hostname: sebastians-esp32
[C][ota:093]: Over-The-Air Updates:
[C][ota:094]:   Address: sebastians-esp32.heiden.io:3232
[C][ota:097]:   Using Password.
[W][ota:103]: Last Boot was an unhandled reset, will proceed to safe mode in 1 restarts
[C][api:138]: API Server:
[C][api:139]:   Address: sebastians-esp32.heiden.io:6053
[C][api:143]:   Using noise encryption: NO
[C][idasen_desk_controller:024]: Idasen Desk Controller:
[C][idasen_desk_controller:025]:   MAC address        : ed:43:c8:e2:df:4b
[C][idasen_desk_controller:026]:   Notifications      : disable
[C][idasen_desk_controller:027]:   Desk 'Sebastians Desk'
[D][esp32_ble_client:039]: [0] [ed:43:c8:e2:df:4b] Found device
[I][esp32_ble_client:054]: [0] [ed:43:c8:e2:df:4b] Attempting BLE connection
[I][idasen_desk_controller:042]: [Sebastians Desk] Connected successfully!
[I][ble_sensor:031]: [Sebastians Desk Height] Connected successfully!
[I][ble_sensor:031]: [Sebastians Desk Speed] Connected successfully!
[D][api:102]: Accepted ::FFFF:C0A8:142F
[W][api.connection:083]: Home Assistant 2022.11.4 (::FFFF:C0A8:142F): Connection closed
[I][esp32_ble_client:154]: [0] [ed:43:c8:e2:df:4b] Service UUID: 0x1800
[I][esp32_ble_client:156]: [0] [ed:43:c8:e2:df:4b]  start_handle: 0x1  end_handle: 0x9
[I][esp32_ble_client:059]: [0] [ed:43:c8:e2:df:4b]  characteristic 0x2A00, handle 0x3, properties 0xa
[I][esp32_ble_client:059]: [0] [ed:43:c8:e2:df:4b]  characteristic 0x2A01, handle 0x5, properties 0x2
[I][esp32_ble_client:059]: [0] [ed:43:c8:e2:df:4b]  characteristic 0x2A04, handle 0x7, properties 0x2
[I][esp32_ble_client:059]: [0] [ed:43:c8:e2:df:4b]  characteristic 0x2AA6, handle 0x9, properties 0x2
[I][esp32_ble_client:154]: [0] [ed:43:c8:e2:df:4b] Service UUID: 0x1801
[I][esp32_ble_client:156]: [0] [ed:43:c8:e2:df:4b]  start_handle: 0xa  end_handle: 0xd
[I][esp32_ble_client:059]: [0] [ed:43:c8:e2:df:4b]  characteristic 0x2A05, handle 0xc, properties 0x20
[I][esp32_ble_client:154]: [0] [ed:43:c8:e2:df:4b] Service UUID: 99FA0001-338A-1024-8A49-009C0215F78A
[I][esp32_ble_client:156]: [0] [ed:43:c8:e2:df:4b]  start_handle: 0xe  end_handle: 0x13
[I][esp32_ble_client:059]: [0] [ed:43:c8:e2:df:4b]  characteristic 99FA0002-338A-1024-8A49-009C0215F78A, handle 0x10, properties 0xc
[I][esp32_ble_client:059]: [0] [ed:43:c8:e2:df:4b]  characteristic 99FA0003-338A-1024-8A49-009C0215F78A, handle 0x12, properties 0x12
[I][esp32_ble_client:154]: [0] [ed:43:c8:e2:df:4b] Service UUID: 99FA0010-338A-1024-8A49-009C0215F78A
[I][esp32_ble_client:156]: [0] [ed:43:c8:e2:df:4b]  start_handle: 0x14  end_handle: 0x17
[I][esp32_ble_client:059]: [0] [ed:43:c8:e2:df:4b]  characteristic 99FA0011-338A-1024-8A49-009C0215F78A, handle 0x16, properties 0x1e
[I][esp32_ble_client:154]: [0] [ed:43:c8:e2:df:4b] Service UUID: 99FA0020-338A-1024-8A49-009C0215F78A
[I][esp32_ble_client:156]: [0] [ed:43:c8:e2:df:4b]  start_handle: 0x18  end_handle: 0x1f
[I][esp32_ble_client:059]: [0] [ed:43:c8:e2:df:4b]  characteristic 99FA0021-338A-1024-8A49-009C0215F78A, handle 0x1a, properties 0x12
[I][esp32_ble_client:059]: [0] [ed:43:c8:e2:df:4b]  characteristic 99FA0029-338A-1024-8A49-009C0215F78A, handle 0x1d, properties 0x2
[I][esp32_ble_client:059]: [0] [ed:43:c8:e2:df:4b]  characteristic 99FA002A-338A-1024-8A49-009C0215F78A, handle 0x1f, properties 0x2
[I][esp32_ble_client:154]: [0] [ed:43:c8:e2:df:4b] Service UUID: 99FA0030-338A-1024-8A49-009C0215F78A
[I][esp32_ble_client:156]: [0] [ed:43:c8:e2:df:4b]  start_handle: 0x20  end_handle: 0xffff
[I][esp32_ble_client:059]: [0] [ed:43:c8:e2:df:4b]  characteristic 99FA0031-338A-1024-8A49-009C0215F78A, handle 0x22, properties 0xc
[D][esp32_ble_tracker:264]: Starting scan...
[D][binary_sensor:036]: 'Sebastians Desk Connection': Sending state ON
Guru Meditation Error: Core  1 panic'ed (LoadProhibited). Exception was unhandled.
Core 1 register dump:
PC      : 0x4000c2e0  PS      : 0x00060230  A0      : 0x800d9a94  A1      : 0x3ffccb70  
A2      : 0x3ffccc04  A3      : 0x00000000  A4      : 0x00000012  A5      : 0x3ffccc04  
A6      : 0x00060223  A7      : 0x00000001  A8      : 0x00000000  A9      : 0x0000abab  
A10     : 0x3fff49d8  A11     : 0x3fff4db5  A12     : 0x3fff49fc  A13     : 0x3fff4c04  
A14     : 0x3fff4b75  A15     : 0x3fff4c05  SAR     : 0x00000010  EXCCAUSE: 0x0000001c  
EXCVADDR: 0x00000000  LBEG    : 0x4000c2e0  LEND    : 0x4000c2f6  LCOUNT  : 0x00000000  

ELF file SHA256: 0000000000000000

Backtrace: 0x4000c2e0:0x3ffccb70 0x400d9a91:0x3ffccb80 0x400d8e86:0x3ffccba0 0x400d63ad:0x3ffccc40 0x401e917d:0x3ffccc70 0x400da7bd:0x3ffccc90 0x401e956d:0x3ffccd90 0x401e9649:0x3ffccdb0 0x400e10c2:0x3ffccdd0 0x400e3b1a:0x3ffcce00 0x400eecb4:0x3ffcce20 0x400909d6:0x3ffcce40

Rebooting...
ets Jun  8 2016 00:22:57

rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0018,len:4
load:0x3fff001c,len:1044
load:0x40078000,len:8896
load:0x40080400,len:5828
entry 0x400806ac

Support for esp-idf framework?

Any idea what it would take to allow this to work with the esp-idf framework? I'm trying to run this on an M5 Stamp C3U (an ESP32-C3 variant), but only the esp-idf framework supports the esp32-c3 boards. When I attempt to compile with esp-idf framework, I get the following:

INFO Reading configuration /config/office-desk-controller.yaml...
INFO Generating C++ source...
INFO Compiling app...
Processing office-desk-controller (board: esp32-c3-devkitm-1; framework: espidf; platform: platformio/espressif32 @ 3.5.0)
--------------------------------------------------------------------------------
HARDWARE: ESP32C3 160MHz, 320KB RAM, 4MB Flash
 - framework-espidf 3.40302.0 (4.3.2) 
 - tool-cmake 3.16.4 
 - tool-ninja 1.7.1 
 - toolchain-riscv32-esp 8.4.0+2021r2-patch2 
 - toolchain-xtensa-esp32s2 8.4.0+2021r2-patch2
Reading CMake configuration...
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
No dependencies
Compiling .pioenvs/office-desk-controller/src/esphome/components/idasen_desk_controller/idasen_desk_controller.o
Compiling .pioenvs/office-desk-controller/src/esphome/components/mdns/mdns_esp_idf.o
Compiling .pioenvs/office-desk-controller/src/esphome/components/network/util.o
Compiling .pioenvs/office-desk-controller/src/esphome/components/ota/ota_backend_arduino_esp32.o
Compiling .pioenvs/office-desk-controller/src/esphome/components/ota/ota_backend_arduino_esp8266.o
Compiling .pioenvs/office-desk-controller/src/esphome/components/ota/ota_backend_esp_idf.o
Compiling .pioenvs/office-desk-controller/src/esphome/components/ota/ota_component.o
Compiling .pioenvs/office-desk-controller/src/esphome/components/sensor/automation.o
Compiling .pioenvs/office-desk-controller/src/esphome/components/sensor/filter.o
Compiling .pioenvs/office-desk-controller/src/esphome/components/sensor/sensor.o
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:16:6: error: 'IdasenDeskControllerComponent' has not been declared
 void IdasenDeskControllerComponent::loop() {}
      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:18:6: error: 'IdasenDeskControllerComponent' has not been declared
 void IdasenDeskControllerComponent::setup() {
      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp: In function 'void esphome::idasen_desk_controller::setup()':
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:20:3: error: invalid use of 'this' in non-member function
   this->set_interval("update_desk", 200, [this]() { this->move_desk_(); });
   ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:20:43: error: invalid use of 'this' in non-member function
   this->set_interval("update_desk", 200, [this]() { this->move_desk_(); });
                                           ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp: In lambda function:
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:20:53: error: 'this' was not captured for this lambda function
   this->set_interval("update_desk", 200, [this]() { this->move_desk_(); });
                                                     ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp: At global scope:
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:23:6: error: 'IdasenDeskControllerComponent' has not been declared
 void IdasenDeskControllerComponent::dump_config() {
      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:2:
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp: In function 'void esphome::idasen_desk_controller::dump_config()':
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:25:51: error: invalid use of 'this' in non-member function
   ESP_LOGCONFIG(TAG, "  MAC address        : %s", this->parent()->address_str().c_str());
                                                   ^~~~
src/esphome/core/log.h:94:90: note: in definition of macro 'esph_log_config'
   esp_log_printf_(ESPHOME_LOG_LEVEL_CONFIG, tag, __LINE__, ESPHOME_LOG_FORMAT(format), ##__VA_ARGS__)
                                                                                          ^~~~~~~~~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:25:3: note: in expansion of macro 'ESP_LOGCONFIG'
   ESP_LOGCONFIG(TAG, "  MAC address        : %s", this->parent()->address_str().c_str());
   ^~~~~~~~~~~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:26:51: error: invalid use of 'this' in non-member function
   ESP_LOGCONFIG(TAG, "  Notifications      : %s", this->notify_disable_ ? "disable" : "enable");
                                                   ^~~~
src/esphome/core/log.h:94:90: note: in definition of macro 'esph_log_config'
   esp_log_printf_(ESPHOME_LOG_LEVEL_CONFIG, tag, __LINE__, ESPHOME_LOG_FORMAT(format), ##__VA_ARGS__)
                                                                                          ^~~~~~~~~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:26:3: note: in expansion of macro 'ESP_LOGCONFIG'
   ESP_LOGCONFIG(TAG, "  Notifications      : %s", this->notify_disable_ ? "disable" : "enable");
   ^~~~~~~~~~~~~
In file included from src/esphome/components/idasen_desk_controller/idasen_desk_controller.h:4,
                 from src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:1:
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:27:27: error: invalid use of 'this' in non-member function
   LOG_COVER("  ", "Desk", this);
                           ^~~~
src/esphome/components/cover/cover.h:16:8: note: in definition of macro 'LOG_COVER'
   if ((obj) != nullptr) { \
        ^~~
In file included from src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:2:
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:27:27: error: invalid use of 'this' in non-member function
   LOG_COVER("  ", "Desk", this);
                           ^~~~
src/esphome/core/log.h:94:90: note: in definition of macro 'esph_log_config'
   esp_log_printf_(ESPHOME_LOG_LEVEL_CONFIG, tag, __LINE__, ESPHOME_LOG_FORMAT(format), ##__VA_ARGS__)
                                                                                          ^~~~~~~~~~~
src/esphome/components/cover/cover.h:17:5: note: in expansion of macro 'ESP_LOGCONFIG'
     ESP_LOGCONFIG(TAG, "%s%s '%s'", prefix, LOG_STR_LITERAL(type), (obj)->get_name().c_str()); \
     ^~~~~~~~~~~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:27:3: note: in expansion of macro 'LOG_COVER'
   LOG_COVER("  ", "Desk", this);
   ^~~~~~~~~
In file included from src/esphome/components/idasen_desk_controller/idasen_desk_controller.h:4,
                 from src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:1:
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:27:27: error: invalid use of 'this' in non-member function
   LOG_COVER("  ", "Desk", this);
                           ^~~~
src/esphome/components/cover/cover.h:18:21: note: in definition of macro 'LOG_COVER'
     auto traits_ = (obj)->get_traits(); \
                     ^~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:27:27: error: invalid use of 'this' in non-member function
   LOG_COVER("  ", "Desk", this);
                           ^~~~
src/esphome/components/cover/cover.h:22:11: note: in definition of macro 'LOG_COVER'
     if (!(obj)->get_device_class().empty()) { \
           ^~~
In file included from src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:2:
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:27:27: error: invalid use of 'this' in non-member function
   LOG_COVER("  ", "Desk", this);
                           ^~~~
src/esphome/core/log.h:94:90: note: in definition of macro 'esph_log_config'
   esp_log_printf_(ESPHOME_LOG_LEVEL_CONFIG, tag, __LINE__, ESPHOME_LOG_FORMAT(format), ##__VA_ARGS__)
                                                                                          ^~~~~~~~~~~
src/esphome/components/cover/cover.h:23:7: note: in expansion of macro 'ESP_LOGCONFIG'
       ESP_LOGCONFIG(TAG, "%s  Device Class: '%s'", prefix, (obj)->get_device_class().c_str()); \
       ^~~~~~~~~~~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:27:3: note: in expansion of macro 'LOG_COVER'
   LOG_COVER("  ", "Desk", this);
   ^~~~~~~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp: At global scope:
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:30:6: error: 'IdasenDeskControllerComponent' has not been declared
 void IdasenDeskControllerComponent::gattc_event_handler(esp_gattc_cb_event_t event, esp_gatt_if_t gattc_if,
      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:2:
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp: In function 'void esphome::idasen_desk_controller::gattc_event_handler(esp_gattc_cb_event_t, esp_gatt_if_t, esp_ble_gattc_cb_param_t*)':
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:42:55: error: invalid use of 'this' in non-member function
         ESP_LOGI(TAG, "[%s] Connected successfully!", this->get_name().c_str());
                                                       ^~~~
src/esphome/core/log.h:105:88: note: in definition of macro 'esph_log_i'
   esp_log_printf_(ESPHOME_LOG_LEVEL_INFO, tag, __LINE__, ESPHOME_LOG_FORMAT(format), ##__VA_ARGS__)
                                                                                        ^~~~~~~~~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:42:9: note: in expansion of macro 'ESP_LOGI'
         ESP_LOGI(TAG, "[%s] Connected successfully!", this->get_name().c_str());
         ^~~~~~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:49:43: error: invalid use of 'this' in non-member function
       ESP_LOGW(TAG, "[%s] Disconnected!", this->get_name().c_str());
                                           ^~~~
src/esphome/core/log.h:114:88: note: in definition of macro 'esph_log_w'
   esp_log_printf_(ESPHOME_LOG_LEVEL_WARN, tag, __LINE__, ESPHOME_LOG_FORMAT(format), ##__VA_ARGS__)
                                                                                        ^~~~~~~~~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:49:7: note: in expansion of macro 'ESP_LOGW'
       ESP_LOGW(TAG, "[%s] Disconnected!", this->get_name().c_str());
       ^~~~~~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:50:7: error: invalid use of 'this' in non-member function
       this->status_set_warning();
       ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:56:7: error: invalid use of 'this' in non-member function
       this->output_handle_ = 0;
       ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:57:25: error: invalid use of 'this' in non-member function
       auto chr_output = this->parent()->get_characteristic(this->output_service_uuid_, this->output_char_uuid_);
                         ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:57:60: error: invalid use of 'this' in non-member function
       auto chr_output = this->parent()->get_characteristic(this->output_service_uuid_, this->output_char_uuid_);
                                                            ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:57:88: error: invalid use of 'this' in non-member function
       auto chr_output = this->parent()->get_characteristic(this->output_service_uuid_, this->output_char_uuid_);
                                                                                        ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:59:9: error: invalid use of 'this' in non-member function
         this->status_set_warning();
         ^~~~
In file included from src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:2:
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:60:72: error: invalid use of 'this' in non-member function
         ESP_LOGW(TAG, "No characteristic found at service %s char %s", this->output_service_uuid_.to_string().c_str(),
                                                                        ^~~~
src/esphome/core/log.h:114:88: note: in definition of macro 'esph_log_w'
   esp_log_printf_(ESPHOME_LOG_LEVEL_WARN, tag, __LINE__, ESPHOME_LOG_FORMAT(format), ##__VA_ARGS__)
                                                                                        ^~~~~~~~~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:60:9: note: in expansion of macro 'ESP_LOGW'
         ESP_LOGW(TAG, "No characteristic found at service %s char %s", this->output_service_uuid_.to_string().c_str(),
         ^~~~~~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:61:18: error: invalid use of 'this' in non-member function
                  this->output_char_uuid_.to_string().c_str());
                  ^~~~
src/esphome/core/log.h:114:88: note: in definition of macro 'esph_log_w'
   esp_log_printf_(ESPHOME_LOG_LEVEL_WARN, tag, __LINE__, ESPHOME_LOG_FORMAT(format), ##__VA_ARGS__)
                                                                                        ^~~~~~~~~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:60:9: note: in expansion of macro 'ESP_LOGW'
         ESP_LOGW(TAG, "No characteristic found at service %s char %s", this->output_service_uuid_.to_string().c_str(),
         ^~~~~~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:64:7: error: invalid use of 'this' in non-member function
       this->output_handle_ = chr_output->handle;
       ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:68:45: error: invalid use of 'this' in non-member function
           esp_ble_gattc_register_for_notify(this->parent()->gattc_if, this->parent()->remote_bda, this->output_handle_);
                                             ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:68:71: error: invalid use of 'this' in non-member function
           esp_ble_gattc_register_for_notify(this->parent()->gattc_if, this->parent()->remote_bda, this->output_handle_);
                                                                       ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:68:99: error: invalid use of 'this' in non-member function
           esp_ble_gattc_register_for_notify(this->parent()->gattc_if, this->parent()->remote_bda, this->output_handle_);
                                                                                                   ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:74:7: error: invalid use of 'this' in non-member function
       this->input_handle_ = 0;
       ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:75:24: error: invalid use of 'this' in non-member function
       auto chr_input = this->parent()->get_characteristic(this->input_service_uuid_, this->input_char_uuid_);
                        ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:75:59: error: invalid use of 'this' in non-member function
       auto chr_input = this->parent()->get_characteristic(this->input_service_uuid_, this->input_char_uuid_);
                                                           ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:75:86: error: invalid use of 'this' in non-member function
       auto chr_input = this->parent()->get_characteristic(this->input_service_uuid_, this->input_char_uuid_);
                                                                                      ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:77:9: error: invalid use of 'this' in non-member function
         this->status_set_warning();
         ^~~~
In file included from src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:2:
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:78:72: error: invalid use of 'this' in non-member function
         ESP_LOGW(TAG, "No characteristic found at service %s char %s", this->input_service_uuid_.to_string().c_str(),
                                                                        ^~~~
src/esphome/core/log.h:114:88: note: in definition of macro 'esph_log_w'
   esp_log_printf_(ESPHOME_LOG_LEVEL_WARN, tag, __LINE__, ESPHOME_LOG_FORMAT(format), ##__VA_ARGS__)
                                                                                        ^~~~~~~~~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:78:9: note: in expansion of macro 'ESP_LOGW'
         ESP_LOGW(TAG, "No characteristic found at service %s char %s", this->input_service_uuid_.to_string().c_str(),
         ^~~~~~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:79:18: error: invalid use of 'this' in non-member function
                  this->input_char_uuid_.to_string().c_str());
                  ^~~~
src/esphome/core/log.h:114:88: note: in definition of macro 'esph_log_w'
   esp_log_printf_(ESPHOME_LOG_LEVEL_WARN, tag, __LINE__, ESPHOME_LOG_FORMAT(format), ##__VA_ARGS__)
                                                                                        ^~~~~~~~~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:78:9: note: in expansion of macro 'ESP_LOGW'
         ESP_LOGW(TAG, "No characteristic found at service %s char %s", this->input_service_uuid_.to_string().c_str(),
         ^~~~~~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:82:7: error: invalid use of 'this' in non-member function
       this->input_handle_ = chr_input->handle;
       ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:85:7: error: invalid use of 'this' in non-member function
       this->control_handle_ = 0;
       ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:86:26: error: invalid use of 'this' in non-member function
       auto chr_control = this->parent()->get_characteristic(this->control_service_uuid_, this->control_char_uuid_);
                          ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:86:61: error: invalid use of 'this' in non-member function
       auto chr_control = this->parent()->get_characteristic(this->control_service_uuid_, this->control_char_uuid_);
                                                             ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:86:90: error: invalid use of 'this' in non-member function
       auto chr_control = this->parent()->get_characteristic(this->control_service_uuid_, this->control_char_uuid_);
                                                                                          ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:88:9: error: invalid use of 'this' in non-member function
         this->status_set_warning();
         ^~~~
In file included from src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:2:
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:89:72: error: invalid use of 'this' in non-member function
         ESP_LOGW(TAG, "No characteristic found at service %s char %s", this->control_service_uuid_.to_string().c_str(),
                                                                        ^~~~
src/esphome/core/log.h:114:88: note: in definition of macro 'esph_log_w'
   esp_log_printf_(ESPHOME_LOG_LEVEL_WARN, tag, __LINE__, ESPHOME_LOG_FORMAT(format), ##__VA_ARGS__)
                                                                                        ^~~~~~~~~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:89:9: note: in expansion of macro 'ESP_LOGW'
         ESP_LOGW(TAG, "No characteristic found at service %s char %s", this->control_service_uuid_.to_string().c_str(),
         ^~~~~~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:90:18: error: invalid use of 'this' in non-member function
                  this->control_char_uuid_.to_string().c_str());
                  ^~~~
src/esphome/core/log.h:114:88: note: in definition of macro 'esph_log_w'
   esp_log_printf_(ESPHOME_LOG_LEVEL_WARN, tag, __LINE__, ESPHOME_LOG_FORMAT(format), ##__VA_ARGS__)
                                                                                        ^~~~~~~~~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:89:9: note: in expansion of macro 'ESP_LOGW'
         ESP_LOGW(TAG, "No characteristic found at service %s char %s", this->control_service_uuid_.to_string().c_str(),
         ^~~~~~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:93:7: error: invalid use of 'this' in non-member function
       this->control_handle_ = chr_control->handle;
       ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:95:7: error: invalid use of 'this' in non-member function
       this->set_timeout("desk_init", 5000, [this]() { this->read_value_(this->output_handle_); });
       ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:95:45: error: invalid use of 'this' in non-member function
       this->set_timeout("desk_init", 5000, [this]() { this->read_value_(this->output_handle_); });
                                             ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp: In lambda function:
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:95:55: error: 'this' was not captured for this lambda function
       this->set_timeout("desk_init", 5000, [this]() { this->read_value_(this->output_handle_); });
                                                       ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:95:73: error: 'this' was not captured for this lambda function
       this->set_timeout("desk_init", 5000, [this]() { this->read_value_(this->output_handle_); });
                                                                         ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp: In function 'void esphome::idasen_desk_controller::gattc_event_handler(esp_gattc_cb_event_t, esp_gatt_if_t, esp_ble_gattc_cb_param_t*)':
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:101:34: error: invalid use of 'this' in non-member function
       if (param->read.conn_id != this->parent()->conn_id)
                                  ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:107:33: error: invalid use of 'this' in non-member function
       if (param->read.handle == this->output_handle_) {
                                 ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:108:9: error: invalid use of 'this' in non-member function
         this->status_clear_warning();
         ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:109:9: error: invalid use of 'this' in non-member function
         this->publish_cover_state_(param->read.value, param->read.value_len);
         ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:115:36: error: invalid use of 'this' in non-member function
       if (param->notify.conn_id != this->parent()->conn_id || param->notify.handle != this->output_handle_)
                                    ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:115:87: error: invalid use of 'this' in non-member function
       if (param->notify.conn_id != this->parent()->conn_id || param->notify.handle != this->output_handle_)
                                                                                       ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:119:7: error: invalid use of 'this' in non-member function
       this->publish_cover_state_(param->notify.value, param->notify.value_len);
       ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:124:7: error: invalid use of 'this' in non-member function
       this->node_state = espbt::ClientState::ESTABLISHED;
       ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:124:26: error: 'espbt' has not been declared
       this->node_state = espbt::ClientState::ESTABLISHED;
                          ^~~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:126:9: error: invalid use of 'this' in non-member function
         this->notify_disable_ = false;
         ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp: At global scope:
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:136:6: error: 'IdasenDeskControllerComponent' has not been declared
 void IdasenDeskControllerComponent::write_value_(uint16_t handle, unsigned short value) {
      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp: In function 'void esphome::idasen_desk_controller::write_value_(uint16_t, short unsigned int)':
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:141:49: error: invalid use of 'this' in non-member function
   esp_err_t status = ::esp_ble_gattc_write_char(this->parent()->gattc_if, this->parent()->conn_id, handle, 2, data,
                                                 ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:141:75: error: invalid use of 'this' in non-member function
   esp_err_t status = ::esp_ble_gattc_write_char(this->parent()->gattc_if, this->parent()->conn_id, handle, 2, data,
                                                                           ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:145:5: error: invalid use of 'this' in non-member function
     this->status_set_warning();
     ^~~~
In file included from src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:2:
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:146:76: error: invalid use of 'this' in non-member function
     ESP_LOGW(TAG, "[%s] Error sending write request for cover, status=%d", this->get_name().c_str(), status);
                                                                            ^~~~
src/esphome/core/log.h:114:88: note: in definition of macro 'esph_log_w'
   esp_log_printf_(ESPHOME_LOG_LEVEL_WARN, tag, __LINE__, ESPHOME_LOG_FORMAT(format), ##__VA_ARGS__)
                                                                                        ^~~~~~~~~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:146:5: note: in expansion of macro 'ESP_LOGW'
     ESP_LOGW(TAG, "[%s] Error sending write request for cover, status=%d", this->get_name().c_str(), status);
     ^~~~~~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp: At global scope:
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:150:6: error: 'IdasenDeskControllerComponent' has not been declared
 void IdasenDeskControllerComponent::read_value_(uint16_t handle) {
      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp: In function 'void esphome::idasen_desk_controller::read_value_(uint16_t)':
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:152:31: error: invalid use of 'this' in non-member function
       esp_ble_gattc_read_char(this->parent()->gattc_if, this->parent()->conn_id, handle, ESP_GATT_AUTH_REQ_NONE);
                               ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:152:57: error: invalid use of 'this' in non-member function
       esp_ble_gattc_read_char(this->parent()->gattc_if, this->parent()->conn_id, handle, ESP_GATT_AUTH_REQ_NONE);
                                                         ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:154:5: error: invalid use of 'this' in non-member function
     this->status_set_warning();
     ^~~~
In file included from src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:2:
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:155:75: error: invalid use of 'this' in non-member function
     ESP_LOGW(TAG, "[%s] Error sending read request for cover, status=%d", this->get_name().c_str(), status_read);
                                                                           ^~~~
src/esphome/core/log.h:114:88: note: in definition of macro 'esph_log_w'
   esp_log_printf_(ESPHOME_LOG_LEVEL_WARN, tag, __LINE__, ESPHOME_LOG_FORMAT(format), ##__VA_ARGS__)
                                                                                        ^~~~~~~~~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:155:5: note: in expansion of macro 'ESP_LOGW'
     ESP_LOGW(TAG, "[%s] Error sending read request for cover, status=%d", this->get_name().c_str(), status_read);
     ^~~~~~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp: At global scope:
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:159:20: error: 'IdasenDeskControllerComponent' has not been declared
 cover::CoverTraits IdasenDeskControllerComponent::get_traits() {
                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:167:6: error: 'IdasenDeskControllerComponent' has not been declared
 void IdasenDeskControllerComponent::publish_cover_state_(uint8_t *value, uint16_t value_len) {
      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp: In function 'void esphome::idasen_desk_controller::publish_cover_state_(uint8_t*, uint16_t)':
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:176:5: error: invalid use of 'this' in non-member function
     this->current_operation = cover::COVER_OPERATION_IDLE;
     ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:177:14: error: invalid use of 'this' in non-member function
   } else if (this->position < position) {
              ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:178:5: error: invalid use of 'this' in non-member function
     this->current_operation = cover::COVER_OPERATION_OPENING;
     ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:179:14: error: invalid use of 'this' in non-member function
   } else if (this->position > position) {
              ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:180:5: error: invalid use of 'this' in non-member function
     this->current_operation = cover::COVER_OPERATION_CLOSING;
     ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:183:3: error: invalid use of 'this' in non-member function
   this->position = position;
   ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:184:3: error: invalid use of 'this' in non-member function
   this->publish_state(false);
   ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp: At global scope:
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:187:6: error: 'IdasenDeskControllerComponent' has not been declared
 void IdasenDeskControllerComponent::move_desk_() {
      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp: In function 'void esphome::idasen_desk_controller::move_desk_()':
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:188:7: error: invalid use of 'this' in non-member function
   if (this->notify_disable_) {
       ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:189:9: error: invalid use of 'this' in non-member function
     if (this->controlled_ || this->current_operation != cover::COVER_OPERATION_IDLE) {
         ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:189:30: error: invalid use of 'this' in non-member function
     if (this->controlled_ || this->current_operation != cover::COVER_OPERATION_IDLE) {
                              ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:190:7: error: invalid use of 'this' in non-member function
       this->read_value_(this->output_handle_);
       ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:190:25: error: invalid use of 'this' in non-member function
       this->read_value_(this->output_handle_);
                         ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:194:8: error: invalid use of 'this' in non-member function
   if (!this->controlled_) {
        ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:199:7: error: invalid use of 'this' in non-member function
   if (this->is_at_target_()) {
       ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:201:5: error: invalid use of 'this' in non-member function
     this->stop_move_();
     ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:205:7: error: invalid use of 'this' in non-member function
   if (this->notify_disable_) {
       ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:206:9: error: invalid use of 'this' in non-member function
     if (this->current_operation == cover::COVER_OPERATION_IDLE) {
         ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:207:7: error: invalid use of 'this' in non-member function
Compiling .pioenvs/office-desk-controller/src/esphome/components/socket/bsd_sockets_impl.o
       this->not_moving_loop_++;
       ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:208:11: error: invalid use of 'this' in non-member function
       if (this->not_moving_loop_ > 4) {
           ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:210:9: error: invalid use of 'this' in non-member function
         this->stop_move_();
         ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:213:7: error: invalid use of 'this' in non-member function
       this->not_moving_loop_ = 0;
       ^~~~
In file included from src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:2:
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:217:57: error: invalid use of 'this' in non-member function
   ESP_LOGD(TAG, "Update Desk - Move from %.0f to %.0f", this->position * 100, this->position_target_ * 100);
                                                         ^~~~
src/esphome/core/log.h:92:89: note: in definition of macro 'esph_log_d'
   esp_log_printf_(ESPHOME_LOG_LEVEL_DEBUG, tag, __LINE__, ESPHOME_LOG_FORMAT(format), ##__VA_ARGS__)
                                                                                         ^~~~~~~~~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:217:3: note: in expansion of macro 'ESP_LOGD'
   ESP_LOGD(TAG, "Update Desk - Move from %.0f to %.0f", this->position * 100, this->position_target_ * 100);
   ^~~~~~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:217:79: error: invalid use of 'this' in non-member function
   ESP_LOGD(TAG, "Update Desk - Move from %.0f to %.0f", this->position * 100, this->position_target_ * 100);
                                                                               ^~~~
src/esphome/core/log.h:92:89: note: in definition of macro 'esph_log_d'
   esp_log_printf_(ESPHOME_LOG_LEVEL_DEBUG, tag, __LINE__, ESPHOME_LOG_FORMAT(format), ##__VA_ARGS__)
                                                                                         ^~~~~~~~~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:217:3: note: in expansion of macro 'ESP_LOGD'
   ESP_LOGD(TAG, "Update Desk - Move from %.0f to %.0f", this->position * 100, this->position_target_ * 100);
   ^~~~~~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:218:3: error: invalid use of 'this' in non-member function
   this->move_torwards_();
   ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp: At global scope:
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:221:6: error: 'IdasenDeskControllerComponent' has not been declared
 void IdasenDeskControllerComponent::control(const cover::CoverCall &call) {
      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp: In function 'void esphome::idasen_desk_controller::control(const esphome::cover::CoverCall&)':
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:222:7: error: invalid use of 'this' in non-member function
   if (this->notify_disable_) {
       ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:223:5: error: invalid use of 'this' in non-member function
     this->read_value_(this->output_handle_);
     ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:223:23: error: invalid use of 'this' in non-member function
     this->read_value_(this->output_handle_);
                       ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:227:9: error: invalid use of 'this' in non-member function
     if (this->current_operation != cover::COVER_OPERATION_IDLE) {
         ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:228:7: error: invalid use of 'this' in non-member function
       this->stop_move_();
       ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:231:5: error: invalid use of 'this' in non-member function
     this->position_target_ = *call.get_position();
     ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:233:9: error: invalid use of 'this' in non-member function
     if (this->position == this->position_target_) {
         ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:233:27: error: invalid use of 'this' in non-member function
     if (this->position == this->position_target_) {
                           ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:237:9: error: invalid use of 'this' in non-member function
     if (this->position_target_ > this->position) {
         ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:237:34: error: invalid use of 'this' in non-member function
     if (this->position_target_ > this->position) {
                                  ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:238:7: error: invalid use of 'this' in non-member function
       this->current_operation = cover::COVER_OPERATION_OPENING;
       ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:240:7: error: invalid use of 'this' in non-member function
       this->current_operation = cover::COVER_OPERATION_CLOSING;
       ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:243:5: error: invalid use of 'this' in non-member function
     this->start_move_torwards_();
     ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:249:5: error: invalid use of 'this' in non-member function
     this->stop_move_();
     ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp: At global scope:
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:253:6: error: 'IdasenDeskControllerComponent' has not been declared
 void IdasenDeskControllerComponent::start_move_torwards_() {
      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp: In function 'void esphome::idasen_desk_controller::start_move_torwards_()':
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:254:3: error: invalid use of 'this' in non-member function
   this->controlled_ = true;
   ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:255:7: error: invalid use of 'this' in non-member function
   if (this->notify_disable_) {
       ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:256:5: error: invalid use of 'this' in non-member function
     this->not_moving_loop_ = 0;
     ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:258:16: error: invalid use of 'this' in non-member function
   if (false == this->use_only_up_down_command_) {
                ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:259:5: error: invalid use of 'this' in non-member function
     this->write_value_(this->control_handle_, 0xFE);
     ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:259:24: error: invalid use of 'this' in non-member function
     this->write_value_(this->control_handle_, 0xFE);
                        ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:260:5: error: invalid use of 'this' in non-member function
     this->write_value_(this->control_handle_, 0xFF);
     ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:260:24: error: invalid use of 'this' in non-member function
     this->write_value_(this->control_handle_, 0xFF);
                        ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp: At global scope:
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:264:6: error: 'IdasenDeskControllerComponent' has not been declared
 void IdasenDeskControllerComponent::move_torwards_() {
      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp: In function 'void esphome::idasen_desk_controller::move_torwards_()':
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:265:7: error: invalid use of 'this' in non-member function
   if (this->use_only_up_down_command_) {
       ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:266:9: error: invalid use of 'this' in non-member function
     if (this->current_operation == cover::COVER_OPERATION_OPENING) {
         ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:267:7: error: invalid use of 'this' in non-member function
       this->write_value_(this->control_handle_, 0x47);
       ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:267:26: error: invalid use of 'this' in non-member function
       this->write_value_(this->control_handle_, 0x47);
                          ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:268:16: error: invalid use of 'this' in non-member function
     } else if (this->current_operation == cover::COVER_OPERATION_CLOSING) {
                ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:269:7: error: invalid use of 'this' in non-member function
       this->write_value_(this->control_handle_, 0x46);
       ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:269:26: error: invalid use of 'this' in non-member function
       this->write_value_(this->control_handle_, 0x46);
                          ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:272:5: error: invalid use of 'this' in non-member function
     this->write_value_(this->input_handle_, transform_position_to_height(this->position_target_));
     ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:272:24: error: invalid use of 'this' in non-member function
     this->write_value_(this->input_handle_, transform_position_to_height(this->position_target_));
                        ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:272:74: error: invalid use of 'this' in non-member function
     this->write_value_(this->input_handle_, transform_position_to_height(this->position_target_));
                                                                          ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp: At global scope:
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:276:6: error: 'IdasenDeskControllerComponent' has not been declared
 void IdasenDeskControllerComponent::stop_move_() {
      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp: In function 'void esphome::idasen_desk_controller::stop_move_()':
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:277:3: error: invalid use of 'this' in non-member function
   this->write_value_(this->control_handle_, 0xFF);
   ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:277:22: error: invalid use of 'this' in non-member function
   this->write_value_(this->control_handle_, 0xFF);
                      ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:278:16: error: invalid use of 'this' in non-member function
   if (false == this->use_only_up_down_command_) {
                ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:279:5: error: invalid use of 'this' in non-member function
     this->write_value_(this->input_handle_, 0x8001);
     ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:279:24: error: invalid use of 'this' in non-member function
     this->write_value_(this->input_handle_, 0x8001);
                        ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:282:3: error: invalid use of 'this' in non-member function
   this->current_operation = cover::COVER_OPERATION_IDLE;
   ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:283:3: error: invalid use of 'this' in non-member function
   this->controlled_ = false;
   ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp: At global scope:
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:286:6: error: 'IdasenDeskControllerComponent' has not been declared
 bool IdasenDeskControllerComponent::is_at_target_() const {
      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:286:53: error: non-member function 'bool esphome::idasen_desk_controller::is_at_target_()' cannot have cv-qualifier
 bool IdasenDeskControllerComponent::is_at_target_() const {
                                                     ^~~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp: In function 'bool esphome::idasen_desk_controller::is_at_target_()':
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:287:11: error: invalid use of 'this' in non-member function
   switch (this->current_operation) {
           ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:289:14: error: invalid use of 'this' in non-member function
       return this->position >= this->position_target_;
              ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:289:32: error: invalid use of 'this' in non-member function
       return this->position >= this->position_target_;
                                ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:291:14: error: invalid use of 'this' in non-member function
       return this->position <= this->position_target_;
              ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:291:32: error: invalid use of 'this' in non-member function
       return this->position <= this->position_target_;
                                ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:293:11: error: invalid use of 'this' in non-member function
       if (this->notify_disable_) {
           ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:294:17: error: invalid use of 'this' in non-member function
         return !this->controlled_;
                 ^~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp: At global scope:
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:301:1: error: 'espbt' does not name a type
 espbt::ESPBTUUID uuid128_from_string(std::string value) {
 ^~~~~
src/esphome/components/idasen_desk_controller/idasen_desk_controller.cpp:14:14: warning: 'float esphome::idasen_desk_controller::transform_position_to_height(float)' defined but not used [-Wunused-function]
 static float transform_position_to_height(float position) { return position * DESK_MAX_HEIGHT; }
              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
*** [.pioenvs/office-desk-controller/src/esphome/components/idasen_desk_controller/idasen_desk_controller.o] Error 1
========================= [FAILED] Took 10.72 seconds =========================

[Wemos ESP32 Mini] A working ESPHome yaml example with some adjustments. (Ikea Idasen Liank DL110)

Hi Guys, I had quite some trouble setting this up. So I'll share my finaly working ESPHome config with you.

Adding this to my config was the crucial part for it to work:

esp32:
  board: esp32dev
  framework:
    type: arduino

Further I adjusted the height calculation to be corret for my desk. The divider of the raw_height has been changed from 10 to 5.118110236.

    lambda: |-
      uint16_t raw_height = ((uint16_t)x[1] << 8) | x[0];
      unsigned short height_mm = raw_height / 5.118110236;

      return (float) height_mm / 10;

I'm using a lot of substitiutions and additional wifi settings in this example, feel free to remove them and / or replace them by the ESPHome defaults as shown in the linked examples.

# Office Desk Bridge

# Variables
substitutions:
  device_name:    !secret node_26_device_name
  friendly_name:  !secret node_26_friendly_name
  hardware_id:    !secret node_26_hardware_id
  static_ip:      !secret node_26_static_ip
  ssid:           !secret not_ssid
  ssid_pw:        !secret not_password
  ap_pw:          !secret ap_password 
  gateway:        !secret not_gateway
  subnet:         !secret not_subnet
  ntp:            !secret ntp

wifi:
  manual_ip:
    static_ip: $static_ip
    gateway: $gateway
    subnet: $subnet
  networks:
  - ssid: $ssid
    password: $ssid_pw
  # If wifi can not connect reboot with in xx hours  
  reboot_timeout: 0s
  fast_connect: true

  #Access Point
  ap:
    ssid: AP_${device_name}
    password: $ap_pw

#Captive Portal when ap is on
captive_portal:

#Web Server for manual access 
web_server:

#Log to ESPHome
logger:
  #Disable logging to serial
  baud_rate: 0  

#Homeassitant API
api:
  reboot_timeout: 0s

#ESPHome OTA
ota:

esphome: 
  name: "${device_name}"
  name_add_mac_suffix: false


esp32:
  board: esp32dev
  framework:
    type: arduino

external_components:
  - source: github://j5lien/[email protected]

globals:
  - id: ble_client_connected
    type: bool
    initial_value: 'false'

esp32_ble_tracker:

ble_client:
 # Replace with the desk bluetooth mac address
  - mac_address: "CE:41:99:2E:BA:4D"
    id: idasen_desk
    on_connect:
      then:
        - lambda: |-
            id(ble_client_connected) = true;
        - delay: 5s
        - lambda: |-
            id(desk_height).update();
            id(desk_speed).update();
    on_disconnect:
      then:
        - lambda: |-
            id(ble_client_connected) = false;

idasen_desk_controller:
    ble_client_id: idasen_desk
    only_up_down_command: false

cover:
  - platform: idasen_desk_controller
    name: "${friendly_name} Desk"

sensor:
  # Desk Height Sensor
  - platform: ble_client
    type: characteristic
    ble_client_id: idasen_desk
    id: desk_height
    name: 'Desk Height'
    service_uuid: '99fa0020-338a-1024-8a49-009c0215f78a'
    characteristic_uuid: '99fa0021-338a-1024-8a49-009c0215f78a'
    icon: 'mdi:arrow-up-down'
    unit_of_measurement: 'cm'
    accuracy_decimals: 1
    update_interval: never
    notify: true
    lambda: |-
      uint16_t raw_height = ((uint16_t)x[1] << 8) | x[0];
      unsigned short height_mm = raw_height / 5.118110236;

      return (float) height_mm / 10;

  # Desk Speed Sensor
  - platform: ble_client
    type: characteristic
    ble_client_id: idasen_desk
    id: desk_speed
    name: 'Desk Speed'
    service_uuid: '99fa0020-338a-1024-8a49-009c0215f78a'
    characteristic_uuid: '99fa0021-338a-1024-8a49-009c0215f78a'
    icon: 'mdi:speedometer'
    unit_of_measurement: 'cm/min' # I'm not sure this unit is correct
    accuracy_decimals: 0
    update_interval: never
    notify: true
    lambda: |-
      uint16_t raw_speed = ((uint16_t)x[3] << 8) | x[2];
      return raw_speed / 100;

binary_sensor:
  # Desk Bluetooth Connection Status
  - platform: template
    name: 'Desk Connection'
    id: desk_connection
    lambda: 'return id(ble_client_connected);'

  # Desk Moving Status
  - platform: template
    name: 'Desk Moving'
    id: desk_moving
    lambda: 'return id(desk_speed).state > 0;'


# Example configuration entry
switch:
  - platform: restart
    name: "${friendly_name} Restart"

Add offset to desk height sensor

Thanks again for your work on this component, @j5lien.

One idea specifically for the sensor.desk_height - I'm currently using a template sensor to add an offset (61cm) to that value to get the actual height of the table and use this throughout HA. As a potential future feature, it would be cool if the sensor.desk_height had a config value for an offset, so that the value of the esphome sensor has the right value right away.

Not a priority, just an idea :)

Incompatibility with esp32_ble_tracker

It seems like there is an incompatibility with esp32_ble_tracker, which causes theESP32 to reboot every couple minutes.

Here's the log output:

[23:44:39][W][esp32_ble_tracker:164]: ESP-IDF BLE scan never terminated, rebooting to restore BLE stack...
[23:44:39][I][app:132]: Forcing a reboot...

The only other integration I am using is Xiaomi Mijia BLE

Disconnections & not fully responding to requests

Hi,

After working perfectly for weeks, my desk has disconnections issues and isn't fully responding to requests.
When I request to change the position the desk moves just partially and stops moving.

It looks like the desk des disconnected every few minutes :

Logbook

I'm using the last version ESPHome 2023.2.4

Thanks in advance for any advice

The log of my node:

[14:41:48][D][binary_sensor:036]: 'Desk Moving': Sending state OFF
WARNING desk.local: Connection error occurred: 
Traceback (most recent call last):
  File "/usr/local/lib/python3.9/dist-packages/aioesphomeapi/connection.py", line 520, in send_message_await_response_complex
    await fut
asyncio.exceptions.CancelledError

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.9/dist-packages/aioesphomeapi/connection.py", line 520, in send_message_await_response_complex
    await fut
  File "/usr/local/lib/python3.9/dist-packages/async_timeout/__init__.py", line 129, in __aexit__
    self._do_exit(exc_type)
  File "/usr/local/lib/python3.9/dist-packages/async_timeout/__init__.py", line 212, in _do_exit
    raise asyncio.TimeoutError
asyncio.exceptions.TimeoutError

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/local/lib/python3.9/dist-packages/aioesphomeapi/connection.py", line 303, in _keep_alive_loop
    await self._ping()
  File "/usr/local/lib/python3.9/dist-packages/aioesphomeapi/connection.py", line 628, in _ping
    await self.send_message_await_response(PingRequest(), PingResponse)
  File "/usr/local/lib/python3.9/dist-packages/aioesphomeapi/connection.py", line 537, in send_message_await_response
    res = await self.send_message_await_response_complex(
  File "/usr/local/lib/python3.9/dist-packages/aioesphomeapi/connection.py", line 522, in send_message_await_response_complex
    raise TimeoutAPIError(
aioesphomeapi.core.TimeoutAPIError: Timeout waiting for response for <class 'api_pb2.PingRequest'> after 10.0s
INFO Disconnected from ESPHome API for desk.local
WARNING Disconnected from API

Desk move down only and doesn't move up

In Home assistant the Up button is grey (disabled).

esphome:
  name: idasen

esp32:
  board: esp32dev
  framework:
    type: arduino

# Enable logging
logger:

# Enable Home Assistant API
api:

ota:
  password: "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Idasen Fallback Hotspot"
    password: "ym47kfFy6eEl"

external_components:
  - source: github://j5lien/[email protected]

esp32_ble_tracker:

ble_client:
  - mac_address: "D9:B7:84:82:99:0F"
    id: idasen_desk

idasen_desk_controller:
  ble_client_id: idasen_desk
  only_up_down_command: false

cover:
  - platform: idasen_desk_controller
    name: "Desk"


INFO Reading configuration /config/esphome/idasen.yaml...
INFO Generating C++ source...
INFO Compiling app...
Processing idasen (board: esp32dev; framework: arduino; platform: platformio/espressif32 @ 3.5.0)
--------------------------------------------------------------------------------
HARDWARE: ESP32 240MHz, 320KB RAM, 4MB Flash
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
Dependency Graph
|-- <WiFi> 1.0
|-- <ESPmDNS> 1.0
|-- <Update> 1.0
Compiling /data/idasen/.pioenvs/idasen/src/main.cpp.o
Linking /data/idasen/.pioenvs/idasen/firmware.elf
RAM:   [==        ]  16.2% (used 53008 bytes from 327680 bytes)
Flash: [========  ]  79.4% (used 1456298 bytes from 1835008 bytes)
Building /data/idasen/.pioenvs/idasen/firmware.bin
esp32_create_combined_bin(["/data/idasen/.pioenvs/idasen/firmware.bin"], ["/data/idasen/.pioenvs/idasen/firmware.elf"])
Wrote 0x173910 bytes to file /data/idasen/.pioenvs/idasen/firmware-factory.bin, ready to flash to offset 0x0
========================= [SUCCESS] Took 13.20 seconds =========================
INFO Successfully compiled program.
esptool.py v3.2
Serial port /dev/ttyUSB0
Connecting.........................
Chip is ESP32-D0WDQ6 (revision 1)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
Crystal is 40MHz
MAC: 58:bf:25:93:5d:ec
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 460800
Changed.
Configuring flash size...
Auto-detected Flash size: 4MB
Flash will be erased from 0x00010000 to 0x00173fff...
Flash will be erased from 0x00001000 to 0x00005fff...
Flash will be erased from 0x00008000 to 0x00008fff...
Flash will be erased from 0x0000e000 to 0x0000ffff...
Compressed 1456400 bytes to 875531...
Wrote 1456400 bytes (875531 compressed) at 0x00010000 in 20.7 seconds (effective 564.1 kbit/s)...
Hash of data verified.
Compressed 17104 bytes to 11191...
Wrote 17104 bytes (11191 compressed) at 0x00001000 in 0.6 seconds (effective 221.8 kbit/s)...
Hash of data verified.
Compressed 3072 bytes to 144...
Wrote 3072 bytes (144 compressed) at 0x00008000 in 0.1 seconds (effective 332.4 kbit/s)...
Hash of data verified.
Compressed 8192 bytes to 47...
Wrote 8192 bytes (47 compressed) at 0x0000e000 in 0.1 seconds (effective 454.9 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...
INFO Successfully uploaded program.
INFO Starting log output from /dev/ttyUSB0 with baud rate 115200
[14:44:54][I][logger:214]: Log initialized
[14:44:54][C][ota:461]: There have been 9 suspected unsuccessful boot attempts.
[14:44:54][D][esp32.preferences:114]: Saving preferences to flash...
[14:44:54][I][app:029]: Running through setup()...
[14:44:55][D][esp32_ble_tracker:217]: Starting scan...
[14:44:55][C][wifi:037]: Setting up WiFi...
[14:44:55][D][wifi:373]: Starting scan...
[14:44:56][D][esp32_ble_tracker:723]: Found device FC:59:9D:EE:EF:78 RSSI=-86
[14:44:56][D][esp32_ble_tracker:744]:   Address Type: RANDOM
[14:44:56][D][ble_client:047]: Found device at MAC address [D9:B7:84:82:99:0F]
[14:44:56][I][ble_client:085]: Attempting BLE connection to d9:b7:84:82:99:0f
[14:44:56][I][idasen_desk_controller:042]: [Desk] Connected successfully!
[14:44:58][I][ble_client:161]: Service UUID: 0x1800
[14:44:58][I][ble_client:162]:   start_handle: 0x1  end_handle: 0x9
[14:44:58][I][ble_client:347]:  characteristic 0x2A00, handle 0x3, properties 0xa
[14:44:58][I][ble_client:347]:  characteristic 0x2A01, handle 0x5, properties 0x2
[14:44:58][I][ble_client:347]:  characteristic 0x2A04, handle 0x7, properties 0x2
[14:44:58][I][ble_client:347]:  characteristic 0x2AA6, handle 0x9, properties 0x2
[14:44:58][I][ble_client:161]: Service UUID: 0x1801
[14:44:58][I][ble_client:162]:   start_handle: 0xa  end_handle: 0xd
[14:44:58][I][ble_client:347]:  characteristic 0x2A05, handle 0xc, properties 0x20
[14:44:58][I][ble_client:161]: Service UUID: 99FA0001-338A-1024-8A49-009C0215F78A
[14:44:58][I][ble_client:162]:   start_handle: 0xe  end_handle: 0x13
[14:44:58][I][ble_client:347]:  characteristic 99FA0002-338A-1024-8A49-009C0215F78A, handle 0x10, properties 0xc
[14:44:58][I][ble_client:347]:  characteristic 99FA0003-338A-1024-8A49-009C0215F78A, handle 0x12, properties 0x12
[14:44:58][I][ble_client:161]: Service UUID: 99FA0010-338A-1024-8A49-009C0215F78A
[14:44:58][I][ble_client:162]:   start_handle: 0x14  end_handle: 0x17
[14:44:58][I][ble_client:347]:  characteristic 99FA0011-338A-1024-8A49-009C0215F78A, handle 0x16, properties 0x1e
[14:44:58][I][ble_client:161]: Service UUID: 99FA0020-338A-1024-8A49-009C0215F78A
[14:44:58][I][ble_client:162]:   start_handle: 0x18  end_handle: 0x1f
[14:44:58][I][ble_client:347]:  characteristic 99FA0021-338A-1024-8A49-009C0215F78A, handle 0x1a, properties 0x12
[14:44:58][I][ble_client:347]:  characteristic 99FA0029-338A-1024-8A49-009C0215F78A, handle 0x1d, properties 0x2
[14:44:58][I][ble_client:347]:  characteristic 99FA002A-338A-1024-8A49-009C0215F78A, handle 0x1f, properties 0x2
[14:44:58][I][ble_client:161]: Service UUID: 99FA0030-338A-1024-8A49-009C0215F78A
[14:44:58][I][ble_client:162]:   start_handle: 0x20  end_handle: 0xffff
[14:44:58][I][ble_client:347]:  characteristic 99FA0031-338A-1024-8A49-009C0215F78A, handle 0x22, properties 0xc
[14:44:58][D][esp32_ble_tracker:217]: Starting scan...
[14:44:58][D][wifi:388]: Found networks:
[14:44:58][I][wifi:432]: - 'XXXXXXXX-XXXX' (60:CE:86:BF:7A:47) [redacted]โ–‚โ–„โ–†โ–ˆ
[14:44:58][D][wifi:433]:     Channel: 13
[14:44:58][D][wifi:434]:     RSSI: -44 dB
[14:44:58][D][wifi:437]: - '826 The Gates'[redacted] (02:AA:3F:AA:22:22) [redacted]โ–‚โ–„โ–†โ–ˆ
[14:44:58][D][wifi:437]: - ''[redacted] (02:AA:3F:AA:22:21) [redacted]โ–‚โ–„โ–†โ–ˆ
[14:44:58][D][wifi:437]: - ''[redacted] (96:9A:4A:94:C3:2B) [redacted]โ–‚โ–„โ–†โ–ˆ
[14:44:58][D][wifi:437]: - 'VM9892009'[redacted] (90:9A:4A:94:C3:2B) [redacted]โ–‚โ–„โ–†โ–ˆ
[14:44:58][D][wifi:437]: - 'Horizon Wi-Free'[redacted] (AE:F8:CC:08:52:15) [redacted]โ–‚โ–„โ–†โ–ˆ
[14:44:58][D][wifi:437]: - ''[redacted] (02:5F:67:E9:DE:C8) [redacted]โ–‚โ–„โ–†โ–ˆ
[14:44:58][D][wifi:437]: - 'TP-Link_79B8'[redacted] (00:5F:67:D9:DE:C8) [redacted]โ–‚โ–„โ–†โ–ˆ
[14:44:58][I][wifi:248]: WiFi Connecting to 'XXXXXXXX-XXXX'...
[14:44:59][D][esp32_ble_tracker:723]: Found device 57:20:94:25:5A:40 RSSI=-94
[14:44:59][D][esp32_ble_tracker:744]:   Address Type: RANDOM
[14:44:59][D][esp32_ble_tracker:748]:   TX Power: 2
[14:45:00][D][esp32_ble_tracker:723]: Found device C1:69:99:B1:40:17 RSSI=-91
[14:45:00][D][esp32_ble_tracker:744]:   Address Type: RANDOM
[14:45:01][D][esp32_ble_tracker:723]: Found device 6D:BF:B2:BA:F8:8D RSSI=-78
[14:45:01][D][esp32_ble_tracker:744]:   Address Type: RANDOM
[14:45:01][D][esp32_ble_tracker:748]:   TX Power: 2
[14:45:01][I][wifi:505]: WiFi Connected!
[14:45:01][C][wifi:353]:   Local MAC: 58:BF:25:93:5D:EC
[14:45:01][C][wifi:354]:   SSID: 'XXXXXXXX-XXXX'[redacted]
[14:45:01][C][wifi:355]:   IP Address: 192.168.1.16
[14:45:01][C][wifi:357]:   BSSID: 60:CE:86:BF:7A:47[redacted]
[14:45:01][C][wifi:358]:   Hostname: 'idasen'
[14:45:01][C][wifi:360]:   Signal strength: -43 dB โ–‚โ–„โ–†โ–ˆ
[14:45:01][C][wifi:364]:   Channel: 13
[14:45:01][C][wifi:365]:   Subnet: 255.255.255.0
[14:45:01][C][wifi:366]:   Gateway: 192.168.1.1
[14:45:01][C][wifi:367]:   DNS1: 192.168.1.1
[14:45:01][C][wifi:368]:   DNS2: 0.0.0.0
[14:45:01][D][wifi:514]: Disabling AP...
[14:45:01][C][ota:085]: Over-The-Air Updates:
[14:45:01][C][ota:086]:   Address: idasen.local:3232
[14:45:01][C][ota:089]:   Using Password.
[14:45:01][W][ota:095]: Last Boot was an unhandled reset, will proceed to safe mode in 1 restarts
[14:45:01][C][api:025]: Setting up Home Assistant API server...
[14:45:01][C][idasen_desk_controller:019]: Setting up Idasen Desk Controller...
[14:45:01][I][app:062]: setup() finished successfully!
[14:45:01][I][app:102]: ESPHome version 2022.2.6 compiled on Mar  7 2022, 14:44:12
[14:45:01][C][wifi:491]: WiFi:
[14:45:01][C][wifi:353]:   Local MAC: 58:BF:25:93:5D:EC
[14:45:01][C][wifi:354]:   SSID: 'XXXXXXXX-XXXX'[redacted]
[14:45:01][C][wifi:355]:   IP Address: 192.168.1.16
[14:45:01][C][wifi:357]:   BSSID: 60:CE:86:BF:7A:47[redacted]
[14:45:01][C][wifi:358]:   Hostname: 'idasen'
[14:45:01][C][wifi:360]:   Signal strength: -44 dB โ–‚โ–„โ–†โ–ˆ
[14:45:01][C][wifi:364]:   Channel: 13
[14:45:01][C][wifi:365]:   Subnet: 255.255.255.0
[14:45:01][C][wifi:366]:   Gateway: 192.168.1.1
[14:45:01][C][wifi:367]:   DNS1: 192.168.1.1
[14:45:01][C][wifi:368]:   DNS2: 0.0.0.0
[14:45:01][C][logger:233]: Logger:
[14:45:01][C][logger:234]:   Level: DEBUG
[14:45:01][C][logger:235]:   Log Baud Rate: 115200
[14:45:01][C][logger:236]:   Hardware UART: UART0
[14:45:01][C][esp32_ble_tracker:709]: BLE Tracker:
[14:45:01][C][esp32_ble_tracker:710]:   Scan Duration: 300 s
[14:45:01][C][esp32_ble_tracker:711]:   Scan Interval: 320.0 ms
[14:45:01][C][esp32_ble_tracker:712]:   Scan Window: 30.0 ms
[14:45:01][C][esp32_ble_tracker:713]:   Scan Type: ACTIVE
[14:45:01][C][ble_client:035]: BLE Client:
[14:45:01][C][ble_client:036]:   Address: d9:b7:84:82:99:0f
[14:45:01][C][mdns:084]: mDNS:
[14:45:01][C][mdns:085]:   Hostname: idasen
[14:45:01][C][ota:085]: Over-The-Air Updates:
[14:45:01][C][ota:086]:   Address: idasen.local:3232
[14:45:01][C][ota:089]:   Using Password.
[14:45:01][W][ota:095]: Last Boot was an unhandled reset, will proceed to safe mode in 1 restarts
[14:45:01][C][api:138]: API Server:
[14:45:01][C][api:139]:   Address: idasen.local:6053
[14:45:01][C][api:143]:   Using noise encryption: NO
[14:45:01][C][idasen_desk_controller:024]: Idasen Desk Controller:
[14:45:02][C][idasen_desk_controller:025]:   MAC address        : d9:b7:84:82:99:0f
[14:45:02][C][idasen_desk_controller:026]:   Notifications      : enable
[14:45:02][C][idasen_desk_controller:027]:   Desk 'Desk'
[14:45:02][D][esp32_ble_tracker:723]: Found device 42:60:82:ED:EC:DB RSSI=-94
[14:45:02][D][esp32_ble_tracker:744]:   Address Type: RANDOM
[14:45:02][D][esp32_ble_tracker:748]:   TX Power: 2
[14:45:02][D][api:102]: Accepted ::FFFF:C0A8:114
[14:45:02][D][api.connection:826]: Home Assistant 2022.3.1 (::FFFF:C0A8:114): Connected successfully
[14:45:03][D][cover:172]: 'Desk' - Publishing:
[14:45:03][D][cover:175]:   Position: 100%
[14:45:03][D][cover:188]:   Current Operation: OPENING
[14:45:05][D][cover:172]: 'Desk' - Publishing:
[14:45:05][D][cover:175]:   Position: 100%
[14:45:05][D][cover:188]:   Current Operation: OPENING
[14:45:08][D][esp32_ble_tracker:723]: Found device DD:5D:45:67:89:DD RSSI=-84
[14:45:08][D][esp32_ble_tracker:744]:   Address Type: RANDOM
[14:45:11][D][cover:172]: 'Desk' - Publishing:
[14:45:11][D][cover:175]:   Position: 0%
[14:45:11][D][cover:188]:   Current Operation: CLOSING
[14:45:11][D][cover:172]: 'Desk' - Publishing:
[14:45:11][D][cover:175]:   Position: 100%
[14:45:11][D][cover:188]:   Current Operation: OPENING
[14:45:11][D][cover:172]: 'Desk' - Publishing:
[14:45:11][D][cover:175]:   Position: 100%
[14:45:11][D][cover:188]:   Current Operation: OPENING
[14:45:11][D][cover:172]: 'Desk' - Publishing:
[14:45:11][D][cover:175]:   Position: 100%
[14:45:11][D][cover:188]:   Current Operation: OPENING
[14:45:11][D][cover:172]: 'Desk' - Publishing:
[14:45:11][D][cover:175]:   Position: 100%
[14:45:11][D][cover:188]:   Current Operation: OPENING
[14:45:16][D][esp32_ble_tracker:723]: Found device 64:E0:03:CC:5A:80 RSSI=-77
[14:45:16][D][esp32_ble_tracker:744]:   Address Type: PUBLIC

Screenshot from 2022-03-07 14-55-51

Desk not moving / Error reading char at handle 26, status=5

Hi and many thanks for the great work that has been done here.

You guys got some suggestions how to fix this?

INFO Reading configuration /config/esphome/node_26_office_desk_bridge.yaml...
INFO Starting log output from 10.25.30.56 using esphome API
INFO Successfully connected to 10.25.30.56
[10:22:20][I][app:102]: ESPHome version 2022.3.1 compiled on Jul 29 2022, 10:14:30
[10:22:20][C][wifi:491]: WiFi:
[10:22:20][C][wifi:353]:   Local MAC: 24:6F:28:22:8E:94
[10:22:20][C][wifi:354]:   SSID: [redacted]
[10:22:20][C][wifi:355]:   IP Address: 10.25.30.56
[10:22:20][C][wifi:357]:   BSSID: [redacted]
[10:22:20][C][wifi:358]:   Hostname: 'office-desk-bridge'
[10:22:20][C][wifi:360]:   Signal strength: -77 dB โ–‚โ–„โ–†โ–ˆ
[10:22:20][C][wifi:364]:   Channel: 11
[10:22:20][C][wifi:365]:   Subnet: 255.255.255.0
[10:22:21][C][esp32_ble_tracker:709]: BLE Tracker:
[10:22:21][C][esp32_ble_tracker:710]:   Scan Duration: 300 s
[10:22:21][C][esp32_ble_tracker:711]:   Scan Interval: 320.0 ms
[10:22:21][C][esp32_ble_tracker:712]:   Scan Window: 30.0 ms
[10:22:21][C][esp32_ble_tracker:713]:   Scan Type: ACTIVE
[10:22:21][C][ble_client:035]: BLE Client:
[10:22:21][C][ble_client:036]:   Address: ce:41:99:2e:ba:4d
[10:22:21][C][captive_portal:088]: Captive Portal:
[10:22:21][C][web_server:129]: Web Server:
[10:22:21][C][web_server:130]:   Address: 10.25.30.56:80
[10:22:21][C][mdns:084]: mDNS:
[10:22:21][C][mdns:085]:   Hostname: office-desk-bridge
[10:22:21][C][ota:085]: Over-The-Air Updates:
[10:22:21][C][ota:086]:   Address: 10.25.30.56:3232
[10:22:21][W][ota:095]: Last Boot was an unhandled reset, will proceed to safe mode in 8 restarts
[10:22:21][C][api:138]: API Server:
[10:22:21][C][api:139]:   Address: 10.25.30.56:6053
[10:22:21][C][api:143]:   Using noise encryption: NO
[10:22:21][C][idasen_desk_controller:024]: Idasen Desk Controller:
[10:22:21][C][idasen_desk_controller:025]:   MAC address        : ce:41:99:2e:ba:4d
[10:22:28][D][cover:078]: 'Office Desk' - Setting
[10:22:28][D][cover:086]:   Position: 0%
[10:22:28][W][idasen_desk_controller:155]: [Office Desk] Error sending read request for cover, status=-1
[10:22:28][W][idasen_desk_controller:146]: [Office Desk] Error sending write request for cover, status=-1
[10:22:28][W][idasen_desk_controller:146]: [Office Desk] Error sending write request for cover, status=-1
[10:22:28][W][idasen_desk_controller:155]: [Office Desk] Error sending read request for cover, status=-1
[10:22:28][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 0
[10:22:28][W][idasen_desk_controller:146]: [Office Desk] Error sending write request for cover, status=-1
[10:22:28][W][idasen_desk_controller:155]: [Office Desk] Error sending read request for cover, status=-1
[10:22:28][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 0
[10:22:28][W][idasen_desk_controller:146]: [Office Desk] Error sending write request for cover, status=-1
[10:22:28][W][idasen_desk_controller:155]: [Office Desk] Error sending read request for cover, status=-1
[10:22:28][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 0
[10:22:28][W][idasen_desk_controller:146]: [Office Desk] Error sending write request for cover, status=-1
[10:22:29][W][idasen_desk_controller:155]: [Office Desk] Error sending read request for cover, status=-1
[10:22:29][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 0
[10:22:29][W][idasen_desk_controller:146]: [Office Desk] Error sending write request for cover, status=-1
[10:22:29][W][idasen_desk_controller:155]: [Office Desk] Error sending read request for cover, status=-1
[10:22:29][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 0
[10:22:29][W][idasen_desk_controller:146]: [Office Desk] Error sending write request for cover, status=-1
[10:22:29][W][idasen_desk_controller:155]: [Office Desk] Error sending read request for cover, status=-1
[10:22:29][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 0
[10:22:29][W][idasen_desk_controller:146]: [Office Desk] Error sending write request for cover, status=-1
[10:22:29][W][idasen_desk_controller:155]: [Office Desk] Error sending read request for cover, status=-1
[10:22:29][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 0
[10:22:29][W][idasen_desk_controller:155]: [Office Desk] Error sending read request for cover, status=-1
[10:22:29][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 0
[10:22:29][W][idasen_desk_controller:146]: [Office Desk] Error sending write request for cover, status=-1
[10:22:30][W][idasen_desk_controller:155]: [Office Desk] Error sending read request for cover, status=-1
[10:22:30][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 0
[10:22:30][W][idasen_desk_controller:146]: [Office Desk] Error sending write request for cover, status=-1
[10:22:30][W][idasen_desk_controller:155]: [Office Desk] Error sending read request for cover, status=-1
[10:22:30][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 0
[10:22:30][W][idasen_desk_controller:146]: [Office Desk] Error sending write request for cover, status=-1
[10:22:30][W][idasen_desk_controller:155]: [Office Desk] Error sending read request for cover, status=-1
[10:22:30][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 0
[10:22:30][W][idasen_desk_controller:146]: [Office Desk] Error sending write request for cover, status=-1
[10:22:30][W][idasen_desk_controller:155]: [Office Desk] Error sending read request for cover, status=-1
[10:22:30][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 0
[10:22:30][W][idasen_desk_controller:146]: [Office Desk] Error sending write request for cover, status=-1
[10:22:31][W][idasen_desk_controller:155]: [Office Desk] Error sending read request for cover, status=-1
[10:22:31][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 0
[10:22:31][W][idasen_desk_controller:155]: [Office Desk] Error sending read request for cover, status=-1
[10:22:31][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 0
[10:22:31][W][idasen_desk_controller:146]: [Office Desk] Error sending write request for cover, status=-1
[10:22:31][W][idasen_desk_controller:155]: [Office Desk] Error sending read request for cover, status=-1
[10:22:31][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 0
[10:22:31][W][idasen_desk_controller:146]: [Office Desk] Error sending write request for cover, status=-1
[10:22:31][W][idasen_desk_controller:155]: [Office Desk] Error sending read request for cover, status=-1
[10:22:31][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 0
[10:22:31][W][idasen_desk_controller:146]: [Office Desk] Error sending write request for cover, status=-1
[10:22:31][W][idasen_desk_controller:155]: [Office Desk] Error sending read request for cover, status=-1
[10:22:31][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 0
[10:22:31][W][idasen_desk_controller:146]: [Office Desk] Error sending write request for cover, status=-1
[10:22:32][W][idasen_desk_controller:155]: [Office Desk] Error sending read request for cover, status=-1
[10:22:32][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 0
[10:22:32][W][idasen_desk_controller:146]: [Office Desk] Error sending write request for cover, status=-1
[10:22:32][W][idasen_desk_controller:155]: [Office Desk] Error sending read request for cover, status=-1
[10:22:32][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 0
[10:22:32][W][idasen_desk_controller:146]: [Office Desk] Error sending write request for cover, status=-1
[10:22:32][W][idasen_desk_controller:155]: [Office Desk] Error sending read request for cover, status=-1
[10:22:32][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 0
[10:22:32][W][idasen_desk_controller:146]: [Office Desk] Error sending write request for cover, status=-1
[10:22:32][W][idasen_desk_controller:155]: [Office Desk] Error sending read request for cover, status=-1
[10:22:32][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 0
[10:22:32][W][idasen_desk_controller:155]: [Office Desk] Error sending read request for cover, status=-1
[10:22:33][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 0
[10:22:33][W][idasen_desk_controller:155]: [Office Desk] Error sending read request for cover, status=-1
[10:22:33][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 0
[10:22:33][W][idasen_desk_controller:146]: [Office Desk] Error sending write request for cover, status=-1
[10:22:33][W][idasen_desk_controller:155]: [Office Desk] Error sending read request for cover, status=-1
[10:22:33][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 0
[10:22:33][W][idasen_desk_controller:146]: [Office Desk] Error sending write request for cover, status=-1
[10:22:33][W][idasen_desk_controller:155]: [Office Desk] Error sending read request for cover, status=-1
[10:22:33][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 0
[10:22:33][W][idasen_desk_controller:146]: [Office Desk] Error sending write request for cover, status=-1
[10:22:34][W][idasen_desk_controller:155]: [Office Desk] Error sending read request for cover, status=-1
[10:22:34][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 0
[10:22:34][W][idasen_desk_controller:146]: [Office Desk] Error sending write request for cover, status=-1
[10:22:34][W][idasen_desk_controller:155]: [Office Desk] Error sending read request for cover, status=-1
[10:22:34][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 0
[10:22:34][W][idasen_desk_controller:146]: [Office Desk] Error sending write request for cover, status=-1
[10:22:34][W][idasen_desk_controller:155]: [Office Desk] Error sending read request for cover, status=-1
[10:22:34][W][idasen_desk_controller:155]: [Office Desk] Error sending read request for cover, status=-1
[10:22:34][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 0
[10:22:34][W][idasen_desk_controller:146]: [Office Desk] Error sending write request for cover, status=-1
[10:22:34][W][idasen_desk_controller:155]: [Office Desk] Error sending read request for cover, status=-1
[10:22:35][W][idasen_desk_controller:155]: [Office Desk] Error sending read request for cover, status=-1
[10:22:35][W][idasen_desk_controller:146]: [Office Desk] Error sending write request for cover, status=-1
[10:22:35][W][idasen_desk_controller:155]: [Office Desk] Error sending read request for cover, status=-1
[10:22:35][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 0
[10:22:35][W][idasen_desk_controller:146]: [Office Desk] Error sending write request for cover, status=-1
[10:22:35][W][idasen_desk_controller:155]: [Office Desk] Error sending read request for cover, status=-1
[10:22:35][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 0
[10:22:35][W][idasen_desk_controller:146]: [Office Desk] Error sending write request for cover, status=-1
[10:22:35][W][idasen_desk_controller:155]: [Office Desk] Error sending read request for cover, status=-1
[10:22:35][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 0
[10:22:35][W][idasen_desk_controller:155]: [Office Desk] Error sending read request for cover, status=-1
[10:22:35][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 0
[10:22:35][W][idasen_desk_controller:146]: [Office Desk] Error sending write request for cover, status=-1
[10:22:36][W][idasen_desk_controller:155]: [Office Desk] Error sending read request for cover, status=-1
[10:22:36][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 0
[10:22:36][W][idasen_desk_controller:146]: [Office Desk] Error sending write request for cover, status=-1
[10:22:36][W][idasen_desk_controller:155]: [Office Desk] Error sending read request for cover, status=-1
[10:22:36][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 0
[10:22:36][W][idasen_desk_controller:146]: [Office Desk] Error sending write request for cover, status=-1
[10:22:36][W][idasen_desk_controller:155]: [Office Desk] Error sending read request for cover, status=-1
[10:22:36][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 0
[10:22:36][W][idasen_desk_controller:146]: [Office Desk] Error sending write request for cover, status=-1
[10:22:36][W][idasen_desk_controller:155]: [Office Desk] Error sending read request for cover, status=-1
[10:22:36][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 0
[10:22:36][W][idasen_desk_controller:155]: [Office Desk] Error sending read request for cover, status=-1
[10:22:36][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 0
[10:22:36][W][idasen_desk_controller:146]: [Office Desk] Error sending write request for cover, status=-1
[10:22:37][W][idasen_desk_controller:155]: [Office Desk] Error sending read request for cover, status=-1
[10:22:37][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 0
[10:22:37][W][idasen_desk_controller:146]: [Office Desk] Error sending write request for cover, status=-1
[10:22:37][W][idasen_desk_controller:155]: [Office Desk] Error sending read request for cover, status=-1
[10:22:37][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 0
[10:22:37][W][idasen_desk_controller:146]: [Office Desk] Error sending write request for cover, status=-1
[10:22:37][W][idasen_desk_controller:155]: [Office Desk] Error sending read request for cover, status=-1
[10:22:37][W][idasen_desk_controller:155]: [Office Desk] Error sending read request for cover, status=-1
[10:22:37][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 0
[10:22:37][W][idasen_desk_controller:146]: [Office Desk] Error sending write request for cover, status=-1
[10:22:38][W][idasen_desk_controller:155]: [Office Desk] Error sending read request for cover, status=-1
[10:22:38][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 0
[10:22:38][W][idasen_desk_controller:146]: [Office Desk] Error sending write request for cover, status=-1
[10:22:38][W][idasen_desk_controller:155]: [Office Desk] Error sending read request for cover, status=-1
[10:22:38][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 0
[10:22:38][W][idasen_desk_controller:146]: [Office Desk] Error sending write request for cover, status=-1
[10:22:38][W][idasen_desk_controller:155]: [Office Desk] Error sending read request for cover, status=-1
[10:22:38][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 0
[10:22:38][W][idasen_desk_controller:146]: [Office Desk] Error sending write request for cover, status=-1
[10:22:38][W][idasen_desk_controller:155]: [Office Desk] Error sending read request for cover, status=-1
[10:22:38][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 0
[10:22:38][W][idasen_desk_controller:146]: [Office Desk] Error sending write request for cover, status=-1
[10:22:38][W][idasen_desk_controller:155]: [Office Desk] Error sending read request for cover, status=-1
[10:22:38][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 0
[10:22:38][W][idasen_desk_controller:146]: [Office Desk] Error sending write request for cover, status=-1
[10:22:39][W][idasen_desk_controller:155]: [Office Desk] Error sending read request for cover, status=-1
[10:22:39][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 0
[10:22:39][W][idasen_desk_controller:146]: [Office Desk] Error sending write request for cover, status=-1
[10:22:39][W][idasen_desk_controller:155]: [Office Desk] Error sending read request for cover, status=-1
[10:22:39][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 0
[10:22:39][W][idasen_desk_controller:146]: [Office Desk] Error sending write request for cover, status=-1
[10:22:39][W][idasen_desk_controller:155]: [Office Desk] Error sending read request for cover, status=-1
[10:22:39][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 0
[10:22:39][W][idasen_desk_controller:146]: [Office Desk] Error sending write request for cover, status=-1
[10:22:39][W][idasen_desk_controller:155]: [Office Desk] Error sending read request for cover, status=-1
[10:22:39][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 0
[10:22:39][W][idasen_desk_controller:146]: [Office Desk] Error sending write request for cover, status=-1
[10:22:39][W][idasen_desk_controller:155]: [Office Desk] Error sending read request for cover, status=-1
[10:22:39][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 0
[10:22:39][W][idasen_desk_controller:146]: [Office Desk] Error sending write request for cover, status=-1
[10:22:40][W][idasen_desk_controller:155]: [Office Desk] Error sending read request for cover, status=-1
[10:22:40][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 0
[10:22:40][W][idasen_desk_controller:146]: [Office Desk] Error sending write request for cover, status=-1
[10:22:40][W][idasen_desk_controller:155]: [Office Desk] Error sending read request for cover, status=-1
[10:22:40][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 0
[10:22:40][W][idasen_desk_controller:146]: [Office Desk] Error sending write request for cover, status=-1
[10:22:40][W][idasen_desk_controller:155]: [Office Desk] Error sending read request for cover, status=-1
[10:22:40][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 0
[10:22:40][W][idasen_desk_controller:146]: [Office Desk] Error sending write request for cover, status=-1
[10:22:40][W][idasen_desk_controller:155]: [Office Desk] Error sending read request for cover, status=-1
[10:22:40][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 0
[10:22:40][W][idasen_desk_controller:155]: [Office Desk] Error sending read request for cover, status=-1
[10:22:40][D][idasen_desk_controller:217]: Update Desk - Move from 100 to 0
[10:22:40][W][idasen_desk_controller:146]: [Office Desk] Error sending write request for cover, status=-1
INFO 10.25.30.56: Error while reading incoming messages: Error while reading data: [Errno 104] Connection reset by peer
INFO Disconnected from ESPHome API for 10.25.30.56
WARNING Disconnected from API
INFO 10.25.30.56: Ping Failed: Error while reading data: [Errno 104] Connection reset by peer
INFO Successfully connected to 10.25.30.56
[10:22:51][D][api:102]: Accepted ::FFFF:A19:A02
[10:22:51][D][api.connection:827]: Home Assistant 2022.7.5 (::FFFF:A19:A02): Connected successfully
[10:23:13][W][idasen_desk_controller:049]: [Office Desk] Disconnected!
[10:23:13][W][ble_client:117]: connect to ce:41:99:2e:ba:4d failed, status=133
[10:23:13][D][esp32_ble_tracker:217]: Starting scan...
[10:23:13][D][esp32_ble_tracker:723]: Found device 0F:05:DD:88:5E:1B RSSI=-80
[10:23:13][D][esp32_ble_tracker:744]:   Address Type: RANDOM
[10:23:13][D][esp32_ble_tracker:723]: Found device 00:29:6F:ED:71:5A RSSI=-70
[10:23:13][D][esp32_ble_tracker:744]:   Address Type: RANDOM
[10:23:13][D][esp32_ble_tracker:723]: Found device 0F:78:BE:D4:C5:4A RSSI=-80
[10:23:13][D][esp32_ble_tracker:744]:   Address Type: RANDOM
[10:23:13][D][esp32_ble_tracker:723]: Found device 42:89:A2:8B:F9:53 RSSI=-70
[10:23:13][D][esp32_ble_tracker:744]:   Address Type: RANDOM
[10:23:13][D][esp32_ble_tracker:748]:   TX Power: 2
[10:23:14][D][esp32_ble_tracker:723]: Found device 2F:53:EF:E6:5D:FE RSSI=-83
[10:23:14][D][esp32_ble_tracker:744]:   Address Type: RANDOM
[10:23:14][D][esp32_ble_tracker:723]: Found device 68:D7:9A:26:BE:54 RSSI=-83
[10:23:14][D][esp32_ble_tracker:744]:   Address Type: PUBLIC
[10:23:14][D][ble_client:047]: Found device at MAC address [CE:41:99:2E:BA:4D]
[10:23:14][I][ble_client:085]: Attempting BLE connection to ce:41:99:2e:ba:4d
[10:23:14][D][ble_client_lambda:046]: Connected to BLE device
[10:23:14][I][idasen_desk_controller:042]: [Office Desk] Connected successfully!
[10:23:16][I][ble_client:161]: Service UUID: 0x1800
[10:23:16][I][ble_client:162]:   start_handle: 0x1  end_handle: 0x9
[10:23:16][I][ble_client:347]:  characteristic 0x2A00, handle 0x3, properties 0xa
[10:23:16][I][ble_client:347]:  characteristic 0x2A01, handle 0x5, properties 0x2
[10:23:16][I][ble_client:347]:  characteristic 0x2A04, handle 0x7, properties 0x2
[10:23:16][I][ble_client:347]:  characteristic 0x2AA6, handle 0x9, properties 0x2
[10:23:16][I][ble_client:161]: Service UUID: 0x1801
[10:23:16][I][ble_client:162]:   start_handle: 0xa  end_handle: 0xd
[10:23:16][I][ble_client:347]:  characteristic 0x2A05, handle 0xc, properties 0x20
[10:23:16][I][ble_client:161]: Service UUID: 99FA0001-338A-1024-8A49-009C0215F78A
[10:23:16][I][ble_client:162]:   start_handle: 0xe  end_handle: 0x13
[10:23:16][D][esp32_ble_tracker:723]: Found device CE:41:99:2E:BA:4D RSSI=-67
[10:23:16][D][esp32_ble_tracker:723]: Found device 25:4F:16:09:78:7D RSSI=-50
[10:23:16][D][esp32_ble_tracker:744]:   Address Type: RANDOM
[10:23:17][D][esp32_ble_tracker:723]: Found device 0F:78:BE:D4:C5:4A RSSI=-80
[10:23:17][D][esp32_ble_tracker:744]:   Address Type: RANDOM
[10:23:17][D][esp32_ble_tracker:723]: Found device 42:89:A2:8B:F9:53 RSSI=-79
[10:23:17][D][esp32_ble_tracker:744]:   Address Type: RANDOM
[10:23:17][D][esp32_ble_tracker:748]:   TX Power: 2
[10:23:17][D][esp32_ble_tracker:723]: Found device 26:9C:01:15:42:F7 RSSI=-84
[10:23:17][D][esp32_ble_tracker:744]:   Address Type: RANDOM
[10:23:18][D][esp32_ble_tracker:723]: Found device 4C:2D:8F:29:6F:51 RSSI=-81
[10:23:18][D][esp32_ble_tracker:744]:   Address Type: RANDOM
[10:23:18][D][esp32_ble_tracker:748]:   TX Power: 2
[10:23:19][D][esp32_ble_tracker:723]: Found device 12:99:E1:B4:C4:1F RSSI=-51
[10:23:19][D][esp32_ble_tracker:744]:   Address Type: RANDOM
[10:23:19][D][esp32_ble_tracker:723]: Found device 0F:05:DD:88:5E:1B RSSI=-89
[10:23:19][D][esp32_ble_tracker:744]:   Address Type: RANDOM
[10:23:21][W][idasen_desk_controller:104]: Error reading char at handle 26, status=5
[10:23:22][D][esp32_ble_tracker:723]: Found device 7D:CB:64:65:62:85 RSSI=-75
[10:23:22][D][esp32_ble_tracker:744]:   Address Type: RANDOM
[10:23:22][D][esp32_ble_tracker:748]:   TX Power: 2
[10:23:23][D][esp32_ble_tracker:723]: Found device 3F:A2:8C:B0:2C:C9 RSSI=-72
[10:23:23][D][esp32_ble_tracker:744]:   Address Type: RANDOM
[10:23:23][D][esp32_ble_tracker:723]: Found device 00:29:6F:ED:71:5A RSSI=-83
[10:23:23][D][esp32_ble_tracker:744]:   Address Type: RANDOM
[10:23:25][D][esp32_ble_tracker:723]: Found device 2F:53:EF:E6:5D:FE RSSI=-96
[10:23:25][D][esp32_ble_tracker:744]:   Address Type: RANDOM
[10:23:25][D][esp32_ble_tracker:723]: Found device E6:5C:38:30:9F:26 RSSI=-76
[10:23:25][D][esp32_ble_tracker:744]:   Address Type: RANDOM
[10:23:25][D][esp32_ble_tracker:723]: Found device 68:D7:9A:26:BE:54 RSSI=-82
[10:23:25][D][esp32_ble_tracker:744]:   Address Type: PUBLIC
[10:23:25][D][esp32_ble_tracker:723]: Found device 5D:B6:17:21:B9:6D RSSI=-86
[10:23:25][D][esp32_ble_tracker:744]:   Address Type: RANDOM
[10:23:25][D][esp32_ble_tracker:748]:   TX Power: 2
[10:23:26][D][esp32_ble_tracker:723]: Found device 40:CB:C0:BF:E4:3E RSSI=-73
[10:23:26][D][esp32_ble_tracker:744]:   Address Type: PUBLIC
[10:23:26][D][esp32_ble_tracker:748]:   TX Power: 2
[10:23:28][D][esp32_ble_tracker:723]: Found device 7A:14:24:A6:DC:B5 RSSI=-96
[10:23:28][D][esp32_ble_tracker:744]:   Address Type: RANDOM
[10:23:28][D][esp32_ble_tracker:748]:   TX Power: 2
[10:23:29][D][esp32_ble_tracker:723]: Found device 4F:AE:F4:3F:76:48 RSSI=-56
[10:23:29][D][esp32_ble_tracker:744]:   Address Type: RANDOM
[10:23:29][D][esp32_ble_tracker:748]:   TX Power: 2
[10:23:30][D][esp32_ble_tracker:723]: Found device A4:C1:38:BB:3C:AE RSSI=-65
[10:23:30][D][esp32_ble_tracker:744]:   Address Type: PUBLIC
[10:23:30][D][esp32_ble_tracker:746]:   Name: 'atc_office'

My YAML:

# Desk Bridge

# Variables
substitutions:
  device_name:    !secret node_26_device_name
  friendly_name:  !secret node_26_friendly_name
  hardware_id:    !secret node_26_hardware_id
  static_ip:      !secret node_26_static_ip
  ssid:           !secret not_ssid
  ssid_pw:        !secret not_password
  ap_pw:          !secret ap_password 
  gateway:        !secret not_gateway
  subnet:         !secret not_subnet
  ntp:            !secret ntp

wifi:
  <<: !include includes/network_manual_ip.yaml

packages:
  wifi:   !include includes/network.yaml

esphome: 
  name: "${device_name}"
  name_add_mac_suffix: false
  platform: ESP32
  board: esp32dev
  build_path: "./.build/${device_name}/"

external_components:
  - source: github://j5lien/[email protected]

esp32_ble_tracker:

globals:
  # To store the Desk Connection Status
  - id: ble_client_connected
    type: bool
    initial_value: 'false'

ble_client:
  - mac_address: "CE:41:99:2E:BA:4D"
    id: idasen_desk
    on_connect:
      then:
        - lambda: |-
            ESP_LOGD("ble_client_lambda", "Connected to BLE device");

idasen_desk_controller:
  ble_client_id: idasen_desk
  only_up_down_command: false

cover:
  - platform: idasen_desk_controller
    name: "${friendly_name}"

Error sending write request for cover, status=259

Hello,

I am intermittently getting this error in my logs when I try to move the desk. Is anyone else experiencing this? Is there a way to fix it? Any ideas, what it might be?

[19:32:29][W][idasen_desk_controller:146]: [Desk] Error sending write request for cover, status=259
[19:32:29][D][idasen_desk_controller:217]: Update Desk - Move from 80 to 22
[19:32:29][W][idasen_desk_controller:146]: [Desk] Error sending write request for cover, status=259
[19:32:30][D][idasen_desk_controller:217]: Update Desk - Move from 80 to 22
[19:32:30][W][idasen_desk_controller:146]: [Desk] Error sending write request for cover, status=259
[19:32:30][D][idasen_desk_controller:217]: Update Desk - Move from 80 to 22
[19:32:30][W][idasen_desk_controller:146]: [Desk] Error sending write request for cover, status=259
[19:32:30][D][idasen_desk_controller:217]: Update Desk - Move from 80 to 22
[19:32:30][W][idasen_desk_controller:146]: [Desk] Error sending write request for cover, status=259
[19:32:30][D][idasen_desk_controller:217]: Update Desk - Move from 80 to 22
[19:32:30][W][idasen_desk_controller:146]: [Desk] Error sending write request for cover, status=259

cover.stop_cover service not supported

I set up the component exactly like in the readme and it is working almost flawlessly. However it is missing the option to stop the movement when already set in motion. In the readme it shows a stop button in between the up and down buttons of the cover component, which is missing in my case.

image

Also when using the Linak Desk Card, clicking the manual up or down arrows always drives the desk to the lowest or highest position, and this error pops up at the bottom of the screen:

image

Feature Request: More precise positioning

Hi, at first: Thank you very much for this great ESPHome custom component! :)

Before switching to this Idasen desk controller I used one which run as a python script on my workstation (rhyst/idasen-controller). This one showed the position in millimeter instead of centimeter - that way the positioning in much more precise (maybe not down to the millimeter but at least to half a centimeter).

It would be amazing if this controller could use millimeters or use float values with one decimal for centimeters.

Not Moving and disconnecting

Hi, I tried every configuration and read all the issue but still doesn't work
Every time I need to push pairing button on the desk to seen the green light (connected) on the card on home assistant
After that when I try to move the desktop this is the log

[esp32_ble_tracker:180]: Starting scan...
[ble_client:045]: Found device at MAC address [my desk mac address]
[ble_client:083]: Attempting BLE connection to [my desk mac address]
[ble_sensor:033]: [Desk Height] Connected successfully!
[ble_sensor:033]: [Desk Speed] Connected successfully!
[binary_sensor:036]: 'Desk Connection': Sending state ON
[ble_client:159]: Service UUID: 0x1800
[ble_client:160]:   start_handle: 0x1  end_handle: 0x9
[ble_client:339]:  characteristic 0x2A00, handle 0x3, properties 0xa
[ble_client:339]:  characteristic 0x2A01, handle 0x5, properties 0x2
[ble_client:339]:  characteristic 0x2A04, handle 0x7, properties 0x2
[ble_client:339]:  characteristic 0x2AA6, handle 0x9, properties 0x2
[ble_client:159]: Service UUID: 0x1801
[ble_client:160]:   start_handle: 0xa  end_handle: 0xd
[ble_client:339]:  characteristic 0x2A05, handle 0xc, properties 0x20
[ble_client:159]: Service UUID: 99FA0001338A10-248A-4900-9C02-15F78A
[ble_client:160]:   start_handle: 0xe  end_handle: 0x13
[ble_client:339]:  characteristic 99FA0002338A10-248A-4900-9C02-15F78A, handle 0x10, properties 0xc
[ble_client:339]:  characteristic 99FA0003338A10-248A-4900-9C02-15F78A, handle 0x12, properties 0x12
[ble_client:159]: Service UUID: 99FA0010338A10-248A-4900-9C02-15F78A
[ble_client:160]:   start_handle: 0x14  end_handle: 0x17
[ble_client:339]:  characteristic 99FA0011338A10-248A-4900-9C02-15F78A, handle 0x16, properties 0x1e
[ble_client:159]: Service UUID: 99FA0020338A10-248A-4900-9C02-15F78A
[ble_client:160]:   start_handle: 0x18  end_handle: 0x1f
[ble_client:339]:  characteristic 99FA0021338A10-248A-4900-9C02-15F78A, handle 0x1a, properties 0x12
[ble_client:339]:  characteristic 99FA0029338A10-248A-4900-9C02-15F78A, handle 0x1d, properties 0x2
[ble_client:339]:  characteristic 99FA002A338A10-248A-4900-9C02-15F78A, handle 0x1f, properties 0x2
[ble_client:159]: Service UUID: 99FA0030338A10-248A-4900-9C02-15F78A
[ble_client:160]:   start_handle: 0x20  end_handle: 0xffff
[ble_client:339]:  characteristic 99FA0031338A10-248A-4900-9C02-15F78A, handle 0x22, properties 0xc
[esp32_ble_tracker:180]: Starting scan...
[ble_client:170]: No descriptor found for notify of handle 0x1a

Here my configuration

esphome:
  name: esp32deb2
  platform: ESP32
  board: esp32dev

esp32_ble_tracker:

globals:
  # To store the Desk Connection Status
  - id: ble_client_connected
    type: bool
    initial_value: 'false'

ble_client:
  - mac_address: "My desk mac address"
    id: idasen_desk
    on_connect:
      then:
        # Update the Desk Connection Status
        - lambda: |-
            id(ble_client_connected) = true;
        - delay: 5s
        # Update desk height and speed sensors after bluetooth is connected
        - lambda: |-
            id(desk_height).update();
            id(desk_speed).update();
    on_disconnect:
      then:
        # Update the Desk Connection Status
        - lambda: |-
            id(ble_client_connected) = false;

sensor:
  # Desk Height Sensor
  - platform: ble_client
    ble_client_id: idasen_desk
    id: desk_height
    name: 'Desk Height'
    service_uuid: '99fa0020-338a-1024-8a49-009c0215f78a'
    characteristic_uuid: '99fa0021-338a-1024-8a49-009c0215f78a'
    icon: 'mdi:arrow-up-down'
    unit_of_measurement: 'cm'
    accuracy_decimals: 1
    update_interval: never
    notify: true
    lambda: |-
      uint16_t raw_height = ((uint16_t)x[1] << 8) | x[0];
      unsigned short height_mm = raw_height / 10;

      return (float) height_mm / 10;

  # Desk Speed Sensor
  - platform: ble_client
    ble_client_id: idasen_desk
    id: desk_speed
    name: 'Desk Speed'
    service_uuid: '99fa0020-338a-1024-8a49-009c0215f78a'
    characteristic_uuid: '99fa0021-338a-1024-8a49-009c0215f78a'
    icon: 'mdi:speedometer'
    unit_of_measurement: 'cm/min' # I'm not sure this unit is correct
    accuracy_decimals: 0
    update_interval: never
    notify: true
    lambda: |-
      uint16_t raw_speed = ((uint16_t)x[3] << 8) | x[2];
      return raw_speed / 100;

binary_sensor:
  # Desk Bluetooth Connection Status
  - platform: template
    name: 'Desk Connection'
    id: desk_connection
    lambda: 'return id(ble_client_connected);'

  # Desk Moving Status
  - platform: template
    name: 'Desk Moving'
    id: desk_moving
    lambda: 'return id(desk_speed).state > 0;'



# Enable logging
logger:

# Enable Home Assistant API
api:

ota:
  password: "e9ec71a7e3c7ee62f43657bcf891d980"

wifi:
  ssid: "my ssid"
  password: "my psw"
  fast_connect: true

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Esp32Deb2 Fallback Hotspot"
    password: "H8L6h0RhHT01"

captive_portal:

Connection problems solved

Hi, a little hint you might want to add to the troubleshooting section:
I often had connection problems with my Wemos ESP32 Mini, probably because Wifi and Bluetooth share the antenna.
Now I recently started using WT32-ETH01 connected via ethernet and have had no problems since.

No height / moving sensor updates

The height and moving sensors don't update their values in Home Assistant. The height sensor always shows 14cm and the moving sensor "not moving" - everything else seems to work perfectly fine.

My config is exactly the example code from README.md (exept the names) and my log doesn't show anything weird:

ESPHome Log
[21:29:07][C][idasen_desk_controller:096]: Idasen Desk Controller:
[21:29:07][C][idasen_desk_controller:097]:   Mac address: XX:XX:XX:XX:XX:XX
[21:29:07][C][idasen_desk_controller:098]:   Desk height 'AZ Desk Workstation Height'
[21:29:07][C][idasen_desk_controller:098]:     Unit of Measurement: 'cm'
[21:29:07][C][idasen_desk_controller:098]:     Accuracy Decimals: 0
[21:29:07][C][idasen_desk_controller:098]:     Icon: 'mdi:arrow-up-down'
[21:29:07][C][idasen_desk_controller:099]:   Desk moving 'AZ Desk Workstation Moving'
[21:29:07][C][idasen_desk_controller:099]:     Device Class: 'moving'
[21:29:07][C][idasen_desk_controller:100]:   Desk connection 'AZ Desk Workstation Connection'
[21:29:07][C][idasen_desk_controller:100]:     Device Class: 'connectivity'
[21:29:07][C][idasen_desk_controller:101]:   Desk 'AZ Desk Workstation'
[21:29:07][C][idasen_desk_controller:109]: Start scanning devices...
[21:29:07][C][idasen_desk_controller:052]: BLE Device found: Name: Desk Caro, Address: XXXXXX, txPower: -8
[21:29:07][C][idasen_desk_controller:052]: BLE Device found: Name: , Address: 192.168.XX.XX, manufacturer data: 4c001005471c7e6b36, txPower: 12
[21:29:07][C][idasen_desk_controller:052]: BLE Device found: Name: Desk Nico, Address: 192.168.XX.XX, txPower: -8



[21:40:46][D][cover:072]: 'AZ Desk Workstation' - Setting
[21:40:46][D][cover:080]:   Position: 0%
[21:40:46][D][idasen_desk_controller:180]: Cover control - START - position 0.000000 - target 0 - current 53
[21:40:46][D][idasen_desk_controller:209]: Update Desk - Move from 53 to 0
[21:40:46][D][cover:072]: 'AZ Desk Workstation' - Setting
[21:40:46][D][cover:076]:   Command: STOP
[21:40:46][D][idasen_desk_controller:191]: Cover control - STOP
[21:40:49][D][cover:072]: 'AZ Desk Workstation' - Setting
[21:40:49][D][cover:080]:   Position: 0%
[21:40:49][D][idasen_desk_controller:180]: Cover control - START - position 0.000000 - target 0 - current 53
[21:40:49][D][cover:072]: 'AZ Desk Workstation' - Setting
[21:40:49][D][cover:076]:   Command: STOP
[21:40:49][D][idasen_desk_controller:191]: Cover control - STOP
[21:40:49][D][cover:072]: 'AZ Desk Workstation' - Setting
[21:40:49][D][cover:080]:   Position: 0%
[21:40:49][D][idasen_desk_controller:180]: Cover control - START - position 0.000000 - target 0 - current 53
[21:40:50][D][idasen_desk_controller:209]: Update Desk - Move from 53 to 0
[21:40:50][D][idasen_desk_controller:209]: Update Desk - Move from 53 to 0
[21:40:50][D][idasen_desk_controller:209]: Update Desk - Move from 53 to 0
[21:40:50][D][idasen_desk_controller:209]: Update Desk - Move from 53 to 0
[21:40:50][D][idasen_desk_controller:209]: Update Desk - Move from 53 to 0
[21:40:50][D][idasen_desk_controller:209]: Update Desk - Move from 52 to 0
[21:40:50][D][idasen_desk_controller:209]: Update Desk - Move from 52 to 0
[21:40:51][D][idasen_desk_controller:209]: Update Desk - Move from 51 to 0
[21:40:51][D][idasen_desk_controller:209]: Update Desk - Move from 51 to 0
[21:40:51][D][idasen_desk_controller:209]: Update Desk - Move from 50 to 0
[21:40:51][D][idasen_desk_controller:209]: Update Desk - Move from 50 to 0
[21:40:51][D][idasen_desk_controller:209]: Update Desk - Move from 49 to 0
[21:40:51][D][cover:072]: 'AZ Desk Workstation' - Setting
[21:40:51][D][cover:076]:   Command: STOP
[21:40:51][D][idasen_desk_controller:191]: Cover control - STOP
[21:40:52][D][cover:072]: 'AZ Desk Workstation' - Setting
[21:40:52][D][cover:080]:   Position: 100%
[21:40:52][D][idasen_desk_controller:180]: Cover control - START - position 1.000000 - target 65 - current 48
[21:40:52][D][idasen_desk_controller:209]: Update Desk - Move from 48 to 65
[21:40:52][D][idasen_desk_controller:209]: Update Desk - Move from 48 to 65
[21:40:53][D][idasen_desk_controller:209]: Update Desk - Move from 48 to 65
[21:40:53][D][idasen_desk_controller:209]: Update Desk - Move from 48 to 65
[21:40:53][D][idasen_desk_controller:209]: Update Desk - Move from 49 to 65
[21:40:53][D][idasen_desk_controller:209]: Update Desk - Move from 49 to 65
[21:40:53][D][idasen_desk_controller:209]: Update Desk - Move from 49 to 65
[21:40:53][D][idasen_desk_controller:209]: Update Desk - Move from 49 to 65
[21:40:53][D][idasen_desk_controller:209]: Update Desk - Move from 50 to 65
[21:40:54][D][idasen_desk_controller:209]: Update Desk - Move from 50 to 65
[21:40:54][D][idasen_desk_controller:209]: Update Desk - Move from 51 to 65
[21:40:54][D][idasen_desk_controller:209]: Update Desk - Move from 51 to 65
[21:40:54][D][idasen_desk_controller:209]: Update Desk - Move from 51 to 65
[21:40:54][D][idasen_desk_controller:209]: Update Desk - Move from 52 to 65
[21:40:54][D][idasen_desk_controller:209]: Update Desk - Move from 52 to 65
[21:40:55][D][idasen_desk_controller:209]: Update Desk - Move from 53 to 65
[21:40:55][D][idasen_desk_controller:209]: Update Desk - Move from 53 to 65
[21:40:55][D][idasen_desk_controller:209]: Update Desk - Move from 54 to 65
[21:40:55][D][idasen_desk_controller:209]: Update Desk - Move from 54 to 65
[21:40:55][D][idasen_desk_controller:209]: Update Desk - Move from 54 to 65
[21:40:55][D][idasen_desk_controller:209]: Update Desk - Move from 55 to 65
[21:40:55][D][idasen_desk_controller:209]: Update Desk - Move from 55 to 65
[21:40:56][D][idasen_desk_controller:209]: Update Desk - Move from 56 to 65
[21:40:56][D][idasen_desk_controller:209]: Update Desk - Move from 56 to 65
[21:40:56][D][idasen_desk_controller:209]: Update Desk - Move from 56 to 65
[21:40:56][D][cover:072]: 'AZ Desk Workstation' - Setting
[21:40:56][D][cover:076]:   Command: STOP
[21:40:56][D][idasen_desk_controller:191]: Cover control - STOP
[21:41:03][D][cover:072]: 'AZ Desk Workstation' - Setting
[21:41:03][D][cover:080]:   Position: 0%
[21:41:03][D][idasen_desk_controller:180]: Cover control - START - position 0.000000 - target 0 - current 57
[21:41:04][D][idasen_desk_controller:209]: Update Desk - Move from 57 to 0
[21:41:04][D][idasen_desk_controller:209]: Update Desk - Move from 57 to 0
[21:41:04][D][idasen_desk_controller:209]: Update Desk - Move from 57 to 0
[21:41:04][D][idasen_desk_controller:209]: Update Desk - Move from 57 to 0
[21:41:04][D][idasen_desk_controller:209]: Update Desk - Move from 57 to 0
[21:41:04][D][idasen_desk_controller:209]: Update Desk - Move from 56 to 0
[21:41:04][D][idasen_desk_controller:209]: Update Desk - Move from 56 to 0
[21:41:05][D][idasen_desk_controller:209]: Update Desk - Move from 56 to 0
[21:41:05][D][idasen_desk_controller:209]: Update Desk - Move from 55 to 0
[21:41:05][D][cover:072]: 'AZ Desk Workstation' - Setting
[21:41:05][D][cover:076]:   Command: STOP
[21:41:05][D][idasen_desk_controller:191]: Cover control - STOP
[21:41:35][D][cover:072]: 'AZ Desk Workstation' - Setting
[21:41:35][D][cover:080]:   Position: 0%
[21:41:35][D][idasen_desk_controller:180]: Cover control - START - position 0.000000 - target 0 - current 54
[21:41:35][D][idasen_desk_controller:209]: Update Desk - Move from 54 to 0
[21:41:35][D][idasen_desk_controller:209]: Update Desk - Move from 54 to 0
[21:41:35][D][idasen_desk_controller:209]: Update Desk - Move from 54 to 0
[21:41:35][D][idasen_desk_controller:209]: Update Desk - Move from 54 to 0
[21:41:35][D][idasen_desk_controller:209]: Update Desk - Move from 54 to 0
[21:41:35][D][idasen_desk_controller:209]: Update Desk - Move from 54 to 0
[21:41:36][D][idasen_desk_controller:209]: Update Desk - Move from 53 to 0
[21:41:36][D][idasen_desk_controller:209]: Update Desk - Move from 53 to 0
[21:41:36][D][idasen_desk_controller:209]: Update Desk - Move from 52 to 0
[21:41:36][D][idasen_desk_controller:209]: Update Desk - Move from 52 to 0
[21:41:36][D][idasen_desk_controller:209]: Update Desk - Move from 51 to 0
[21:41:36][D][idasen_desk_controller:209]: Update Desk - Move from 50 to 0
[21:41:37][D][idasen_desk_controller:209]: Update Desk - Move from 50 to 0
[21:41:37][D][idasen_desk_controller:209]: Update Desk - Move from 49 to 0
[21:41:37][D][cover:072]: 'AZ Desk Workstation' - Setting
[21:41:37][D][cover:076]:   Command: STOP
[21:41:37][D][idasen_desk_controller:191]: Cover control - STOP
[21:41:39][D][cover:072]: 'AZ Desk Workstation' - Setting
[21:41:39][D][cover:080]:   Position: 71%
[21:41:39][D][idasen_desk_controller:180]: Cover control - START - position 0.710000 - target 46 - current 48
[21:41:39][D][idasen_desk_controller:209]: Update Desk - Move from 48 to 46
[21:41:39][D][idasen_desk_controller:209]: Update Desk - Move from 48 to 46
[21:41:39][D][idasen_desk_controller:209]: Update Desk - Move from 48 to 46
[21:41:39][D][idasen_desk_controller:209]: Update Desk - Move from 48 to 46
[21:41:39][D][idasen_desk_controller:209]: Update Desk - Move from 48 to 46
[21:41:39][D][idasen_desk_controller:209]: Update Desk - Move from 48 to 46
[21:41:40][D][idasen_desk_controller:209]: Update Desk - Move from 48 to 46
[21:41:40][D][idasen_desk_controller:209]: Update Desk - Move from 48 to 46
[21:41:40][D][idasen_desk_controller:209]: Update Desk - Move from 47 to 46
[21:41:40][D][idasen_desk_controller:209]: Update Desk - Move from 47 to 46
[21:41:40][D][idasen_desk_controller:204]: Update Desk - target reached
[21:41:47][D][cover:072]: 'AZ Desk Workstation' - Setting
[21:41:47][D][cover:080]:   Position: 22%
[21:41:47][D][idasen_desk_controller:180]: Cover control - START - position 0.220000 - target 14 - current 46
[21:41:47][D][idasen_desk_controller:209]: Update Desk - Move from 46 to 14
[21:41:47][D][idasen_desk_controller:209]: Update Desk - Move from 46 to 14
[21:41:47][D][idasen_desk_controller:209]: Update Desk - Move from 46 to 14
[21:41:47][D][idasen_desk_controller:209]: Update Desk - Move from 45 to 14
[21:41:47][D][idasen_desk_controller:209]: Update Desk - Move from 45 to 14
[21:41:47][D][idasen_desk_controller:209]: Update Desk - Move from 45 to 14
[21:41:48][D][idasen_desk_controller:209]: Update Desk - Move from 45 to 14
[21:41:48][D][idasen_desk_controller:209]: Update Desk - Move from 44 to 14
[21:41:48][D][idasen_desk_controller:209]: Update Desk - Move from 44 to 14
[21:41:48][D][idasen_desk_controller:209]: Update Desk - Move from 43 to 14
[21:41:48][D][idasen_desk_controller:209]: Update Desk - Move from 43 to 14
[21:41:48][D][idasen_desk_controller:209]: Update Desk - Move from 42 to 14
[21:41:49][D][idasen_desk_controller:209]: Update Desk - Move from 42 to 14
[21:41:49][D][idasen_desk_controller:209]: Update Desk - Move from 41 to 14
[21:41:49][D][idasen_desk_controller:209]: Update Desk - Move from 40 to 14
[21:41:49][D][idasen_desk_controller:209]: Update Desk - Move from 40 to 14
[21:41:49][D][idasen_desk_controller:209]: Update Desk - Move from 39 to 14
[21:41:49][D][idasen_desk_controller:209]: Update Desk - Move from 39 to 14
[21:41:49][D][idasen_desk_controller:209]: Update Desk - Move from 38 to 14
[21:41:50][D][idasen_desk_controller:209]: Update Desk - Move from 38 to 14
[21:41:50][D][idasen_desk_controller:209]: Update Desk - Move from 37 to 14
[21:41:50][D][idasen_desk_controller:209]: Update Desk - Move from 37 to 14
[21:41:50][D][idasen_desk_controller:209]: Update Desk - Move from 36 to 14
[21:41:50][D][idasen_desk_controller:209]: Update Desk - Move from 35 to 14
[21:41:50][D][idasen_desk_controller:209]: Update Desk - Move from 35 to 14
[21:41:50][D][idasen_desk_controller:209]: Update Desk - Move from 34 to 14
[21:41:51][D][idasen_desk_controller:209]: Update Desk - Move from 34 to 14
[21:41:51][D][idasen_desk_controller:209]: Update Desk - Move from 33 to 14
[21:41:51][D][idasen_desk_controller:209]: Update Desk - Move from 32 to 14
[21:41:51][D][idasen_desk_controller:209]: Update Desk - Move from 32 to 14
[21:41:51][D][idasen_desk_controller:209]: Update Desk - Move from 31 to 14
[21:41:51][D][idasen_desk_controller:209]: Update Desk - Move from 31 to 14
[21:41:52][D][idasen_desk_controller:209]: Update Desk - Move from 30 to 14
[21:41:52][D][idasen_desk_controller:209]: Update Desk - Move from 30 to 14
[21:41:52][D][idasen_desk_controller:209]: Update Desk - Move from 29 to 14
[21:41:52][D][idasen_desk_controller:209]: Update Desk - Move from 29 to 14
[21:41:52][D][idasen_desk_controller:209]: Update Desk - Move from 28 to 14
[21:41:52][D][idasen_desk_controller:209]: Update Desk - Move from 27 to 14
[21:41:52][D][idasen_desk_controller:209]: Update Desk - Move from 27 to 14
[21:41:53][D][idasen_desk_controller:209]: Update Desk - Move from 26 to 14
[21:41:53][D][idasen_desk_controller:209]: Update Desk - Move from 26 to 14
[21:41:53][D][idasen_desk_controller:209]: Update Desk - Move from 25 to 14
[21:41:53][D][idasen_desk_controller:209]: Update Desk - Move from 24 to 14
[21:41:53][D][idasen_desk_controller:209]: Update Desk - Move from 24 to 14
[21:41:53][D][idasen_desk_controller:209]: Update Desk - Move from 23 to 14
[21:41:53][D][idasen_desk_controller:209]: Update Desk - Move from 23 to 14
[21:41:54][D][idasen_desk_controller:209]: Update Desk - Move from 22 to 14
[21:41:54][D][idasen_desk_controller:209]: Update Desk - Move from 22 to 14
[21:41:54][D][idasen_desk_controller:209]: Update Desk - Move from 21 to 14
[21:41:54][D][idasen_desk_controller:209]: Update Desk - Move from 21 to 14
[21:41:54][D][idasen_desk_controller:209]: Update Desk - Move from 20 to 14
[21:41:54][D][idasen_desk_controller:209]: Update Desk - Move from 19 to 14
[21:41:55][D][idasen_desk_controller:209]: Update Desk - Move from 19 to 14
[21:41:55][D][idasen_desk_controller:209]: Update Desk - Move from 18 to 14
[21:41:55][D][idasen_desk_controller:209]: Update Desk - Move from 18 to 14
[21:41:55][D][idasen_desk_controller:209]: Update Desk - Move from 17 to 14
[21:41:55][D][idasen_desk_controller:209]: Update Desk - Move from 17 to 14
[21:41:55][D][idasen_desk_controller:209]: Update Desk - Move from 16 to 14
[21:41:55][D][idasen_desk_controller:209]: Update Desk - Move from 15 to 14
[21:41:56][D][idasen_desk_controller:209]: Update Desk - Move from 15 to 14
[21:41:56][D][idasen_desk_controller:204]: Update Desk - target reached
[21:42:15][D][api:067]: Disconnecting Home Assistant 2021.2.3 ()
[21:42:44][D][cover:072]: 'AZ Desk Workstation' - Setting
[21:42:44][D][cover:080]:   Position: 22%
[21:42:44][D][idasen_desk_controller:180]: Cover control - START - position 0.220000 - target 14 - current 14

Do you have an idea, what else I could look for?

EDIT: Today I installed a second controller for another Idasen desk on another ESP32 with the same problem - so I can at least rule the desk and the ESP32.
The height sensor seems to update on every "reboot" of the ESP32

Interrupting movement with manual controller breaks

Great work, I love having my desk in Home Assistant (and HomeKit) and it works really good.

I have one issue: If I click the up or down arrow and then interrupt the movement with the manual controller, I cannot use the manual controller until I click the stop button.

Logs

[16:46:31][D][cover:072]: 'Desk' - Setting
[16:46:31][D][cover:080]:   Position: 0%
[16:46:31][D][idasen_desk_controller:199]: Desk bluetooth data: height 53.1 - speed 0.0
[16:46:31][D][idasen_desk_controller:289]: Cover control - START - position 0.0 - target 0.0 - current 53.1
[16:46:31][D][idasen_desk_controller:274]: Update Desk - Move from 53.1 to 0.0
[16:46:31][D][cover:152]: 'Desk' - Publishing:
[16:46:31][D][cover:155]:   Position: 82%
[16:46:31][D][cover:168]:   Current Operation: CLOSING
[16:46:31][D][idasen_desk_controller:274]: Update Desk - Move from 53.1 to 0.0
[16:46:32][D][idasen_desk_controller:274]: Update Desk - Move from 53.1 to 0.0
[16:46:32][D][idasen_desk_controller:274]: Update Desk - Move from 53.1 to 0.0
[16:46:32][D][idasen_desk_controller:274]: Update Desk - Move from 53.1 to 0.0
[16:46:32][D][idasen_desk_controller:274]: Update Desk - Move from 53.1 to 0.0
[16:46:32][D][idasen_desk_controller:274]: Update Desk - Move from 53.1 to 0.0
[16:46:33][D][idasen_desk_controller:274]: Update Desk - Move from 53.1 to 0.0
[16:46:33][D][idasen_desk_controller:274]: Update Desk - Move from 53.1 to 0.0
[16:46:33][D][idasen_desk_controller:274]: Update Desk - Move from 53.1 to 0.0
[16:46:33][D][idasen_desk_controller:274]: Update Desk - Move from 53.1 to 0.0

// I touched the manual control. The desk stops moving but the loop continues.

[16:46:33][D][idasen_desk_controller:274]: Update Desk - Move from 53.1 to 0.0
[16:46:34][D][idasen_desk_controller:274]: Update Desk - Move from 53.1 to 0.0
[16:46:34][D][idasen_desk_controller:274]: Update Desk - Move from 53.1 to 0.0
[16:46:34][D][idasen_desk_controller:274]: Update Desk - Move from 53.1 to 0.0
[16:46:34][D][idasen_desk_controller:274]: Update Desk - Move from 53.1 to 0.0
[16:46:34][D][idasen_desk_controller:274]: Update Desk - Move from 53.1 to 0.0
[16:46:35][D][idasen_desk_controller:274]: Update Desk - Move from 53.1 to 0.0
[16:46:35][D][idasen_desk_controller:274]: Update Desk - Move from 53.1 to 0.0
[16:46:35][D][idasen_desk_controller:274]: Update Desk - Move from 53.1 to 0.0
[16:46:35][D][idasen_desk_controller:274]: Update Desk - Move from 53.1 to 0.0
[16:46:35][D][idasen_desk_controller:274]: Update Desk - Move from 53.1 to 0.0
[16:46:36][D][idasen_desk_controller:274]: Update Desk - Move from 53.1 to 0.0
[16:46:36][D][idasen_desk_controller:274]: Update Desk - Move from 53.1 to 0.0
[16:46:36][D][idasen_desk_controller:274]: Update Desk - Move from 53.1 to 0.0
[16:46:36][D][idasen_desk_controller:274]: Update Desk - Move from 53.1 to 0.0
[16:46:36][D][idasen_desk_controller:274]: Update Desk - Move from 53.1 to 0.0
[16:46:37][D][idasen_desk_controller:274]: Update Desk - Move from 53.1 to 0.0
[16:46:37][D][idasen_desk_controller:274]: Update Desk - Move from 53.1 to 0.0
[16:46:37][D][idasen_desk_controller:274]: Update Desk - Move from 53.1 to 0.0
[16:46:37][D][idasen_desk_controller:274]: Update Desk - Move from 53.1 to 0.0
[16:46:37][D][idasen_desk_controller:274]: Update Desk - Move from 53.1 to 0.0
[16:46:38][D][idasen_desk_controller:274]: Update Desk - Move from 53.1 to 0.0
[16:46:38][D][idasen_desk_controller:274]: Update Desk - Move from 53.1 to 0.0
[16:46:38][D][idasen_desk_controller:274]: Update Desk - Move from 53.1 to 0.0
[16:46:38][D][idasen_desk_controller:274]: Update Desk - Move from 53.1 to 0.0
[16:46:38][D][idasen_desk_controller:274]: Update Desk - Move from 53.1 to 0.0
[16:46:39][D][idasen_desk_controller:274]: Update Desk - Move from 53.1 to 0.0
[16:46:39][D][idasen_desk_controller:274]: Update Desk - Move from 53.1 to 0.0
[16:46:39][D][idasen_desk_controller:274]: Update Desk - Move from 53.1 to 0.0
[16:46:39][D][idasen_desk_controller:274]: Update Desk - Move from 53.1 to 0.0
[16:46:39][D][idasen_desk_controller:274]: Update Desk - Move from 53.1 to 0.0
[16:46:40][D][idasen_desk_controller:274]: Update Desk - Move from 53.1 to 0.0
[16:46:40][D][idasen_desk_controller:274]: Update Desk - Move from 53.1 to 0.0
[16:46:40][D][idasen_desk_controller:274]: Update Desk - Move from 53.1 to 0.0
[16:46:40][D][idasen_desk_controller:274]: Update Desk - Move from 53.1 to 0.0
[16:46:40][D][idasen_desk_controller:274]: Update Desk - Move from 53.1 to 0.0
[16:46:41][D][idasen_desk_controller:274]: Update Desk - Move from 53.1 to 0.0
[16:46:41][D][idasen_desk_controller:274]: Update Desk - Move from 53.1 to 0.0

// I clicked stop

[16:46:41][D][cover:072]: 'Desk' - Setting
[16:46:41][D][cover:076]:   Command: STOP
[16:46:41][D][idasen_desk_controller:312]: Cover control - STOP
[16:46:41][D][idasen_desk_controller:199]: Desk bluetooth data: height 50.3 - speed 0.0
[16:46:41][D][sensor:099]: 'Desk Height': Sending state 50.30000 cm with 1 decimals of accuracy
[16:46:41][D][cover:152]: 'Desk' - Publishing:
[16:46:41][D][cover:155]:   Position: 77%
[16:46:41][D][cover:168]:   Current Operation: IDLE

desk_height & binary_sensor not being updated

In Home Assistant sensor.desk_height and binary_sensor.desk_moving never being updated after connection.

for moving I use cover.open_cover, cover.close_cover, cover.stop_cover and cover.set_cover_position services

My config

esphome:
  name: linak_desk
  platform: ESP32
  board: nodemcu-32s

wifi:
  ssid: "***"
  password: "***"
  fast_connect: true

idasen_desk_controller:
    mac_address: "00:00:00:00:00:00:00"

cover:
  - platform: idasen_desk_controller
    name: "Desk"

sensor:
  - platform: idasen_desk_controller
    desk_height:
      # Height in cm
      name: "Desk Height"

binary_sensor:
  - platform: idasen_desk_controller
    name: "Desk Connection"
    type: CONNECTION
  - platform: idasen_desk_controller
    name: "Desk Moving"
    type: MOVING

captive_portal:

logger:

api:

ota:

there is logs
when use cover.open_cover

[13:57:31][D][cover:072]: 'Desk' - Setting
[13:57:31][D][cover:080]:   Position: 100%
[13:57:31][D][idasen_desk_controller:199]: Cover control - START - position 1.000000 - target 65 - current 18
[13:57:31][D][idasen_desk_controller:232]: Update Desk - Move from 18 to 65
[13:57:31][D][idasen_desk_controller:232]: Update Desk - Move from 18 to 65
[13:57:31][D][idasen_desk_controller:232]: Update Desk - Move from 18 to 65
[13:57:32][D][idasen_desk_controller:232]: Update Desk - Move from 18 to 65
[13:57:32][D][idasen_desk_controller:232]: Update Desk - Move from 18 to 65
[13:57:32][D][cover:072]: 'Desk' - Setting
[13:57:32][D][cover:076]:   Command: STOP
[13:57:32][D][idasen_desk_controller:212]: Cover control - STOP

when use cover.set_cover_position

[14:00:49][D][idasen_desk_controller:199]: Cover control - START - position 0.200000 - target 13 - current 19
[14:00:49][D][idasen_desk_controller:232]: Update Desk - Move from 19 to 13
[14:00:49][D][idasen_desk_controller:232]: Update Desk - Move from 19 to 13
[14:00:49][D][idasen_desk_controller:232]: Update Desk - Move from 18 to 13
[14:00:50][D][idasen_desk_controller:232]: Update Desk - Move from 18 to 13
[14:00:50][D][idasen_desk_controller:232]: Update Desk - Move from 18 to 13
[14:00:50][D][idasen_desk_controller:232]: Update Desk - Move from 18 to 13
[14:00:50][D][idasen_desk_controller:232]: Update Desk - Move from 18 to 13
[14:00:50][D][idasen_desk_controller:232]: Update Desk - Move from 17 to 13
[14:00:50][D][idasen_desk_controller:232]: Update Desk - Move from 17 to 13
[14:00:50][D][idasen_desk_controller:232]: Update Desk - Move from 16 to 13
[14:00:51][D][idasen_desk_controller:232]: Update Desk - Move from 15 to 13
[14:00:51][D][idasen_desk_controller:232]: Update Desk - Move from 15 to 13
[14:00:51][D][idasen_desk_controller:232]: Update Desk - Move from 14 to 13
[14:00:51][D][idasen_desk_controller:232]: Update Desk - Move from 14 to 13
[14:00:51][D][idasen_desk_controller:227]: Update Desk - target reached

Port to new Bluetooth integration

Is there a chance to port this to the new Bluetooth integration introduced in Home Assistant 2022.8?
Would be cool to just use it with a bluetooth dongle or raspberry directly without the esp32.

retrieveDescriptors(): esp_ble_gattc_get_all_descr: Unknown

Hi

I am trying to use this with a Linak GPD1M. I figured the control would be similar enough to have it work. But I get the following error with very minor variations and it never gets past this point:

[19:37:32][D][binary_sensor:036]: 'Desk Connection': Sending state ON
[19:37:37][E][BLERemoteCharacteristic.cpp:274] retrieveDescriptors(): esp_ble_gattc_get_all_descr: Unknown
[19:37:37][E][BLERemoteCharacteristic.cpp:274] retrieveDescriptors(): esp_ble_gattc_get_all_descr: Unknown
[19:37:37][E][BLERemoteCharacteristic.cpp:274] retrieveDescriptors(): esp_ble_gattc_get_all_descr: Unknown
[19:37:37][E][BLERemoteCharacteristic.cpp:274] retrieveDescriptors(): esp_ble_gattc_get_all_descr: Unknown
[19:37:37][E][BLERemoteCharacteristic.cpp:274] retrieveDescriptors(): esp_ble_gattc_get_all_descr: Unknown
[19:37:37][E][BLERemoteService.cpp:185] retrieveCharacteristics(): esp_ble_gattc_get_all_char: Unknown
[19:37:37]Guru Meditation Error: Core  0 panic'ed (InstrFetchProhibited). Exception was unhandled.
[19:37:37]Core 0 register dump:
[19:37:37]PC      : 0x00000000  PS      : 0x00060730  A0      : 0x8016a0f6  A1      : 0x3ffeb370
[19:37:37]A2      : 0x3ffeb3b4  A3      : 0x3fff300c  A4      : 0x00060120  A5      : 0x00000000
[19:37:37]A6      : 0x00000001  A7      : 0x00000026  A8      : 0x80198ca7  A9      : 0x3ffeb320
[19:37:37]A10     : 0x3fff300c  A11     : 0x00000270  A12     : 0x00000000  A13     : 0x3fff3030
[19:37:37]A14     : 0x3fff2fbc  A15     : 0x00000009  SAR     : 0x00000010  EXCCAUSE: 0x00000014
[19:37:37]EXCVADDR: 0x00000000  LBEG    : 0x4000c28c  LEND    : 0x4000c296  LCOUNT  : 0x00000000
[19:37:37]
[19:37:37]Backtrace: 0x00000000:0x3ffeb370 0x4016a0f3:0x3ffeb390 0x40170273:0x3ffeb3b0 0x4016ed2a:0x3ffeb3d0 0x4018f445:0x3ffeb3f0 0x4018ca4e:0x3ffeb680 0x4018e1fd:0x3ffeb6a0 0x4018f457:0x3ffeb930 0x4018ca4e:0x3ffebbc0 0x4018e1fd:0x3ffebbe0 0x4018f457:0x3ffebe70 0x4018ca4e:0x3ffec100 0x4018e1fd:0x3ffec120 0x4018f457:0x3ffec3b0 0x4018ca4e:0x3ffec640 0x4018e1fd:0x3ffec660 0x4018f457:0x3ffec8f0 0x4018ca4e:0x3ffecb80 0x4018cb8d:0x3ffecba0 0x4019516a:0x3ffecbc0 0x40169fce:0x3ffecbe0 0x4008f1a5:0x3ffecc10
WARNING Found stack trace! Trying to decode it
WARNING Decoded 0x4016a0f3: btu_free_timer at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/bt/bluedroid/stack/btu/btu_task.c:504
WARNING Decoded 0x40170273: gatt_clcb_dealloc at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/bt/bluedroid/stack/gatt/gatt_utils.c:1761
WARNING Decoded 0x4016ed2a: GATTC_Write at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/bt/bluedroid/stack/gatt/gatt_api.c:1040
WARNING Decoded 0x4018f445: bta_gattc_write at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/bt/bluedroid/bta/gatt/bta_gattc_act.c:1163
WARNING Decoded 0x4018ca4e: bta_gattc_sm_execute at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/bt/bluedroid/bta/gatt/bta_gattc_main.c:288
WARNING Decoded 0x4018e1fd: bta_gattc_pop_command_to_send at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/bt/bluedroid/bta/gatt/bta_gattc_act.c:1519
WARNING Decoded 0x4018f457: bta_gattc_write at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/bt/bluedroid/bta/gatt/bta_gattc_act.c:1170
WARNING Decoded 0x4018ca4e: bta_gattc_sm_execute at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/bt/bluedroid/bta/gatt/bta_gattc_main.c:288
WARNING Decoded 0x4018e1fd: bta_gattc_pop_command_to_send at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/bt/bluedroid/bta/gatt/bta_gattc_act.c:1519
WARNING Decoded 0x4018f457: bta_gattc_write at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/bt/bluedroid/bta/gatt/bta_gattc_act.c:1170
WARNING Decoded 0x4018ca4e: bta_gattc_sm_execute at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/bt/bluedroid/bta/gatt/bta_gattc_main.c:288
WARNING Decoded 0x4018e1fd: bta_gattc_pop_command_to_send at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/bt/bluedroid/bta/gatt/bta_gattc_act.c:1519
WARNING Decoded 0x4018f457: bta_gattc_write at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/bt/bluedroid/bta/gatt/bta_gattc_act.c:1170
WARNING Decoded 0x4018ca4e: bta_gattc_sm_execute at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/bt/bluedroid/bta/gatt/bta_gattc_main.c:288
WARNING Decoded 0x4018e1fd: bta_gattc_pop_command_to_send at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/bt/bluedroid/bta/gatt/bta_gattc_act.c:1519
WARNING Decoded 0x4018f457: bta_gattc_write at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/bt/bluedroid/bta/gatt/bta_gattc_act.c:1170
WARNING Decoded 0x4018ca4e: bta_gattc_sm_execute at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/bt/bluedroid/bta/gatt/bta_gattc_main.c:288
WARNING Decoded 0x4018cb8d: bta_gattc_hdl_event at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/bt/bluedroid/bta/gatt/bta_gattc_main.c:397
WARNING Decoded 0x4019516a: bta_sys_event at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/bt/bluedroid/bta/sys/bta_sys_main.c:496
WARNING Decoded 0x40169fce: btu_task_thread_handler at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/bt/bluedroid/stack/btu/btu_task.c:233
WARNING Decoded 0x4008f1a5: vPortTaskWrapper at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/freertos/port.c:355 (discriminator 1)
[19:37:38]
[19:37:38]Rebooting...

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.