Project help - Standing Desk to Smart Desk

I recently bought this height adjustable table frame from Amazon. It works great so far, but I would like to integrate it into Home Assistant. My goal would be to get the height reading, set memory heights, and raise/lower the desk. All by not changing/soldering anything to the desk, preferably by creating a pass-through dongle, like in this post.



Unfortunately, I’m completely new to Home Assistant and I only have a very basic understanding of electrical engineering. I did some research on this topic, but it seems my desk is different from those that could already be reverse engineered and integrated into Home Assisstant.
This is a system diagram for a different desk, but mine basically works the same without the Bluetooth dongle RJ12 port.



AC goes to power, M1 goes to motor 1, M2 goes to motor 2 and HS goes to the controller panel.



Although I expect my desk to work very similarly, I haven’t been able to get any readings between the control box and the controller. I tried by using a RJ45 Splitter and a Logic Analyzer. While being connected like that the desk and controller didn’t work at all.

My desk only has a 6-wire connection to the RJ45 connector, while all other desks I could find online have 8 wires.



Here are some more images of the control box and controller:






I would appreciate any help regarding my project! Especially how to reverse engineer the protocol and build a pass-through dongle.

Thanks in advance! :slight_smile:

The print on main circuit board of connector used to communicate with the wired remote indicates some TX/RX pins so it looks to be an UART communication ! Although KEY pins not sure what it can be :confused:
Can you see a readable print on IC that is aside the buzzer on components side ? it might give some clues about manufacturer or how it works :wink:

Thanks for your reply! I checked and here‘s a picture of that Chip with it‘s print.

1302 X
032B
84PVNX87
IF2 G2103

OEM might be AOKE based on wp-cb01 search?

https://www.google.com/search?q=wp-cb01+control+box+standing+desk+&sxsrf=ALiCzsbEy9wTs3WYlq40a-ZBU2LVOoum8w%3A1661043346664&ei=koIBY7WJKL223LUPyOWV0AY&oq=wp-cb01+control+box+standing+desk+&gs_lcp=ChNtb2JpbGUtZ3dzLXdpei1zZXJwEAMyBQghEKABMgUIIRCgATIFCCEQoAE6CAgAEIAEELADOgYIABAeEBZKBAhBGAFQzAhYhSVgmSpoAHAAeACAAaECiAHaCZIBAzItNZgBAKABAcgBAcABAQ&sclient=mobile-gws-wiz-serp

Also worth browsing this project and the associated Discord thread.

Are you sure the RJ45 splitter you’re using actually splits the wires as you’re expecting?

I don’t know much about them but seem to recall they don’t work as you might intuitively think.

Maybe 4 wires go to each split or something.

I found that brand too, but looking at their offerings, none of the desks really seem to match perfectly. I also contacted the seller via e-mail and asked for schematics or a protocol but no answer yet.

1 Like

Oh yeah, you are totally right. I saw someone else use it to read out data, but the picture you posted is correct.

Do you have any other suggestions on how to read out any data, without soldering anything to the desk?

You could try your logic analyser on these. They look like they just connect to the wires?
Maybe just hold/rest a male Dupont pin in the holes to make the connection.

That was basically what I was doing initially until I figured out the schema.

I would trace these tx/rx wires to the control handset and focus on them initially

You could also basically build the pass-through, but the wires go to your logic analyser rather than the esp (at least initially, then hook them up to the ESP once you have some signals).

Thanks for your reply! I will try that. If the holes connect to the wires, why are there only 5 holes but 6 wires? :confused:

And what is the difference between B-TX and D-TX, B-RX and D-RX?

If I try to build the pass-through dongle, I would need to have each wire go to the analyzer as well as the controller, right?

Maybe the 6th wire runs off somewhere else. It could be the earth or power. You can maybe see another trace at the very right.

I have no clue about the B/D convention. Perhaps it is referring to what device it is in reference to (either the controller or remote).

I don’t have much clue about the above though.

When you build the pass through, the important thing should be that the original wires all pass through as they did originally and the controller works as it should.

Then you also fork off your 6 wires. They shouldn’t need to be connected to anything. They can hang. Then you should be able to test them one by one and check for signals.

But again, I’m not very experienced with this, so could be wrong.

I think this is suggesting the wires are

“P”, RX, TX, 5v, Ground.

P could be something like “program” or “presets” or “wake”.

The presets could be transmitted on a dedicated wire.

I did some testing with a multimeter and it turns out, that the wires are connected the following way:

Controller → Control Box
P → Key1
R → D-TX
T → D-RX
5 → +5V
G → G

I hooked up my logic analyzer to the holes in the controller and I get different readings if I press the buttons. The problem is that I have no idea how to properly analyze any of that data. Which settings to use in the logic analyzer software ( I use Logic 2 by saleae) and how to decode them.

Any tips/ideas on that? :slight_smile:

1 Like

I don’t use logic analysers much.

But Sigok software that I use (and presumably others) have “UART decoders” you can turn on.

See images.

https://www.google.com/search?q=sigrok+uart+decoder&prmd=isvn&sxsrf=ALiCzsZIy9BGmemcLpH3R86-t1w9-V3TSw:1661113082483&source=lnms&tbm=isch&sa=X&ved=2ahUKEwji7dm54Nj5AhXTE7cAHcH3DOYQ_AUoAXoECAIQAQ&biw=393&bih=689&dpr=2.75

I would initially see if you can figure out which wire of the Rx or tx is sending height data from the controller to the handset.

There should be quite a lot of data changing on this wire, as it’s sending data to update the screen. I think it will be on the “R” pin.

1 Like

Once you’ve confirmed you’ve got UART codes, you’re into decoding stage (which again I don’t have much experience with).

You probably want to decide soon if you’re going down a Home Assistant+ ESPHome route, and get ready for that.

You can also start decoding messages with the ESPHome UART debugger.

And then I’d also start a thread on the ESPHome Discord and cross your fingers that @ssieb might help you out. Refer to Desky and this thread etc.
That’s where the real guru’s are active;) There will be a lot of experience over there with decoding and also the next step after that, which could be building a custom component.

I can help you a bit over there over too.

1 Like

Decode UART

1 Like

Thanks a lot @Mahko_Mahko! I will have a look into that :blush:

1 Like

This guy seems to have the same desk.

I don’t seem to have access to that discord channel. Is it on the esphome discord?

Edit: Nevermind, I joined the discord. Thanks for mentioning me! :slight_smile:

1 Like

I got the sigrok pulseview software working. My main problem is knowing which parts of the data are corresponding with the button presses because there is a constant data flow even if no button is pressed and the LED Display is off. And I couldn’t find a timestamp function to start and stop, when I press a button :confused:

One thing that might be worth checking (and again with me not knowing much about these things) is if your analyser needs to be grounded properly.

I know I had lots of noise coming through when I was reading data on my esp32 without correct grounding.

1 Like