希望用一個頁面,來查看整個系統的狀態,所以需要實作頁面,監看整套冰箱下的四大類資源。
System
├── Hardware
├── CPU Temperature
├── Disk
└── Meshtastic USB
├── Operating System
├── CPU Usage
├── RAM Usage
└── Uptime
├── Network
├── LAN
├── Internet
└── Wi-Fi / Ethernet
├── Application
├── FastAPI
├── SQLite
├── Photo Storage
└── Last ESP32 Upload
透過純文字的方式顯示如下 (也方便呈現在 LED 螢幕)
┌─────────────────────────────────────┐
│ 🧊 beggarFridge System Health │
│ │
│ Overall Status HEALTHY │
├─────────────────────────────────────┤
│ Raspberry Pi │
│ CPU 18% │
│ RAM 43% │
│ Temp 51.2°C │
│ Disk 37% │
│ Uptime 4d 08h │
├─────────────────────────────────────┤
│ Network │
│ LAN OK │
│ Internet OK │
│ Meshtastic OK │
├─────────────────────────────────────┤
│ Services │
│ FastAPI OK │
│ SQLite OK │
│ ESP32 Camera OK │
│ Last Upload 2 min ago │
└─────────────────────────────────────┘
透過 psutil 套件抓取用量
import psutil
cpu_percent = psutil.cpu_percent(
interval=0.5
)
memory = psutil.virtual_memory()
print(
"CPU:",
cpu_percent,
)
print(
"RAM:",
memory.percent,
)
from pathlib import Path
def get_cpu_temperature():
path = Path(
"/sys/class/thermal/"
"thermal_zone0/temp"
)
value = int(
path.read_text().strip()
)
return value / 1000