b4dcf4b373
gates / gates (push) Successful in 6m35s
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).
3.6 KiB
3.6 KiB
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.yaml45 m):host_staleat 45 min,host_downat 90 min; the controller checkernode_stale/node_downtoo; and every morning at 05:00 theexpected_backup_missed/expected_dbdump_missedpair — 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.