2026-02-15 12:57:05 +09:00
2026-02-15 12:57:05 +09:00
2026-02-15 04:15:30 +09:00
2026-02-15 12:57:05 +09:00
2026-02-15 04:15:30 +09:00
2026-02-15 12:57:05 +09:00
2026-02-15 04:15:30 +09:00
2026-02-15 04:15:30 +09:00
2026-02-15 02:48:59 +09:00
2026-02-15 02:48:59 +09:00
2026-02-15 12:35:25 +09:00
2026-02-15 04:15:30 +09:00

Pi Dashboard

Raspberry Pi system monitor running on a Waveshare ESP32-S3 RLCD 4.2" board. Connects to a Pi over WebSocket, parses JSON stats, and renders a live dashboard on a 400x300 1-bit monochrome reflective LCD using LVGL.

Hardware

  • Board: Waveshare ESP32-S3 RLCD 4.2"
  • Display: 400x300 reflective LCD (1-bit monochrome, no backlight needed)
  • Sensors: SHTC3 temp/humidity (I2C 0x70), PCF85063 RTC (I2C 0x51)

Architecture

Pi (server)                    ESP32-S3 (client)
stats_server.py  --WS/JSON-->  ws_client --> dashboard_ui (LVGL)
                                            + local sensors (SHTC3)

The Pi runs a WebSocket server that pushes system stats (CPU, memory, disk, temperature, network, services) as JSON every 2 seconds. The ESP32 parses the JSON and updates LVGL widgets. A data staleness watchdog forces reconnection if the server goes silent.

Configuration

Edit components/esp_wifi_bsp/wifi_config.h:

#define WIFI_SSID       "your_ssid"
#define WIFI_PASSWORD   "your_password"
#define WS_SERVER_URI   "ws://192.168.x.x:8765"

Build and Flash

Requires ESP-IDF v5.5+.

idf.py build
idf.py flash monitor

Mock Server

Test without a real Pi using the mock server:

pip install -r pi/requirements.txt
python pi/mock_server.py

Sends randomized stats on ws://0.0.0.0:8765 every 2 seconds.

Description
something for monitoring my pi on my desktop
Readme 4.8 MiB
Languages
C 97%
C++ 3%