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

I think the upsy desky project has support for different protocols (communication between control panel and controller)

This project supports just one ATM.

That project specifies supported models by controller name, which makes sense. There’s some indication that some of the newer Desky models may use another Jiecang protocol which is not yet supported (there is one case in this thread somewhere).

The list of supported models is probably just as much reflects who has stumbled upon the project and decided to try/test.

As TJ is actively developing and supporting that project the supported model list can grow a bit. Whereas this project doesn’t have as much ongoing cpp developer support.

Each project might attract different people who find both. This one is cheaper and DIY. The other has off the shelf hardware and probably more official support.

There’s also the Phord project.

Probably everyone is having a bit of a look at each others projects and bringing in bits and pieces. I took a few things from the Phord project.

That’s my reflections anyway.

1 Like

You don’t happen to have a new link for the STL do you? The Thingiverse link is dead.

Hmm right. I’ll dig it up shortly.

Just to confirm, you’re planning on building the “advanced control panel” (option two)?

I think you’d prob be the first except for me. So you might need to work through a few bumps.

Edit: Updated link in main post. It’s here.


so anyone tried on new desky 2023 smart controller?
it is bluetooth desky app controllable.
(Desky Smart Bluetooth Controller)

Kind of interesting.

But well unless you somehow value using their app, it doesn’t really get you much. I guess it’s a decent off the shelf improvement.

If it uses the rj45 port then it should be using the same protocol between it and the controller.

Will obviously have some other comms going between the phone and built-in bluetooth module.

If the bluetooth module always broadcasts then that could be another way to get the desk height (via ble).

1 Like

Thanks for an awesome project! Confirmed working on a desk bought from Hexaplan. The desk is using a JCB35NS2-230 controller.

Is it a known issue that using ssieb’s example does not actually load the current height on boot? Or have I screwed up the soldering so GPIO14 doesn’t actually work? If I press a button the desk’s own control panel to wake it up the current height shows up on the D1 Mini too.

  uart_id: desk_uart
  id: standing_desk
    name: Height
    number: GPIO4
    inverted: true
    number: GPIO5
    inverted: true
    number: GPIO14
    inverted: true
1 Like

It should work. It may be your soldering etc.

Great to hear it’s (almost) working. I’ve added your desk brand to the works with list.

What you could do to test/debug is remove these lines

And add a switch like this and then hit it after boot and see if it triggers height messages.

Also trace through the “wake wire” to make sure that is wired and soldered correctly.

It was embarrasingly easy to fix :see_no_evil: The all-blue cable coming from the controller had come a little bit lose from the RJ45 breakout. Now it works like a charm.

1 Like

Glad to hear it was an easy fix and it’s working;)

1 Like

Hi there, first, thanks for this Thread an all work you put in it. My question is about compatibility of an older BOHO OFFICE Basic Line (2021). This one has a RJ50 Conector (LAN with 10 strands) runed with 5 strands in it. Sadly I don’t have an oscilloscope to exactly read what’s going on on each lane. The following pictures are from the remote (housed an the circuit board itself, and the type label of on the main unit:

Can I do this project with this threat, or does my desk use another type of communication. As I can see the other desk are driven by 6 lanes conected to the esp, in my case there are only 5 at all.

Thank you for taking your time.

Welcome @dunkelheim, please post in English per forum rules and we’ll see what we can do to help.


1 Like

Hello @Mahko_Mahko, I am really sorry for typing in german and don’t know today why I did that after reading the most of this thread. Maybe a bit to tired yesterday as I have written it. Thanks for your kind answer to this, I appreciate it a lot.

1 Like

No worries.

I think it’s unlikely this solution will work for you.

The other Boho desk on this thread clearly had a Jiecang controller while yours appears to be Kaidi, who appear to be a different manufacturer.

You may need to start from scratch and be willing to decode the protocol, like this guy did…



I have the same desk and took the time this evening to sort out the protocol – planning to integrate this here, but there are some further hardware adaptions required due to a 5V logic level instead of 3v3

Here’s the protocol: GitHub - xvzf/kaidi-desk-controller-protocol: Kaidi standing desk controller protocol analysis for homeassistant integration

1 Like

This component is actually 5V logic too!

You’ll find various discussions online about whether ESPs are 5V tolerant.

I concluded that they are and use no extra level shifting. Everything has been fine so far.

Uh, interesting! I killed an ESP32 with it :rofl:

1 Like

Where did I go wrong?!

I’m wondering if anyone here can spot the mistake I’ve made in my setup, as I’ve deviated a bit from what folks have posted in the thread.

Desk: Fully Jarvis (JCB35N-110)
Controller: Seeed Studio XIAO ESP32C3
Ethernet Jacks: Teansic 2PCS RJ45 Ethernet Dual Female Terminal Breakout Board

What works:

  • Desk controller works as normal
  • ESP32 boots and connects over wifi off of the 5v line

Esphome Config:

  - id: desk_uart
    baud_rate: 9600
    tx_pin: 21

  id: my_desky
    name: Desk Height
    accuracy_decimals: 1
    unit_of_measurement: cm
    number: 8
    inverted: true
    number: 9
    inverted: true
    number: 10
    inverted: true
  stopping_distance: 15
  timeout: 15s

  - platform: template
    name: Desky moving
    lambda: return id(my_desky).current_operation != desky::DESKY_OPERATION_IDLE;

Wiring (Seeed Studio XIAO pins → Ethernet board line):
D6: 2
D8: 7
D9: 8
D10: 4
Ground: 3

Wiring (Seeed Studio XIAO pins → Pin Name → ESP32 SoC pin from pinout):
D6: U0TXD (Uart TX) GPIO21 - 28
D8: GPIO8 - 14
D9: GPIO9 - 15
D10: GPIO10/FSPICS0 - 16

I may be misinterpreting this diagram?

Or perhaps I’m using a pin that can’t be used for what I think it can be used for?

What’s not working? Like more or less everything?

Posting some logs will prob help a bit.

Probably post your whole config too.


Hello Mahko Mahko, would like to know if you have this controller, I am needing it!! Please txt me, Ph. <redacted>
Juan Pablo G

Posting personal contact information on public forums is not a smart thing to do. Please do some reading about why here:

We are a friendly bunch of regulars here but anyone can see that information

I have edited your post to remove the phone number and hidden the revision.

Mahko_Mahko will likely respond to you here and invite you to contact them privately if they feel so inclined.

1 Like