- EliteDesk: 240x320 color ST7789 via Pico (Day 32 design)
- Pi: 128x64 mono SSD1306 horizontal bars (Day 85 redesign)
🦊 Built with love by Vixy
110 lines
4.6 KiB
Markdown
110 lines
4.6 KiB
Markdown
# 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
|