Skip to main content

Uplift Desk Automation

Message Syntax

Transmit

A transmitted message has the following syntax.

0xF1, 0xF1, <cmd>, 0x00, <crc>, 0x7E
  • 0xF1, 0xF1 indicates the message start
  • cmd is one of:
    • 0x01 - Up
    • 0x02 - Down
    • 0x2B - Stop
    • 0x03 - Save preset 1
    • 0x04 - Save preset 2
    • 0x05 - Recall preset 1
    • 0x06 - Recall preset 2
    • 0x07 - Sync
    • 0x25 - Save preset 3
    • 0x26 - Save preset 4
    • 0x27 - Recall preset 3
    • 0x28 - Recall preset 4
    •  
  • crc is the sum of the bytes at index 2 and 3.
  • 0x7E indicates the end of message.

Receive

A received message has the following syntax.

0xF2, 0xF2, <cmd>, <len>, <data...>, 0x0F, <crc>, 0x7E
  • 0xF2, 0xF2 indicates the message start
  • cmd is one of:
    • 0x01 - Height value
    • 0x25 - Preset 1 height
    • 0x26 - Preset 2 height
    • 0x27 - Preset 3 height
    • 0x28 - Preset 4 height
  • len indicates how many messages will be sent next, excluding the CRC and EOT.
  • data will contain the incoming data values, explained for height readings below.
  • 0x0F - Unknown
  • crc will be the sum of bytes at index 2 up to the CRC.
  • 0x7E indicates the end of message.

Received Height Message

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.

  1. First off, the command is 0x01, so we know we're about to receive height data.
  2. The next byte tells us to listen for 3 data bytes.
  3. The relevant data comes in as 0x01, 0x1B. This will be converted to a height value later. (Unclear what 0x2F does here)
  4. Then, we add all of the previous bytes (other than the header) to verify the CRC is correct.
    0x01 + 0x03 + 0x01 + 0x1B + 0x0F = 0x2F
  5. 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.
  6. Divide the received value by 10 to convert to inches. The result is 283 / 10.0 = 28.3in.

Height Calculation

To do. For now, see https://embedded-elixir.com/post/2019-01-18-nerves-at-home-desk-controller/.

Sources

  1. https://hackaday.io/project/4173-uplift-desk-wifi-link
  2. https://hackaday.io/project/164931-standing-desk-remote-control
  3. Height Calculation
  4. @justintout Spec Documentation
  5. FCC Listing
  6. Product Listing
  7. https://github.com/phord/Jarvis

/u/deadman96385

  1. https://github.com/deadman96385/uplift_desk_controller_app/blob/a58bcadfb77ac993751758465f1cf20f71d6d8fd/app/src/main/java/com/deadman/uplift/BluetoothHandler.java
  2. https://imgur.com/a/MUbXwnM
  3. https://i.imgur.com/DyMf3Ee.jpg
  4. https://i.imgur.com/KtsWpVQ.jpg
  5. https://i.imgur.com/BS62C1E.jpg
  6. https://i.imgur.com/woWoQMe.jpg
  7. https://i.imgur.com/Lta5Nab.jpg