We see so many standing desks left in the sitting position. There are millions of sit/stand desks in the world, and almost none of them are being used to their full potential! That's a shame, and it's robbing people of the health benefits these desks were created for in the first place.
That's why we created Tempo, and why it's important to make it as universally compatible as possible.
Many Handset Interfaces
People have been asking how Tempo can be compatible with so many desks. While it is true that there are many desk “brands”, there are fewer actual manufacturers of desks, because manufacturers often sell their desks under multiple brand names. Even so, there are multiple manufacturers of desks, each with a different interface between the control box (power electronics that drive the motors) and the handset (Tempo or other controller with a user interface). The short answer is we provide adapters to do any necessary electrical changes and to indicate to Tempo which communication method to use. Here’s a bit about how that works.
For now, Tempo only supports desks with a two-piece control box/handset configuration, not desks that have both in one piece. On all desks that have the two-piece configuration, the interfaces between the control box and the handset have some things in common:
- Power to the handset
- A serial data signal to tell the handset the current height
- Some way for the handset to tell the control box to change the desk height (typically either a serial data signal or dedicated wires directly from the buttons)
The details of how these are implemented varies between desks, so we determine the following and make the necessary adjustments:
- Power supply voltage and current supplied vs. what Tempo requires
- Signal levels (voltage level for digital “high” vs. “low” signals)
- Connector pin assignments
- Serial protocol and data rate
- Serial vs. dedicated button signals to the desk
The first 3 bullets are handled by the adapter, and the last two are handled by firmware in Tempo. For Tempo’s firmware to know which communication methods to use, we have two signal wires on the cable between the adapter and Tempo to indicate which adapter is connected.
In Tempo’s object-oriented firmware, there are separate pieces of code (child classes) for each type of desk that hide the details of each desk from the rest of the code (i.e., they inherit from a parent ‘desk’ class). Based on which adapter is connected, we just use (instantiate) the corresponding piece of code (child).
Determining exactly what each adapter and desk-specific piece of firmware need to do involves figuring out all the intricacies of each new type of desk. In each case, we connect the handset supplied with the desk, and with our oscilloscope attached, we push buttons on the handset to control the desk. We take measurements to determine the signal levels, pin assignments, and serial standards used. Then we dig into the serial data details to catalog the communication between the handset and the control box in every conceivable situation. We test every feature in the desk’s user manual and anything else we can think of that the user might do, including all known error cases.
Once we understand the desk, we next decide how to map what Tempo needs to do into things the desk knows how to do. For example, consider a user who sets a min or max height in Tempo’s menus. For desks that have this feature built in natively, we forward the user’s request to the desk. For desks that don’t have this feature built in, we enforce min and max heights by monitoring the height ourselves with firmware in the handset.
So, we buy a desk from each manufacturer, and repeat the above process. We often don’t know all the names that desks are sold as, which is where you, as users, can help us build a complete brand and model compatibility list by sending us pictures to confirm that the electronics are types that we support.