Gottcha. There were a few of us on this thread that could only seem to get it working with pin 1. Three of us iirc…
Thanks for replying back and helping me Mahko and @ssieb
I have configured the D1 through ESPHome in Home Assistant, initially with the debug on GPIO3 (RX) and when I do that, basically the desk stops showing the values on the screen of the controller keyboard. Buttons work normally but there’s no display.
I’ve placed the configuration here: config rx3 4bytes debug - Pastebin.com to not overload the post I’m doing here, and the log is here: pastebin.com/aLFVua55 .
After this attempt, I went and changed the bytes from 4 to 9 on the config, everything else remained the same. Config here: pastebin . com/VCebH2dA and output here: pastebin . com/D0Rr2Nyn .
Both outputs were logged with me just pressing up or down in the controller keyboard.
This (pastebin . com/LBRYKkP7) 3rd output was from the 2nd memory slot when I pressed it until the desk stopped.
Question: Could it be that my controller is different somehow and the wiring is different as well?
PS: Can only put 2 links in a post… had to separate the pastebin from the TLD.
Couple of random thoughts. My gut feel is this will be ok but you’ve got to work through some buggy UART thing.
First step would probably be to work on getting some clean/consistent UART messages and then see if they are the same or different. You’ll need to tinker. You seem to be receiving something roughly resembling the right data, so that’s a start. As you mentioned it seems noisy.
I don’t have much depth of understanding of these things but here’s some things I would try:
- Repeat the previous steps but power the ESP via a separate good quality power supply and USB cable (best ones you have from your phone etc).
- Rewire your whole set-up and make sure all connections are really good. Especially the rx wires and grounds. Ground not being right can create noise.
- Did you have a go at trying the previous steps with rx_pin: 1 #Labelled TX ?
This is how I got it working using Bluetooth, but without ESPHome or any of the goodness in this thread: Automatically raise your desk when joining a Microsoft Teams call or meeting – Loryan Strant, Microsoft 365 MVP
I’ve actually since replaced the Bluetooth-based solution with this one, and have my code up here for the various sensors and components:
I finally got around to testing accessing the native memory presets as per a few posts above this one.
I can confirm the soft start/stop works with this, which is nice.
I might even move over to this approach as my main “go to height” method.
You only really need to connect up one more wire - the purple pne.
Presumbly this wouldn’t interfere with any other native functionality like collision detection etc too.
The Jarvis project also gives a nice overview of the control lines, which I believe are the same.
The project also has known commands for things like setting each memory slot to the current height, which I haven’t looked into and probably am not motivated enough to;)
The thread for turning your Desktronic desk into a smart desk can be found here: Turn your Desktronic standing desk into a smart desk!
Thank you @Mahko_Mahko and @ssieb for your work.
I can confirm that this works on the (new) version of the BOHO OFFICE Basic Line desk.
I can also confirm that I could only get it working by using Pin D1 (5) on my ESP8266 D1 Mini.
I could not get it working by using Pin RXD (3).
I also got @dev0 method working (minus button 4 because it does not exist on my desk) and I plan on controlling the buttons via their method and get the current hight via @ssieb custom component.
The only thing I am still trying to figure out with @dev0 method is how I can e.g.: press the button “Up” with my mouse for a long(er) time which results in the button actually being pressed for a longer time. So that the behavior is the same as when I keep pressing down on the actual physical control panel button with my finger.
(image of the control box of my BOHO OFFICE Basic Line desk)
Nice! I’ve added your desk to the “works with” list.
I don’t believe there is a way to mimic a “hold down button” action in ESPHome.
I think the best you can do is making a gpio switch for that wire/pin, which you’d to turn on while you want the desk to move and then turn off to stop it. Not the best but it works.
Hello,
I have an issue with setting up my desk to esphome.
My esphome yaml file for testing purposes:
uart:
- id: desk_uart
baud_rate: 9600
rx_pin: GPIO25 # R pin
debug:
after:
timeout: 10ms
dummy_receiver: true
sequence:
- lambda: UARTDebug::log_hex(UART_DIRECTION_RX, bytes, ':');
- id: desk_uart1
baud_rate: 9600
rx_pin: GPIO27 # T pin
debug:
after:
timeout: 10ms
dummy_receiver: true
sequence:
- lambda: UARTDebug::log_hex(UART_DIRECTION_TX, bytes, ':');
Im using quin-esp32 board, and I soldered on my display controller T,R and GND wires and connected them to my esp32.
After run command, in my debug console, hexdecimal values are just running in infinite loop.
When I press some button on my display controller, I can see that these numbers are changed, but Im stuck from this point on, Im not sure what I need to do? I can see some reptetive pattern, but still Im not sure what is the correct block of hexdecimal values to extract some important inormation from it?
Any help would be apprecieted,
tnx
Hi.
What brand and model is your desk?
Is it a Jiecang controller?
Hi @Mahko_Mahko
Well, Im not sure, because I bought the desk from some local reseller.
But I have images, maybe you can find some markings and to match manufactrer:
awesome! So, can this be implemented into the ESPHome code or something like that?
that soft start/stop
Looking at that (particularly the number of wires), I’m pretty confident that this is not a Jiecang controller or a compatible desk.
The Desky component will not work. If you cannot find another matching project you will need to start your own project (and own thread).
You’ll see another would-be user had to do this here and has made great progress.
thanks for the info.
the main issue is that I can not find the reseller. maybe its easier or me to buy another desk controller, I’m not sure.
Definitely I will open a separate thread.
Apparently this is this desk controller: NT33-2B2 Sit to Stand Up Office Desk Motorized Standing Desk - Buy Sitting Desk, height adjustable desk, high adjustable desk Product on SHAOXING NAITE DRIVE TECHNOLOGY CO.,LTD
I’m guessing… But there has been a proliferation of cheap Chinese desks (not sure if this is one?). I suspect many work very similarly.
So I would hunt around other projects and see if you can spot a similar one. Then use or adapt it.
Yes. You basically just use/adapt/add this to trigger the memory presets, which use the soft start/stop.
thanks, so that I understand this. What do I add to trigger the memory presets?
Here’s the relevant excerpt from my config. Note the Purple wire needs to connected to a GPIO.
substitutions:
#Use your own ESP pin values
desky_request_height_pin: GPIO32 #Request desk height | white wire
desky_purple_pin: GPIO04 #purple wire
desky_down_pin: GPIO23 #Move desk down | yellow wire
desky_up_pin: GPIO05 #Move desk up | green wire
output:
- platform: gpio
pin: ${desky_up_pin}
id: up_green_wire
inverted: true
- platform: gpio
pin: ${desky_down_pin}
id: down_yellow_wire
inverted: true
- platform: gpio
pin: ${desky_purple_pin}
id: purple_wire
inverted: true
button:
# Combination Buttons
- platform: template
name: 1
id: button_1
on_press:
then:
- output.turn_on: up_green_wire
- output.turn_on: down_yellow_wire
- delay: 300ms
- output.turn_off: down_yellow_wire
- output.turn_off: up_green_wire
- platform: output
output: purple_wire
name: 2
id: button_2
duration: 300ms
- platform: template
name: 3
id: button_3
on_press:
then:
- output.turn_on: purple_wire
- output.turn_on: down_yellow_wire
- delay: 300ms
- output.turn_off: down_yellow_wire
- output.turn_off: purple_wire
- platform: template
name: 4
id: button_4
on_press:
then:
- output.turn_on: purple_wire
- output.turn_on: up_green_wire
- delay: 300ms
- output.turn_off: up_green_wire
- output.turn_off: purple_wire
# - platform: template
# name: Set memory 3
# id: set_memory_3
# on_press:
# then:
# - uart.write:
# id: desk_uart
# data: [0xF1, 0xF1, 0x25, 0x00, 0x25, 0x7E]
# - uart.write: [0xF1, 0xF1, 0x25, 0x00, 0x25, 0x7E]
```
ok thanks!
So, at the moment, I have it wired as suggested above
I’ll have to add an extra wire from the purple pin (or slot 3 on the above figure) of the adapter and place it on any of the empty pins on the D1 Mini?