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

I also have the uplift equivalent of this up/down controller. Mine shows the desk height on the display.

1 Like

Has anyone tried this on an IKEA IDASEN / IDÅSEN Desk?

I’m currently trying to figure out the pinout on the RJ45 connector but I can’t find a 5V pin. Some of them show 6,8-7v though.

IKEA Idasen Desk

Linak DL11 lifting column

image

Hi I‘m also looking for some help. My desk seems to be different to the desks that have already been posted here. Therefore I opened a new topic. So if anyone is willing and able to help, I would really appreciate it! Thanks :blush:

1 Like

Linak is a different controller with a different OEM and different protocol.

This thread won’t be of much direct help.

New topic is the way to go for this. I dropped a few comments there and will add a few more later.

1 Like

I can confirm option #1 successfully works w/ my Deskhaus Grand Rapids (Apex Pro Max) desk. Thank you @Mahko_Mahko & @ssieb!

2 Likes

Great to hear! Thanks for reporting that! I’ve added it to the “works with” list.

I just noticed this project. May be of more use to you. Cheers.

1 Like

Hi, thank for linking this. I’ve tried it already but the “Bluetooth workaround” turned out to be pretty unstable. Thats why I’m looking for a wired direct connection. I will move my question over there… :slight_smile:

1 Like

Just wanted to say thank you to Mahko_Mahko for the parts list and wire diagrams and gureyes for the code. Much appreciated! Worked first try with my Uplift desk.

Wife came in while I was soldering and asked what I was doing. I told her about my grand plans to connect my desk to Home Assistant. She just rolled her eyes and walked out. :rofl:

1 Like

No worries, happy to hear. @ssieb is the real brains behind the solution though.

Great to see we’re gathering more users.

I just found this after struggling to get the UART interface working with my Uplift Desk. I had the desk controllers TX pin connected to my D1 Mini’s RX pin and the rx_pin set to GPIO3 in my uart configuration but it would just not work. I didn’t get any data.

Then I noticed your comment about using the TX labeled pin on your D1 mini clone. After I rewired the desks TX pin to my D1’s TX pin and changed the rx_pin setting to GPIO1, it started working! I was about to give up on reading the desk height.

That caught me out for ages! Glad you caught it and got it working…

I am trying to figure out how I can get memory slot 1, 3 and 4 working. Memory Slot 2 is easy, it’s just connecting to purple wire (wire 6) to a GPIO pin and setting it to low. Memory Button 1, 3 and 4 however, seem to be using a combination of multiple wires at a “half-level” (my multimeter gave me a reading of roughly 0.8v).

Memory Slot 4 uses wire 6 + 7 at ~0.8v
Memory Slot 3 uses wire 6 + 8 at ~0.8v
Memory Slot 1 uses wire 7 + 8 at ~0.8v

I tried connecting these wires to the ADC pins on my ESP32 board, but that didn’t work. The voltage levels didn’t drop, which kinda makes sense. Generating 0.8v and connecting that to a 5v line won’t make the voltage on that line go down. I was actually more surprised that this is exactly what happens when connecting the line to the regular binary GPIO pins. I assume that the pin gets grounded when it’s on LOW, causing it to drop the voltage on entire circuit?

How can I get the voltage on the wire 6, 7 and 8 circuits to drop to the required 0.8v levels to emulate pressing the other memory slot buttons? Would a voltage divider that “exposes” 4.2v to the GPIO and leaving 0.8v on the circuit work? When I drop the GPIO pin to LOW it should ground those 4.2v and leave 0.8v on the circuit. But would it leave a full 5v on the circuit when the GPIO pin is on HIGH?

Am I thinking completely wrong about this? I’m very new to ESP and electronics in general. Any advice or hints would be greatly appreciated. I also understand that this might be missing the topic of the thread, but I thought the right people might be reading this.

Are you trying to read the buttons or trigger the buttons? The adc is an input, so you might use that for reading the pins, but it’s not going to do anything for sending. What level are the wires at when the buttons are not pressed and what are you measuring against?

2 Likes

I am trying to trigger the button. I meant the DAC (i.e. esp32_dac). My bad.

When the buttons are depressed, this is what happens for the “non-composite” buttons (that I referred to as “easy” earlier). Note that HIGH means 5v and low means ~0.1v or so (don’t know the exact value, but pretty close to 0, definitely reads as LOW on a binary GPIO).

Button: Up
Wires: [HIGH, LOW, HIGH]
Button: Down
Wires: [HIGH, HIGH, LOW]
Button: Slot 2
Wires: [LOW, HIGH, HIGH]

When I press one of the composite buttons Slot 1, Slot 3 or Slot4, the signal on two of the three wires drops to approximately ~0.8v, but not all the way down to 0.

Button: Slot 1
Wires: [HIGH, 0.8v, 0.8v]

Button: Slot 3
Wires: [0.8v, HIGH, 0.8v]

Button: Slot 4
Wires: [0.8v, 0.8v, HIGH]

I measured the LOW and 0.8v values with the ADC pins on my ESP32 board, but also verified them with an external multimeter. The ADC maxes out at 3-ish v even with attenuation set all the way to 11db. So the 5v reading I was only able to get from my multimeter.

I haven’t actually tried dropping two wires all the way down to true LOW level at the same time to see what that will do. Maybe the 0.8v is some weird artifact caused by the remote but it’s just interpreted as LOW on the controller side. It doesn’t seem unreasonable that that might work.

I doubt that those buttons would be significantly different. 0.8V should be read as low.

2 Likes

Very interested to hear how you get on with this. I previously gave up on the presets…

What are the wire colours in order?

Is it:

[ 1. green (up), 2. yellow (down), 3. purple (?) ]

And are the wires pulled that way momentarily or until the desk has reached its position?

@Mahko_Mahko They are pulled momentarily.

But I figured it all out. The 0.8v was indeed just a regular LOW signal.
Here’s the ESPHome configuration to allow me emulating any button on my Uplift Desk:

output:
  - platform: gpio
    pin: GPIO21
    id: pin_7_green
    inverted: true
  - platform: gpio
    pin: GPIO22
    id: pin_8_yellow
    inverted: true
  - platform: gpio
    pin: GPIO17
    id: pin_6_purple
    inverted: true
  - platform: gpio
    pin: GPIO16
    id: pin_1_transparent
    inverted: true
    
button:
  # Simple Buttons
  - platform: output
    output: pin_7_green
    name: Up
    duration: 300ms
  - platform: output
    output: pin_8_yellow
    name: Down
    duration: 300ms
  - platform: output
    output: pin_6_purple
    name: 2
    duration: 300ms
  - platform: output
    output: pin_1_transparent
    name: M
    duration: 300ms
  # Combination Buttons
  - platform: template
    name: 1
    on_press:
      then:
        - output.turn_on: pin_7_green
        - output.turn_on: pin_8_yellow
        - delay: 300ms
        - output.turn_off: pin_8_yellow
        - output.turn_off: pin_7_green
  - platform: template
    name: 3
    on_press:
      then:
        - output.turn_on: pin_6_purple
        - output.turn_on: pin_8_yellow
        - delay: 300ms
        - output.turn_off: pin_8_yellow
        - output.turn_off: pin_6_purple
  - platform: template
    name: 4
    on_press:
      then:
        - output.turn_on: pin_6_purple
        - output.turn_on: pin_7_green
        - delay: 300ms
        - output.turn_off: pin_7_green
        - output.turn_off: pin_6_purple

The GPIO outputs are named in line with this layout:

Obviously the Up and Down buttons would better be switches, rather than buttons. Good enough for demonstration purposes though.

1 Like