Uplift Desk Automation
Message Syntax
Transmit
A transmitted message has the following syntax.
0xF1, 0xF1, <cmd>, 0x00, <crc>, 0x7E
0xF1, 0xF1indicates the message startcmdis one of:0x01- Up0x02- Down0x03- Save preset 10x04- Save preset 20x05- Recall preset 10x06- Recall preset 20x07- Sync0x25- Save preset 30x26- Save preset 40x27- Recall preset 30x28- Recall preset 40x2B- Stop
crcis the sum of the bytes at index 2 and 3.0x7Eindicates the end of message.
Receive
A received message has the following syntax.
0xF2, 0xF2, <cmd>, <len>, <data...>, 0x0F, <crc>, 0x7E
0xF2, 0xF2indicates the message startcmdis one of:0x01- Height value0x25- Preset 1 height0x26- Preset 2 height0x27- Preset 3 height0x28- Preset 4 height
lenindicates how many messages will be sent next, excluding the CRC and EOT.datawill contain the incoming data values, explained for height readings below.0x0F- Unknowncrcwill be the sum of bytes at index 2 up to the CRC.0x7Eindicates the end of message.
Example: Received Height Reading
When a new height value comes in, the message will look something like this:
0xF2, 0xF2, 0x01, 0x03, 0x01, 0x1B, 0x0F, 0x2F, 0x7E
In this case, the desk was at 28.3". Here is how we can calculate that.
- First off, the command is
0x01, so we know we're about to receive height data. - The next byte tells us to listen for 3 data bytes.
- The relevant data comes in as
0x01, 0x1B. This will be converted to a height value later. (Unclear what0x2Fdoes here) - Then, we add all of the previous bytes (other than the header) to verify the CRC is correct.
0x01 + 0x03 + 0x01 + 0x1B + 0x0F = 0x2F - The actual height is a two-byte word, so the first number needs to be bitshifted. In this example, we received
0x01, 0x1B, so the height calculation looks like:0x01 << 8 | 0x1B = 283. - Divide the received value by 10 to convert to inches. The result is
283 / 10.0 = 28.3in.
Preset Heights
A sync request will get a response with cmd 0x25, 0x26, 0x27, 0x28, then a regular 0x01 height. The 0x01 value is understood, but the preset height values are not yet understood. There is a two-word response, and the words change with the saved height value. The second word seems to be a decimal. I have not yet determined how to parse these into the stored heights.
Here is a table of example values. For heights that are the same, I would slightly adjust the table height and save again. The changed values suggest these are more specific than inches.
| Height | data[4] |
data[5] |
|---|---|---|
| 25.3 | 20 | 5 |
| 25.3 | 20 | 8 |
| 25.3 | 20 | 11 |
| 25.3 | 20 | 54 |
| 28.3 | 25 | 62 |
| 28.3 | 25 | 67 |
| 28.3 | 25 | 82 |
| 38.? | 42 | 207 |
| 39.9 | 45 | 153 |
| 39.9 | 45 | 156 |
| 40.0 | 45 | 168 |
| 42.4 | 50 | 7 |
| 42.8 | 50 | 188 |
| 42.9 | 50 | 231 |
| 43.0 | 51 | 8 |
| 43.1 | 51 | 27 |
| 43.2 | 51 | 104 |
| 50.8 | 64 | 161 |
References
Hardware
- "2ANKDJCP35NBLT Bluetooth Box by ZHEJIANG JIECANG LINEAR MOTION TECHNOLOGY CO., LTD". (2018, January 25). FCC ID. Retrieved January 19, 2021.
- Jiecang Bluetooth Dongle Product Listing. Retrieved January 19, 2021.
Images from /u/deadman96385
- https://imgur.com/a/MUbXwnM
- https://i.imgur.com/DyMf3Ee.jpg
- https://i.imgur.com/KtsWpVQ.jpg
- https://i.imgur.com/BS62C1E.jpg
- https://i.imgur.com/woWoQMe.jpg
- https://i.imgur.com/Lta5Nab.jpg
Software
- Justintout. (2020, April 16). GitHub - "justintout/uplift-reconnect: A Flutter app to control Uplift desks with Uplift Connect BLE modules installed". GitHub. Retrieved January 19, 2021.
- Deadman96385. (2020, March 6). "uplift_desk_controller_app/BluetoothHandler.java at a58bcadfb77ac993751758465f1cf20f71d6d8fd ยท deadman96385/uplift_desk_controller_app". GitHub. Retrieved January 23, 2021.
- Phord. (2021, August 12). "phord/Jarvis: Hacking the Jarvis standup desk from fully.com for home automation using an ESP8266 arduino interface". GitHub. Retrieved December 5, 2021.
- Ramot, Y. (2015, February 4). "UpLift Desk wifi link". Hackaday.io.
- Horacek, L. (2019, April 14). "Standing desk remote control". Hackaday.io.
- Hunleth, F. (2019, January 18). "Nerves At Home: Controlling a Desk". Embedded Elixir. Retrieved January 2021.
No comments to display
No comments to display