# 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