Desky Standing Desk (ESPHome) [Works with Desky, Uplift, Jiecang, Assmann & others]

So I built it and it *mostly *works! I’ve used the exact same config you posted, except that I changed it to my Wifi credentials. Below is a screenshot of how it looks

Model
Fully Jarvis Standing Desk

What works

  • Raise desk switch
  • Lower desk switch
  • Stop Desk

What doesn’t work

  • Go to Desk Height (it actually moves the desk but not to the 80cm height is set up, it just raises the desk non-stop up until 130 (that’s what it shows on the controller screen)… no matter what target you input
  • Desk Height and Moving sensors
  • Request Desk Height

Logs when I hit the “Request Desk Height” switch

[14:00:19][VV][api.service:558]: on_switch_command_request: SwitchCommandRequest {
  key: 2153922382
  state: YES
}
[14:00:19][D][switch:013]: 'Request Desk Height' Turning ON.
[14:00:19][D][switch:037]: 'Request Desk Height': Sending state ON
[14:00:19][VV][scheduler:026]: set_timeout(name='', timeout=100)
[14:00:19][VV][api.service:156]: send_switch_state_response: SwitchStateResponse {
  key: 2153922382
  state: YES
}
[14:00:19][VV][scheduler:195]: Running timeout '' with interval=100 last_execution=6133413 (now=6133513)
[14:00:19][D][switch:017]: 'Request Desk Height' Turning OFF.
[14:00:19][D][switch:037]: 'Request Desk Height': Sending state OFF
[14:00:19][VV][api.service:156]: send_switch_state_response: SwitchStateResponse {
  key: 2153922382
  state: NO
}

Logs, when I hit the “Go To Desky Height X” button

[14:02:27][VV][api.service:678]: on_button_command_request: ButtonCommandRequest {
  key: 3728488043
}
[14:02:27][D][button:013]: 'Go To Desky Height x' Pressed.
[14:02:27][D][switch:013]: 'Raise Desk' Turning ON.
[14:02:27][D][switch:037]: 'Raise Desk': Sending state ON
[14:02:27][VV][scheduler:026]: set_timeout(name='', timeout=15000)
[14:02:27][VV][api.service:156]: send_switch_state_response: SwitchStateResponse {
  key: 529781321
  state: YES
}
[14:02:29][VV][api.service:558]: on_switch_command_request: SwitchCommandRequest {
  key: 529781321
  state: NO
}

I’m not sure what else I can provide to debug this, but I would love to get the current height sensor working, as I’m planning to mix that with a presence sensor to create automation and to know how much time I spend sitting vs standing!

Thanks!

Could you enable the uart logging and send a sample of the uart messages you are receiving (if any).

ie if you uncomment/add this bit, are you getting uart messages in the logs and what are they? Also note my comment about a mislabeled pin below. Someone else had that too. I had to use the pin labelled tx and pin number 1. But you may have to use Rx / pin 3.

Also, is the 130 height one of your presets by chance?

uart:
  - id: desk_uart
    baud_rate: 9600
    rx_pin: 1 #Labelled TX on my D1mini clone (mislabelled?)
    ##You can uncomment the debug section below to see UART messages.
    # debug:
      # direction: RX
      # dummy_receiver: true
      # after:
        # bytes: 4
      # sequence:     
        # - lambda: UARTDebug::log_int(direction, bytes, ',');
 

Hey @Mahko_Mahko, thanks for your message. I’ve tested both and it seems to me the PIN 1 is the correct one. I’m attaching below the logs I get from UART debug when I hit the Get desk height switch

[08:31:12][VV][api.service:558]: on_switch_command_request: SwitchCommandRequest {
  key: 2153922382
  state: YES
}
[08:31:12][D][switch:013]: 'Request Desk Height' Turning ON.
[08:31:12][D][switch:037]: 'Request Desk Height': Sending state ON
[08:31:12][VV][scheduler:026]: set_timeout(name='', timeout=100)
[08:31:12][VV][api.service:156]: send_switch_state_response: SwitchStateResponse {
  key: 2153922382
  state: YES
}
[08:31:12][VV][scheduler:195]: Running timeout '' with interval=100 last_execution=145386 (now=145494)
[08:31:12][D][switch:017]: 'Request Desk Height' Turning OFF.
[08:31:12][D][switch:037]: 'Request Desk Height': Sending state OFF
[08:31:12][VV][api.service:156]: send_switch_state_response: SwitchStateResponse {
  key: 2153922382
  state: NO
}
[08:31:12][D][uart_debug:176]: <<< 242,242,1,3
[08:31:12][D][uart_debug:176]: <<< 4,55,15,78
[08:31:12][D][uart_debug:176]: <<< 126
[08:31:12][D][uart_debug:176]: <<< 242,242,1,3
[08:31:12][D][uart_debug:176]: <<< 4,55,15,78
[08:31:13][D][uart_debug:176]: <<< 126
[08:31:13][D][uart_debug:176]: <<< 242,242,1,3
[08:31:13][D][uart_debug:176]: <<< 4,55,15,78
[08:31:13][D][uart_debug:176]: <<< 126
[08:31:13][D][uart_debug:176]: <<< 242,242,1,3
[08:31:13][D][uart_debug:176]: <<< 4,55,15,78
[08:31:13][D][uart_debug:176]: <<< 126
[08:31:13][D][uart_debug:176]: <<< 242,242,1,3
[08:31:13][D][uart_debug:176]: <<< 4,55,15,78
[08:31:13][D][uart_debug:176]: <<< 126
[08:31:13][D][uart_debug:176]: <<< 242,242,1,3
[08:31:13][D][uart_debug:176]: <<< 4,55,15,78
[08:31:13][D][uart_debug:176]: <<< 126
[08:31:13][D][uart_debug:176]: <<< 242,242,1,3
[08:31:13][D][uart_debug:176]: <<< 4,55,15,78
[08:31:14][D][uart_debug:176]: <<< 126
[08:31:14][D][uart_debug:176]: <<< 242,242,1,3
[08:31:14][D][uart_debug:176]: <<< 4,55,15,78
[08:31:14][D][uart_debug:176]: <<< 126
[08:31:14][D][uart_debug:176]: <<< 242,242,1,3
[08:31:14][D][uart_debug:176]: <<< 4,55,15,78
[08:31:14][D][uart_debug:176]: <<< 126
[08:31:14][D][uart_debug:176]: <<< 242,242,1,3
[08:31:14][D][uart_debug:176]: <<< 4,55,15,78
[08:31:14][D][uart_debug:176]: <<< 126
[08:31:14][D][uart_debug:176]: <<< 242,242,1,3
[08:31:14][D][uart_debug:176]: <<< 4,55,15,78
[08:31:14][D][uart_debug:176]: <<< 126
[08:31:14][D][uart_debug:176]: <<< 242,242,1,3
[08:31:14][D][uart_debug:176]: <<< 4,55,15,78
[08:31:15][D][uart_debug:176]: <<< 126
[08:31:15][D][uart_debug:176]: <<< 242,242,1,3
[08:31:15][D][uart_debug:176]: <<< 4,55,15,78
[08:31:15][D][uart_debug:176]: <<< 126
[08:31:15][D][uart_debug:176]: <<< 242,242,1,3
[08:31:15][D][uart_debug:176]: <<< 4,55,15,78
[08:31:15][D][uart_debug:176]: <<< 126
[08:31:15][D][uart_debug:176]: <<< 242,242,1,3
[08:31:15][D][uart_debug:176]: <<< 4,55,15,78
[08:31:15][D][uart_debug:176]: <<< 126
[08:31:15][D][uart_debug:176]: <<< 242,242,1,3
[08:31:15][D][uart_debug:176]: <<< 4,55,15,78
[08:31:15][D][uart_debug:176]: <<< 126
[08:31:15][D][uart_debug:176]: <<< 242,242,1,3
[08:31:15][D][uart_debug:176]: <<< 4,55,15,78
[08:31:16][D][uart_debug:176]: <<< 126
[08:31:16][D][uart_debug:176]: <<< 242,242,1,3
[08:31:16][D][uart_debug:176]: <<< 4,55,15,78
[08:31:16][D][uart_debug:176]: <<< 126
[08:31:16][D][uart_debug:176]: <<< 242,242,1,3
[08:31:16][D][uart_debug:176]: <<< 4,55,15,78
[08:31:16][D][uart_debug:176]: <<< 126
[08:31:16][D][uart_debug:176]: <<< 242,242,1,3
[08:31:16][D][uart_debug:176]: <<< 4,55,15,78
[08:31:16][D][uart_debug:176]: <<< 126
[08:31:16][D][uart_debug:176]: <<< 242,242,1,3
[08:31:16][D][uart_debug:176]: <<< 4,55,15,78
[08:31:16][D][uart_debug:176]: <<< 126
[08:31:16][D][uart_debug:176]: <<< 242,242,1,3
[08:31:16][D][uart_debug:176]: <<< 4,55,15,78
[08:31:17][D][uart_debug:176]: <<< 126
[08:31:17][D][uart_debug:176]: <<< 242,242,1,3
[08:31:17][D][uart_debug:176]: <<< 4,55,15,78
[08:31:17][D][uart_debug:176]: <<< 126
[08:31:17][D][uart_debug:176]: <<< 242,242,1,3
[08:31:17][D][uart_debug:176]: <<< 4,55,15,78
[08:31:17][VV][api.service:470]: on_ping_request: PingRequest {}
[08:31:17][VV][api.service:043]: send_ping_response: PingResponse {}
[08:31:17][D][uart_debug:176]: <<< 126
[08:31:17][D][uart_debug:176]: <<< 242,242,1,3
[08:31:17][D][uart_debug:176]: <<< 4,55,15,78
[08:31:17][D][uart_debug:176]: <<< 126
[08:31:17][D][uart_debug:176]: <<< 242,242,1,3
[08:31:17][D][uart_debug:176]: <<< 4,55,15,78
[08:31:17][D][uart_debug:176]: <<< 126
[08:31:17][D][uart_debug:176]: <<< 242,242,1,3
[08:31:17][D][uart_debug:176]: <<< 4,55,15,78
[08:31:18][D][uart_debug:176]: <<< 126
[08:31:18][D][uart_debug:176]: <<< 242,242,1,3
[08:31:18][D][uart_debug:176]: <<< 4,55,15,78
[08:31:18][D][uart_debug:176]: <<< 126
[08:31:18][D][uart_debug:176]: <<< 242,242,1,3
[08:31:18][D][uart_debug:176]: <<< 4,55,15,78
[08:31:18][D][uart_debug:176]: <<< 126
[08:31:18][D][uart_debug:176]: <<< 242,242,1,3
[08:31:18][D][uart_debug:176]: <<< 4,55,15,78
[08:31:18][D][uart_debug:176]: <<< 126
[08:31:18][D][uart_debug:176]: <<< 242,242,1,3
[08:31:18][D][uart_debug:176]: <<< 4,55,15,78
[08:31:18][D][uart_debug:176]: <<< 126
[08:31:18][D][uart_debug:176]: <<< 242,242,1,3
[08:31:18][D][uart_debug:176]: <<< 4,55,15,78
[08:31:19][D][uart_debug:176]: <<< 126
[08:31:19][D][uart_debug:176]: <<< 242,242,1,3
[08:31:19][D][uart_debug:176]: <<< 4,55,15,78
[08:31:19][D][uart_debug:176]: <<< 126
[08:31:19][D][uart_debug:176]: <<< 242,242,1,3
[08:31:19][D][uart_debug:176]: <<< 4,55,15,78
[08:31:19][D][uart_debug:176]: <<< 126
[08:31:19][D][uart_debug:176]: <<< 242,242,1,3
[08:31:19][D][uart_debug:176]: <<< 4,55,15,78
[08:31:19][D][uart_debug:176]: <<< 126
[08:31:19][D][uart_debug:176]: <<< 242,242,1,3
[08:31:19][D][uart_debug:176]: <<< 4,55,15,78
[08:31:19][D][uart_debug:176]: <<< 126
[08:31:19][D][uart_debug:176]: <<< 242,242,1,3
[08:31:19][D][uart_debug:176]: <<< 4,55,15,78
[08:31:20][D][uart_debug:176]: <<< 126
[08:31:20][D][uart_debug:176]: <<< 242,242,1,3
[08:31:20][D][uart_debug:176]: <<< 4,55,15,78
[08:31:20][D][uart_debug:176]: <<< 126
[08:31:20][D][uart_debug:176]: <<< 242,242,1,3
[08:31:20][D][uart_debug:176]: <<< 4,55,15,78
[08:31:20][D][uart_debug:176]: <<< 126
[08:31:20][D][uart_debug:176]: <<< 242,242,1,3
[08:31:20][D][uart_debug:176]: <<< 4,55,15,78
[08:31:20][D][uart_debug:176]: <<< 126
[08:31:20][D][uart_debug:176]: <<< 242,242,1,3
[08:31:20][D][uart_debug:176]: <<< 4,55,15,78
[08:31:20][D][uart_debug:176]: <<< 126
[08:31:20][D][uart_debug:176]: <<< 242,242,1,3
[08:31:20][D][uart_debug:176]: <<< 4,55,15,78
[08:31:21][D][uart_debug:176]: <<< 126
[08:31:21][D][uart_debug:176]: <<< 242,242,1,3
[08:31:21][D][uart_debug:176]: <<< 4,55,15,78
[08:31:21][D][uart_debug:176]: <<< 126
[08:31:21][D][uart_debug:176]: <<< 242,242,1,3
[08:31:21][D][uart_debug:176]: <<< 4,55,15,78
[08:31:21][D][uart_debug:176]: <<< 126
[08:31:21][D][uart_debug:176]: <<< 242,242,1,3
[08:31:21][D][uart_debug:176]: <<< 4,55,15,78
[08:31:21][D][uart_debug:176]: <<< 126
[08:31:21][VV][api.service:470]: on_ping_request: PingRequest {}
[08:31:21][VV][api.service:043]: send_ping_response: PingResponse {}
[08:31:21][D][uart_debug:176]: <<< 242,242,1,3
[08:31:21][D][uart_debug:176]: <<< 4,55,15,78
[08:31:21][D][uart_debug:176]: <<< 126
[08:31:21][D][uart_debug:176]: <<< 242,242,1,3
[08:31:21][D][uart_debug:176]: <<< 4,55,15,78
[08:31:22][D][uart_debug:176]: <<< 126
[08:31:22][D][uart_debug:176]: <<< 242,242,1,3
[08:31:22][D][uart_debug:176]: <<< 4,55,15,78
[08:31:22][D][uart_debug:176]: <<< 126
[08:31:22][D][uart_debug:176]: <<< 242,242,1,3
[08:31:22][D][uart_debug:176]: <<< 4,55,15,78
[08:31:22][D][uart_debug:176]: <<< 126
[08:31:22][D][uart_debug:176]: <<< 242,242,1,3
[08:31:22][D][uart_debug:176]: <<< 4,55,15,78
[08:31:22][D][uart_debug:176]: <<< 126

Now that is quite interesting. Are you connected to the controller via a rj45 port (8 pins) or a rj12 port (6 or 4 pins?). Do you have multiple ports on your control box?

Could you please:

  1. Change your UART debug config to similar to in this post (should just be the ‘bytes: 9’ part that matters). And get familiar with the post. Desky Standing Desk (ESPHome) [Works with Desky, Uplift, Jiecang, Assmann & others] - #23 by Mahko_Mahko
  2. Then repeat what you did with the above get desk height (and provide sample logs) then…
  3. Make your desk move via the regular handset (and provide sample logs).

You appear to be recieving the bluetooth port protocol (which has been decoded). Take a look at your messages and do a few Excel calcs and see if you can confirm that your desk height is valid.


I think we’ll crack this, it’s just whether it’s easy or needs a bit more work…

Hey!
Just Updated the ESP with that new value. I’m using the RJ45 as it’s the original connection on the headset, on RJ12 it won’t fit!

Log for get height


[09:38:48][VV][api.service:558]: on_switch_command_request: SwitchCommandRequest {
  key: 2153922382
  state: YES
}
[09:38:48][D][switch:013]: 'Request Desk Height' Turning ON.
[09:38:48][D][switch:037]: 'Request Desk Height': Sending state ON
[09:38:48][VV][scheduler:026]: set_timeout(name='', timeout=100)
[09:38:48][VV][api.service:156]: send_switch_state_response: SwitchStateResponse {
  key: 2153922382
  state: YES
}
[09:38:48][VV][scheduler:195]: Running timeout '' with interval=100 last_execution=61419 (now=61526)
[09:38:48][D][switch:017]: 'Request Desk Height' Turning OFF.
[09:38:48][D][switch:037]: 'Request Desk Height': Sending state OFF
[09:38:48][VV][api.service:156]: send_switch_state_response: SwitchStateResponse {
  key: 2153922382
  state: NO
}
[09:38:48][D][uart_debug:176]: <<< 242,242,1,3,4,59,15,82,126
[09:38:48][D][uart_debug:176]: <<< 242,242,1,3,4,59,15,82,126
[09:38:48][D][uart_debug:176]: <<< 242,242,1,3,4,59,15,82,126
[09:38:48][D][uart_debug:176]: <<< 242,242,1,3,4,59,15,82,126
[09:38:49][D][uart_debug:176]: <<< 242,242,1,3,4,59,15,82,126
[09:38:49][D][uart_debug:176]: <<< 242,242,1,3,4,59,15,82,126
[09:38:49][D][uart_debug:176]: <<< 242,242,1,3,4,59,15,82,126
[09:38:49][D][uart_debug:176]: <<< 242,242,1,3,4,59,15,82,126
[09:38:49][D][uart_debug:176]: <<< 242,242,1,3,4,59,15,82,126
[09:38:50][D][uart_debug:176]: <<< 242,242,1,3,4,59,15,82,126
[09:38:50][D][uart_debug:176]: <<< 242,242,1,3,4,59,15,82,126
[09:38:50][D][uart_debug:176]: <<< 242,242,1,3,4,59,15,82,126
[09:38:50][D][uart_debug:176]: <<< 242,242,1,3,4,59,15,82,126
[09:38:50][D][uart_debug:176]: <<< 242,242,1,3,4,59,15,82,126
[09:38:51][D][uart_debug:176]: <<< 242,242,1,3,4,59,15,82,126
[09:38:51][VV][api.service:470]: on_ping_request: PingRequest {}
[09:38:51][VV][api.service:043]: send_ping_response: PingResponse {}
[09:38:51][D][uart_debug:176]: <<< 242,242,1,3,4,59,15,82,126
[09:38:51][D][uart_debug:176]: <<< 242,242,1,3,4,59,15,82,126
[09:38:51][D][uart_debug:176]: <<< 242,242,1,3,4,59,15,82,126
[09:38:51][D][uart_debug:176]: <<< 242,242,1,3,4,59,15,82,126
[09:38:52][D][uart_debug:176]: <<< 242,242,1,3,4,59,15,82,126
[09:38:52][D][uart_debug:176]: <<< 242,242,1,3,4,59,15,82,126
[09:38:52][D][uart_debug:176]: <<< 242,242,1,3,4,59,15,82,126
[09:38:52][VV][scheduler:195]: Running interval 'update' with interval=60000 last_execution=5844 (now=65844)
[09:38:52][D][uart_debug:176]: <<< 242,242,1,3,4,59,15,82,126
[09:38:52][D][uart_debug:176]: <<< 242,242,1,3,4,59,15,82,126
[09:38:53][D][uart_debug:176]: <<< 242,242,1,3,4,59,15,82,126
[09:38:53][D][uart_debug:176]: <<< 242,242,1,3,4,59,15,82,126
[09:38:53][D][uart_debug:176]: <<< 242,242,1,3,4,59,15,82,126
[09:38:53][D][uart_debug:176]: <<< 242,242,1,3,4,59,15,82,126
[09:38:53][D][uart_debug:176]: <<< 242,242,1,3,4,59,15,82,126
[09:38:54][D][uart_debug:176]: <<< 242,242,1,3,4,59,15,82,126
[09:38:54][D][uart_debug:176]: <<< 242,242,1,3,4,59,15,82,126
[09:38:54][D][uart_debug:176]: <<< 242,242,1,3,4,59,15,82,126
[09:38:54][D][uart_debug:176]: <<< 242,242,1,3,4,59,15,82,126
[09:38:54][D][uart_debug:176]: <<< 242,242,1,3,4,59,15,82,126
[09:38:55][D][uart_debug:176]: <<< 242,242,1,3,4,59,15,82,126
[09:38:55][D][uart_debug:176]: <<< 242,242,1,3,4,59,15,82,126
[09:38:55][D][uart_debug:176]: <<< 242,242,1,3,4,59,15,82,126
[09:38:55][D][uart_debug:176]: <<< 242,242,1,3,4,59,15,82,126
[09:38:55][D][uart_debug:176]: <<< 242,242,1,3,4,59,15,82,126
[09:38:56][D][uart_debug:176]: <<< 242,242,1,3,4,59,15,82,126
[09:38:56][D][uart_debug:176]: <<< 242,242,1,3,4,59,15,82,126
[09:38:56][D][uart_debug:176]: <<< 242,242,1,3,4,59,15,82,126
[09:38:56][D][uart_debug:176]: <<< 242,242,1,3,4,59,15,82,126
[09:38:56][D][uart_debug:176]: <<< 242,242,1,3,4,59,15,82,126
[09:38:57][D][uart_debug:176]: <<< 242,242,1,3,4,59,15,82,126
[09:38:57][D][uart_debug:176]: <<< 242,242,1,3,4,59,15,82,126
[09:38:57][D][uart_debug:176]: <<< 242,242,1,3,4,59,15,82,126
[09:38:57][D][uart_debug:176]: <<< 242,242,1,3,4,59,15,82,126
[09:38:57][D][uart_debug:176]: <<< 242,242,1,3,4,59,15,82,126
[09:38:58][D][uart_debug:176]: <<< 242,242,1,3,4,59,15,82,126

Logs when moving the desk with the headset (using the arrow down in this case)

[09:39:56][D][uart_debug:176]: <<< 242,242,1,3,4,59,15,82,126
[09:39:57][D][uart_debug:176]: <<< 242,242,1,3,4,59,15,82,126
[09:39:57][D][uart_debug:176]: <<< 242,242,1,3,4,59,15,82,126
[09:39:57][D][uart_debug:176]: <<< 242,242,1,3,4,59,15,82,126
[09:39:57][D][uart_debug:176]: <<< 242,242,1,3,4,59,15,82,126
[09:39:57][D][uart_debug:176]: <<< 242,242,1,3,4,59,15,82,126
[09:39:58][D][uart_debug:176]: <<< 242,242,1,3,4,59,15,82,126
[09:39:58][D][uart_debug:176]: <<< 242,242,1,3,4,59,15,82,126
[09:39:58][D][uart_debug:176]: <<< 242,242,1,3,4,59,15,82,126
[09:39:58][D][uart_debug:176]: <<< 242,242,1,3,4,59,15,82,126
[09:39:58][D][uart_debug:176]: <<< 242,242,1,3,4,59,15,82,126
[09:39:59][D][uart_debug:176]: <<< 242,242,1,3,4,59,15,82,126
[09:40:00][D][uart_debug:176]: <<< 242,242,1,3,4,59,15,82,126
[09:40:00][D][uart_debug:176]: <<< 242,242,1,3,4,58,15,81,126
[09:40:00][D][uart_debug:176]: <<< 242,242,1,3,4,53,15,76,126
[09:40:00][D][uart_debug:176]: <<< 242,242,1,3,4,46,15,69,126
[09:40:01][D][uart_debug:176]: <<< 242,242,1,3,4,39,15,62,126
[09:40:01][D][uart_debug:176]: <<< 242,242,1,3,4,32,15,55,126
[09:40:01][D][uart_debug:176]: <<< 242,242,1,3,4,25,15,48,126
[09:40:01][D][uart_debug:176]: <<< 242,242,1,3,4,17,15,40,126
[09:40:01][VV][api.service:470]: on_ping_request: PingRequest {}
[09:40:01][VV][api.service:043]: send_ping_response: PingResponse {}
[09:40:01][D][uart_debug:176]: <<< 242,242,1,3,4,10,15,33,126
[09:40:02][D][uart_debug:176]: <<< 242,242,1,3,4,3,15,26,126
[09:40:02][D][uart_debug:176]: <<< 242,242,1,3,3,251,15,17,126
[09:40:02][D][uart_debug:176]: <<< 242,242,1,3,3,244,15,10,126
[09:40:02][D][uart_debug:176]: <<< 242,242,1,3,3,239,15,5,126
[09:40:02][D][uart_debug:176]: <<< 242,242,1,3,3,239,15,5,126
[09:40:03][D][uart_debug:176]: <<< 242,242,1,3,3,239,15,5,126
[09:40:03][D][uart_debug:176]: <<< 242,242,1,3,3,239,15,5,126
[09:40:03][D][uart_debug:176]: <<< 242,242,1,3,3,239,15,5,126
[09:40:03][D][uart_debug:176]: <<< 242,242,1,3,3,239,15,5,126
[09:40:03][D][uart_debug:176]: <<< 242,242,1,3,3,239,15,5,126
[09:40:04][D][uart_debug:176]: <<< 242,242,1,3,3,239,15,5,126
[09:40:04][D][uart_debug:176]: <<< 242,242,1,3,3,239,15,5,126
[09:40:04][D][uart_debug:176]: <<< 242,242,1,3,3,239,15,5,126
[09:40:04][D][uart_debug:176]: <<< 242,242,1,3,3,239,15,5,126
[09:40:04][D][uart_debug:176]: <<< 242,242,1,3,3,239,15,5,126
[09:40:05][D][uart_debug:176]: <<< 242,242,1,3,3,239,15,5,126
[09:40:05][D][uart_debug:176]: <<< 242,242,1,3,3,239,15,5,126
[09:40:05][D][uart_debug:176]: <<< 242,242,1,3,3,239,15,5,126
[09:40:05][D][uart_debug:176]: <<< 242,242,1,3,3,239,15,5,126
[09:40:06][D][uart_debug:176]: <<< 242,242,1,3,3,239,15,5,126
[09:40:06][VV][api.service:470]: on_ping_request: PingRequest {}
[09:40:06][VV][api.service:043]: send_ping_response: PingResponse {}
[09:40:06][D][uart_debug:176]: <<< 242,242,1,3,3,239,15,5,126
[09:40:06][D][uart_debug:176]: <<< 242,242,1,3,3,239,15,5,126
[09:40:06][D][uart_debug:176]: <<< 242,242,1,3,3,239,15,5,126
[09:40:06][D][uart_debug:176]: <<< 242,242,1,3,3,239,15,5,126
[09:40:07][D][uart_debug:176]: <<< 242,242,1,3,3,239,15,5,126
[09:40:07][D][uart_debug:176]: <<< 242,242,1,3,3,239,15,5,126
[09:40:07][D][uart_debug:176]: <<< 242,242,1,3,3,239,15,5,126
[09:40:07][D][uart_debug:176]: <<< 242,242,1,3,3,239,15,5,126
[09:40:07][D][uart_debug:176]: <<< 242,242,1,3,3,239,15,5,126
[09:40:08][D][uart_debug:176]: <<< 242,242,1,3,3,239,15,5,126
[09:40:08][D][uart_debug:176]: <<< 242,242,1,3,3,239,15,5,126

Also yes, looks like the calculations shows the correct value vs the headset
image

Right!

I think your desk will work, but it seems to use the “alternative protocol”, which is the first I’ve seen of that and it’s not supported in the current solution!

I think we need to get some advice from @ssieb on the best way forward.

I think it will be a feature request to switch between two alternatvie protocols. They are very similar.

I can help write up a summary of it and hopefully ssieb will help us work through it on the Discord thread.

You should set up a Discord and GitHub account if you don’t have them.

I need to rest now and I may not get to it for a day or so.

1 Like

There is some very interesting info on Jarvis desks in this project.

Apparently some Jarvis with the simple handset use the alternative protocol.

1 Like

I’ve pinged @ssieb on Discord and we’ll see what they reckon.

1 Like

Thank you so much, I was planning to do it over the weekend but I could have not explained it as well as you did!

1 Like

That’s a great makeover! I didn’t know tables with such control panels existed. It would be really lovely to have an adjustable table like this. I’m tall, and most regular tables are too short for me, which affects my back’s health.
That’s why I want a table with an electrical adjustment mechanism in it, just like this one https://eurekaergonomic.com/gaming-desk-l60-60-pink-l-shаped-left-erk-l60l-pk/. I like the design a lot and the L-shape is what I need in my room. It would fit just right in the corner of my room.
What are the drawbacks of such tables, if there are some?

Hey all, so I got all my parts, but I think i’m confusing myself with the wires. First, my ethernet cable to sacrifice is one of the yellow ones, and the internal wires are different colour.

This is from the controller box:

and this is what I made(!)




When I plug this in as a bypass, my desk just goes straight down, and my control pad becomes unresponsive.

I have NOT programmed the D1 yet (I don’t even know how), but I was hoping that if this was a true by-pass, I could still use my desk normally.

Any ideas? Did I cross something?

thanks

Try this as a next step.

Disconnect the duponts from D1 mini. You can leave the wires “hanging”.

First try to establish a working passthrough that doesn’t involve the esp at all. Eg it should simply be passing through to the wires between the handset and controller (a bit like an extension cord)

Check that the order of your wires of your sacrificed ethernet cable “run straight through”.

Your first goal is to insert this rig which just retains original hanset functionality and behaviour, without esp involved at all…

Thank you very much! that was some very very awesome and sound advice!

UPDATE: Ok, got it work! @Mahko_Mahko This works really well actually, WOW nice work all!

You can now add this desk to the list BDI Stance desk (Stance 6652) to the list of working desks

I presume I have to do some tinkering with the heights, for example, the Desky height sensor is correct but when I change the target height, and go desky height, it blasts past it.

By the way, my control pad now shows the numbers.

EDIT1: Oh I see what the problem was for request the desk height, there is a lower limit of 80 cm. Can I lower value?

1 Like

Nice! Sounds like you are almost there.

Could you elaborate a little more on what isn’t working as expected?

Some other things to check:

  • Does Desky get a height value when you restart the d1mini? I.e you get a height on start-up?
  • Is the stopping distance value right for your desk? If your desk typically stops before/after the target height then adjust.

You should be ok to adjust the min_value: 80 here to say 75cm etc. But if you ask the Desky to go to a lower value than the lowest value that your desk can go to (via the handset) you might error or the desk and it might need resetting. So try not to have min_value to close to your real min value.

number:
#Target Height ("Move desk to height x").
    #You should probably limit the range you can move the desk to to within the limits you've set via the control panel, perhaps offset a little within the range.
    #Sending commands higher/lower than this may cause error messages and require desk reset (or worse).
  - platform: template
    id: desky_target_height
    name: "Desky Target Height"
    optimistic: true
    unit_of_measurement: cm
    min_value: 80
    max_value: 130.0
    step: 0.1

great! everything is perfect now, @Mahko_Mahko

I just had to adjust the min and max values, my desk’s range (by handset is 62 to 127 cm), so I just modified the min and max to be slightly in those ranges and added a few more presets.

This works really well.

Thanks all for sharing this project.

Don’t forget to add the “BDI Stance Desk” to the list now!

1 Like

Nice! I’ve added your desk… Enjoy.

Hi all, I just got a Deskhaus Apex Pro Max and looking into this. Wow, thanks everyone for the hard work so far! I like the idea on a hardwired connection, but I wondered if the bluetooth connection is also working better than some of the comments earlier?

I ended up getting a programmable control (Jiachang JCHT35K24C) that has bluetooth onboard the up/down control unit. I was wondering if I can simply add this through ESPHome’s Bluetooth Proxy until I can put together a pass-through dongle?

1 Like

I don’t think there has been as much development effort into Bluetooth based control as not many users have the Bluetooth dongle or a handset with Bluetooth.

You could look at this project. The Bluetooth commands may still be the same.

I think you’d have to do a fair bit more work to get a Bluetooth based solution working in ESPHOME.

Personally I can’t really see that much benefit doing it this way (except for wireless solution), but it could be interesting to investigate.

Thanks @Mahko_Mahko for the quick reply. I don’t think I know enough about the bluetooth resources in ESPHome (or have the time it would take) to make that happen quickly.

I’ll dig into my box of electronics, it looks like the pass-through dongle is pretty straight forward to set up.

1 Like

Great work on this integration. I’ve just losely wired up a test device to check that it all works.
But I do have a couple of questions:

  1. How are the presets intended to be used? I know the Target Height is connected to the Go To. Is the intent for us to add additional buttons to trigger this?
  2. We have the min and max limits in the Target Height. Are there any future plans to connect these into the Up and Down buttons so those limits are not exceeded?

Again, great work.