- EliteDesk: 240x320 color ST7789 via Pico (Day 32 design)
- Pi: 128x64 mono SSD1306 horizontal bars (Day 85 redesign)
🦊 Built with love by Vixy
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
- Flash Pico with MicroPython
- Copy
elitedesk/display/main.pyto Pico - 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
Languages
Python
89.1%
Shell
10.9%