A compact touchscreen dashboard for your desk. Live weather, Home Assistant sensors, habit tracking, focus timer, and a browser-based configurator. Runs on a $10 ESP32 display.
Everything here ships in the firmware. No extra installs, no accounts needed. Coming-soon features are on the roadmap.
The Python configurator runs locally and handles everything from compiling to OTA flashing. The Device UI lives on the device itself and needs no software at all.
You'll need a soldering iron for exactly nothing. Plug in the display, flash the firmware, done.
| Part | Notes | Link |
|---|---|---|
| ESP32-2432S028 ("Cheap Yellow Display") | 2.8" 320×240 resistive touchscreen, ~$10 | AliExpress ↗ |
| USB-C or Micro-USB cable | For initial flash only | — |
| 3D printed stand (optional) | Designed to fit the CYD snugly | MakerWorld ↗ |
# Clone git clone https://github.com/RolfKoenders/Deskbuddy.git cd Deskbuddy # Install PlatformIO CLI (skip if already installed) pip install platformio
# Copy the example file
cp include/secrets.h.example include/secrets.h
WIFI_SSID / WIFI_PASS: your network credentialsDEFAULT_LAT / DEFAULT_LNG: decimal coordinates for weather (e.g. 52.3676f, 4.9041f)DEFAULT_LOCATION: city name shown on the devicepio run --target upload
python configurator.py
secrets.hpython configurator.py or curl -X POST http://<ip>/update -F firmware=@firmware.binOpen http://<device-ip> in any browser on your network. Changes apply instantly and the device keeps running.
Every DeskBuddy exposes a small REST API on your local network. Send notes from Home Assistant automations, shell scripts, browser bookmarks, or anything that can make an HTTP request.
# Push a sticky note curl -X POST http://<device-ip>/api/note \ -H "Content-Type: application/json" \ -d '{"text": "Remember to water the plant"}' # One-liner via GET (save as a browser bookmark) curl "http://<device-ip>/note?msg=Stand+up+and+stretch"
curl http://<device-ip>/api/note
→ {"text": "Remember to water the plant"}
curl -X POST http://<device-ip>/api/note/clear
curl http://<device-ip>/api/status
→ {"uptime":3721,"ip":"192.168.1.42","wifi":"Online","habits_done":3,"habits_total":6,"hydration":5}
# Flash new firmware wirelessly (multipart form) curl -X POST http://<device-ip>/update \ -F "firmware=@.pio/build/esp32dev/firmware.bin" → OK. Rebooting...
rest_command in HA config, then call it from automations, for example to push "Washing done" when the washing machine finishes./api/hydration/reset endpoint with a morning HA automation to reset your water count at a custom time./note?msg= with a browser bookmark for instant one-click notes from any device on your network.Fill in your details below. Config saves to your browser automatically. Download the generated file and drop it into include/secrets.h, then run pio run --target upload.
include/secrets.h inside your cloned repo.pio run --target upload or open python configurator.py for the full local browser interface.