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

It is a good first project for ESPHome.

I’ve also tried ultrasonic/ToF approaches but I think you are much better off getting the desk height from the desk as that will unlock a lot of functionality for you.

Not sure this desk has the smarts to know that without the more functional controller? Or are you saying it is available from the controller unit, in which case I might actually need to wire up all the pins and not just the 4 wires from my up/down switch…

The version I got is the lower of the two in this pic:

Yeah if your simple control panel plugs in to a RJ45 port (which has 8 wires), then I suspect that even though your simple control panel doesn’t use them all (it only uses 4 wires), the controller port will still send height data on one of the pins which you can still intercept and use. So yes you might wire up more pins but pass through just the 4.

The port has to have that functionality in case you upgrade your control panel.

That’s what I reckon anyway. No guarantees. If you can send a pic of the ports on the control box that would help.

I reckon you should buy the essential parts for the project. Cheap enough and decent chance of success. 1 x esp and 1 x RJ45 breakout.

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