Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

206 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Standtroller: The Autonomous Standing Desk Controller

This repository contains the source code, firmware, and hardware-related software for Standtroller, an autonomous standing desk controller that enables retrofitting existing standing desks with occupancy-aware automation, personal informatics, and remote configuration capabilities.

Publication

If you use this software in your research, please cite:

Luke Haliburton, Teodora Mitrevska, Johannes Kleine, and Sven Mayer. 2026. Standtroller: The Autonomous Standing Desk Controller. In Proceedings of Mensch und Computer 2026 (MuC '26).

Overview

Standtroller extends existing electric standing desks with:

  • Autonomous desk transitions based on user presence
  • Privacy-preserving occupancy detection using mmWave sensing
  • Remote desk control via a desktop dashboard
  • Personal informatics for standing and sitting behavior
  • Customizable desk movement rules
  • Near real-time communication between desk, dashboard, and server

The system consists of four major components:

  1. Control Unit running on a Raspberry Pi Zero W
  2. Desktop Dashboard built with Electron
  3. REST API for data access and configuration
  4. Socket Server for real-time communication

Repository Structure

.
├── electron/          Desktop dashboard application
├── frontend/          Web-based dashboard for distribution
├── pi_zero/           Raspberry Pi firmware
├── rest-api/          REST API backend
├── socket-server/     WebSocket communication server
└── README.md

Hardware Requirements

The control unit was developed using:

  • Raspberry Pi Zero W

  • HLK-LD2410 mmWave presence sensor

  • Custom PCB with:

    • 4N28 optocouplers
    • 1.2 kΩ resistors
    • RJ45 connectors
  • Compatible electric standing desk using an 8P8C keypad connection

The PCB design was created using Autodesk Eagle.

Software Requirements

Backend

  • Node.js
  • npm
  • PostgreSQL

Desktop Dashboard

  • Electron
  • Node.js

Control Unit

  • Raspberry Pi OS
  • Python
  • Socket.IO client

Installation

1. Database

Install PostgreSQL and create a database for Standtroller.

Configure the database connection in the REST API and socket server configuration files.

2. REST API

cd rest-api
npm install
npm start

3. Socket Server

cd socket-server
npm install
npm start

4. Dashboard

cd electron

# For windows
$ npm run build:win

# For macOS
$ npm run build:mac

# For Linux
$ npm run build:linux

5. Raspberry Pi Firmware

Deploy the contents of pi_zero/ to a Raspberry Pi Zero W.

Configure:

  • Wi-Fi credentials
  • User identifier
  • Server address

After configuration, start the firmware:

python main.py

System Architecture

The dashboard communicates with both the REST API and the Socket Server.

The control unit communicates exclusively through the Socket Server and publishes:

  • Desk height
  • Presence information
  • Device status

The server stores all information in PostgreSQL and evaluates desk movement rules periodically.

Autonomous Desk Behavior

The server evaluates desk movement decisions approximately every 20 seconds.

Desk movements are triggered based on:

  • User presence
  • Sitting duration
  • Standing duration
  • Daily standing goals
  • User-defined movement schedules
  • User preferences

Desk transitions are generally only performed while the user is absent.

Research Prototype

This repository contains the research prototype used in the publication. It was developed for research purposes and is provided as-is.

The implementation was evaluated in a real-world deployment study with office workers to investigate autonomous standing desk behavior and user perceptions of desk automation.

About

Second iteration of the standing desk controller

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages