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
This commit is contained in:
2026-01-25 14:44:32 -06:00
commit 7901088155
8 changed files with 1072 additions and 0 deletions

109
README.md Normal file
View File

@@ -0,0 +1,109 @@
# 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
```bash
cd pi/daemon
sudo ./install.sh
```
### Service
```bash
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:
```bash
cd elitedesk/daemon
sudo ./install.sh
```
### Service
```bash
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