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.
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.
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
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
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.
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.
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).
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 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.
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 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