Files
felhom.eu/documentation/audits/poweroff-2026-10-13/README.md
T
admin b4dcf4b373
gates / gates (push) Successful in 6m35s
Power-off spike (Part A) on the N100: plugswitch, wall-power figures, the hub's view
plugswitch.py refuses 'off' unless 20 s of readings show the N100 is already off (standby + 1 W,
no ping); 7 tests, each check red-proofed. By hand: guest shutdown 12 s, host off, 0.0 W; the hub
stayed silent and 'ONLINE' for 18 min; plug off/on did not start the N100, its power button did
(dashboard in 42 s). Wall figures into SIZING.md 4 and sizing.json power (8.5 / 20.7 / 0.0 W).
2026-10-13 19:15:08 +02:00

35 lines
3.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Turning a Felhom machine off — Part A spike on the N100, 2026-10-13
By hand, no product change. Bench: N100 `demo-felhom` (host `felhom-pve`, guest 9201), on the Tuya meter plug
(`scripts/bench/plugmeter.py`, 2 s). Times are UTC. No key, device id or token here; the household's e-mail address in
the hub page captures is replaced by `<household e-mail>`.
## Results
| Step | What happened | File |
|---|---|---|
| A0 `plugswitch.py` | `off` refused while the N100 ran: „no standby_w" and „the machine answered a ping" (rc 2). First live `off` refused „only 16 s of readings" — slow plug reads shortened the window (a tool bug, fixed: read until the readings span 20 s); the second was allowed: 5 readings over 22 s at 0.0 W, no ping | `A4-plug.log` |
| A1 at rest | 10 min, 212 rows: **8.46 W mean, 7.2 W median**, sd 2.76, 6.3–19.1 W | `A1-rest.csv` |
| A1 at work | Immich deployed through the product (deploy 202 → running in 98 s), 200 photos uploaded (200/0), every job queue empty after 442 s: **20.7 W mean, 24.0 W busiest 60 s, 25.2 W max**. Removed through the product: stop 200, remove 200, no leftovers; photo set and bench folder deleted | `A1-work*.{csv,json,txt,log}` |
| A2 checks | no active Proxmox task, no backup/restore/update/swap line in the controller log for 20 min | `A2-before.txt` |
| A2 guest | `pct shutdown 9201 --timeout 120` at 16:43:35 → stopped, **12.3 s**, rc 0 | `A2-steps.log` |
| A2 host | `systemctl poweroff` at 16:43:53 → no ping 16:44:06 (13 s) → plug **0.0 W** from 16:44:15 | `A2-A4-power.csv` |
| A2 standby | **0.0 W** for 18 min, 254 readings (below the plug's 0.1 W step) | `A2-A4-power.csv` |
| A3 hub | 18 min after power-off: hosts page still **ONLINE**, cloudflared „running (connected)" (the last report), „Last Report 18 min ago", box connection „last connected 16:45 (16 min ago)". **No event, no notification** — the customer's last-10 list unchanged. Operator mailbox (a second channel): no mail for demo-felhom after 13:58; the 13:58 `host_crash_restart` mail shows the channel delivers | `A3-hub-*` |
| A3 stays off | no ping, 0.0 W for the whole 18 min | `A2-A4-power.csv` |
| A4 plug off/on | plug off 17:04:17, on 17:04:27. **The N100 did NOT start** (operator: no monitor at hand, BIOS not read) | `A4-plug.log` |
| A4 power button | operator pressed it: first watts 17:06:03 → ping 17:06:33 (30 s) → **dashboard 200 at 17:06:45 (42 s)**; boot peak 20.4 W | `A4-boot-*` |
| A4 after | crash guard `last_boot_unclean: false`; guest running, `onboot: 1`, mounts as before; the same 5 containers healthy; scheduler started with 22 jobs. Hub: report 2 min later, no event (no crash, nothing to recover) | `A4-after.txt` |
## What this means
- A clean guest shutdown + host power-off on command works, and costs nothing at the plug.
- **Today the hub does not notice a machine that is off for 18 minutes.** Code (05 §4, `hub.yaml` 45 m): `host_stale` at
45 min, `host_down` at 90 min; the controller checker `node_stale`/`node_down` too; and every morning at 05:00 the
`expected_backup_missed` / `expected_dbdump_missed` pair — the operator's mailbox shows exactly this pair for Tester 2,
which is off (2026-10-13 05:00).
- **Plug off/on did not start the N100**, but at 13:42 the same day it DID restart by itself after an unplanned power cut
(hub `host_crash_restart`). Consistent with the BIOS „after power loss = last state": a machine that was off stays off.
Not read in the BIOS (no monitor) — an inference. That is the behaviour the household text promises („press the power
button"), so the spike passes for the button; the plug cannot restart a deliberately-off N100 on the bench.