This commit is contained in:
parent
ca2dac8c78
commit
6a048792eb
3 changed files with 2250 additions and 6 deletions
|
|
@ -7,7 +7,7 @@ APU_HWMON="/sys/class/hwmon/hwmon5" # APU sensor
|
|||
GPU_HWMON="/sys/class/drm/card0/device/hwmon/hwmon4" # dGPU sensor
|
||||
INTERVAL=1 # seconds between refreshes
|
||||
LOGFILE="power_log.csv" # CSV output file
|
||||
MAX_LINES=500 # limit to last 500 lines
|
||||
RETENTION_SECONDS=3600 # keep roughly 1 hour of samples
|
||||
|
||||
# --- Helpers ---
|
||||
read_watts() {
|
||||
|
|
@ -57,12 +57,16 @@ while true; do
|
|||
# --- Append to CSV ---
|
||||
echo "$TIME,$APU_PWR,$GPU_PWR,$TOTAL,$APU_TEMP,$GPU_TEMP" >> "$LOGFILE"
|
||||
|
||||
# --- Keep only last $MAX_LINES lines ---
|
||||
# --- Keep roughly 1 hour of samples (plus header) ---
|
||||
MAX_SAMPLES=$(( (RETENTION_SECONDS + INTERVAL - 1) / INTERVAL ))
|
||||
MAX_LINES_WITH_HEADER=$(( MAX_SAMPLES + 1 ))
|
||||
LINES=$(wc -l < "$LOGFILE")
|
||||
if (( LINES > MAX_LINES )); then
|
||||
tail -n $MAX_LINES "$LOGFILE" > "${LOGFILE}.tmp" && mv "${LOGFILE}.tmp" "$LOGFILE"
|
||||
if (( LINES > MAX_LINES_WITH_HEADER )); then
|
||||
{
|
||||
head -n 1 "$LOGFILE"
|
||||
tail -n "$MAX_SAMPLES" "$LOGFILE"
|
||||
} > "${LOGFILE}.tmp" && mv "${LOGFILE}.tmp" "$LOGFILE"
|
||||
fi
|
||||
|
||||
sleep $INTERVAL
|
||||
done
|
||||
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ import matplotlib.pyplot as plt
|
|||
|
||||
CSV_PATH = "power_log.csv"
|
||||
OUTPUT_FILE = "power_graph.png"
|
||||
RETENTION_SECONDS = 3600
|
||||
|
||||
print(f"📊 Reading {CSV_PATH}...")
|
||||
|
||||
|
|
@ -23,6 +24,11 @@ df = pd.read_csv(
|
|||
|
||||
# --- Convert timestamps ---
|
||||
df["timestamp"] = pd.to_datetime(df["timestamp"], errors="coerce")
|
||||
latest_ts = df["timestamp"].dropna().max()
|
||||
if pd.notna(latest_ts):
|
||||
cutoff = latest_ts - pd.Timedelta(seconds=RETENTION_SECONDS)
|
||||
df = df[df["timestamp"] >= cutoff]
|
||||
|
||||
df["time_fmt"] = df["timestamp"].dt.strftime("%Y-%m-%d %H:%M:%S")
|
||||
|
||||
# --- Downsample if too many entries ---
|
||||
|
|
@ -61,4 +67,3 @@ plt.grid(axis="y", alpha=0.3)
|
|||
plt.tight_layout()
|
||||
plt.savefig(OUTPUT_FILE, dpi=150)
|
||||
print(f"✅ Saved graph: {OUTPUT_FILE}")
|
||||
|
||||
|
|
|
|||
2235
power_log.csv
2235
power_log.csv
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue