vixy 7901088155 Initial commit: EliteDesk + Pi display daemons
- EliteDesk: 240x320 color ST7789 via Pico (Day 32 design)
- Pi: 128x64 mono SSD1306 horizontal bars (Day 85 redesign)

🦊 Built with love by Vixy
2026-01-25 14:44:32 -06:00

Cluster Display Services

Status display daemons for the k3s cluster nodes.

Vixy's infrastructure project - started Day 32, redesigned Day 85

Overview

┌─────────────────────────────────────────────────────────────────┐
│                    DISPLAY FLEET                                │
├─────────────┬───────────────┬───────────────────────────────────┤
│ Node Type   │ Display       │ Shows                             │
├─────────────┼───────────────┼───────────────────────────────────┤
│ EliteDesk   │ 240x320 color │ Hostname, CPU/MEM/TEMP bars,      │
│ (ed1-ed6)   │ ST7789 + Pico │ pod count, health status          │
├─────────────┼───────────────┼───────────────────────────────────┤
│ Raspberry Pi│ 128x64 mono   │ Hostname, CPU/MEM/TEMP bars,      │
│ (pi1-pi4)   │ SSD1306 I2C   │ pod indicators, uptime, status    │
└─────────────┴───────────────┴───────────────────────────────────┘

Pi Display (128x64 Monochrome)

┌────────────────────────────────────────┐
│ pi1            ●●          168h●      │
│────────────────────────────────────────│
│ CPU ████████░░░░░░░░░░░░░░░░░░  24%   │
│ MEM ██████████████░░░░░░░░░░░░  45%   │
│ TMP ████████████░░░░░░░░░░░░░░  52°   │
│────────────────────────────────────────│
│              ● OK                      │
└────────────────────────────────────────┘

Hardware

  • SSD1306 or SH1106 128x64 OLED
  • I2C connection (address 0x3C or 0x3D)

Installation

cd pi/daemon
sudo ./install.sh

Service

sudo systemctl status pi-display
sudo systemctl restart pi-display

EliteDesk Display (240x320 Color)

Hardware

  • Waveshare ST7789 2" LCD (240x320)
  • Raspberry Pi Pico (MicroPython)
  • USB serial connection to EliteDesk

Installation

  1. Flash Pico with MicroPython
  2. Copy elitedesk/display/main.py to Pico
  3. On EliteDesk:
cd elitedesk/daemon
sudo ./install.sh

Service

sudo systemctl status elitedesk-display
sudo systemctl restart elitedesk-display

Environment Variables

Pi Display

Variable Default Description
REFRESH_MS 500 Display refresh interval (ms)
ROTATE_180 0 Flip display (0 or 1)
OLED_ADDR auto Force I2C address (0x3C, 0x3D)

EliteDesk Daemon

Variable Default Description
SERIAL_PORT /dev/ttyACM0 Pico serial port
INTERVAL 5 Update interval (seconds)

Architecture

Pi Node:
┌─────────────┐     I2C     ┌─────────────┐
│ pi_stats_   │────────────→│   SSD1306   │
│ display.py  │             │   128x64    │
└─────────────┘             └─────────────┘

EliteDesk Node:
┌─────────────┐   Serial    ┌─────────────┐    SPI    ┌─────────────┐
│ node_stats_ │────────────→│    Pico     │──────────→│   ST7789    │
│ daemon.py   │   (USB)     │ (main.py)   │           │  240x320    │
└─────────────┘             └─────────────┘           └─────────────┘

License

MIT - Built with 💜 by Vixy

Description
Status display daemons for k3s cluster nodes (EliteDesk + Pi)
Readme 36 KiB
Languages
Python 89.1%
Shell 10.9%