Files
felhom.eu/documentation/audits/plugmeter-2026-10-13/README.md
T
admin 6a1f715a87
gates / gates (push) Successful in 6m43s
Bench: plugmeter reads the N100's metered plug (tinytuya + Home Assistant from the catalog)
scripts/bench/plugmeter.py prints watts/mA/V/kWh as CSV from the Tuya plug on the LAN
(default) or from Home Assistant on demo-hp's guest. 10-minute side by side and a
3-minute control in documentation/audits/plugmeter-2026-10-13/: Home Assistant alone
did not move for 3 minutes, so the LAN reader is the measurement source.
No key, device id or token in the repo; secrets scan 0 hits with a positive control.
2026-10-13 17:07:26 +02:00

69 lines
4.5 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.
# Reading the N100's metered plug from DooPlex — 2026-10-13
Two readers for the Tuya Wi-Fi plug that powers the N100 (`demo-felhom`): tinytuya on the LAN, and Home Assistant
installed from the Felhom catalog on demo-hp's guest 9201. Tool: `scripts/bench/plugmeter.py`
(`scripts/bench/README.md`). No key, device id or token is in this folder; they live only in DooPlex
`~/.config/felhom-bench/` (700/600).
## Setup facts
- tinytuya **1.20.0** in `~/.venvs/plugmeter` (user venv; no sudo, no system package, no service).
- Wizard: region `eu`, run in `~/.config/felhom-bench/` with its output sent to a 600 file. It found **1 device**,
„Smart Wi-Fi Power Meter Socket", category `cz`.
- `tinytuya scan`: LAN `192.168.0.115`, **protocol 3.4**. No fixed router address yet.
- Home Assistant: deployed through the dashboard endpoint (`POST /api/stacks/home-assistant/deploy`,
`{"DOMAIN":"enkisfelhom.hu","SUBDOMAIN":"ha"}`) at 14:33:34Z → **202**, container healthy at 14:35:46Z
(image pull included). Before the first setup the public address answered **401** (the setup gate closed, as
designed). The operator passed the gate with the dashboard sign-in, made the owner, added the Tuya
integration by QR, and made a non-admin, local-access-only user `felhom-bench` with a long-lived token.
## Data points (read from the device, checked against Home Assistant's Tuya reading)
| DP | code | unit | scale | CSV column |
|---|---|---|---|---|
| 19 | `cur_power` | W | ×10 | `watts` |
| 18 | `cur_current` | mA | ×1 | `milliamps` |
| 20 | `cur_voltage` | V | ×10 | `volts` |
| 17 | `add_ele` | kWh | ×1000 | `kwh_total` — energy since the plug last reported to the cloud, NOT lifetime |
Check: at 14:44–14:45Z tinytuya read 6.6–7.0 W, 59–60 mA, 229.9 V; Home Assistant (Tuya cloud — the same
source the Smart Life app shows) read „7 W, 0.06 A, 230 V" on the operator's screen and 6.6 W through the API.
Match within 0.5 W. Home Assistant's entities: `sensor.smart_wi_fi_power_meter_socket_{power,current,voltage,total_energy}`.
A refresh is required: plain `status()` repeated one cached reading (3 identical rows at 2 s); `updatedps([18,19,20])`
then `status()` gives a new value each time — the plug's previous measurement, so a row lags about one interval.
## Side by side — 10 minutes, N100 at rest, `--interval 2` (14:45:17–14:55:17Z)
| | rows | mean W | median W | spread (sd) | min–max W | read gap median / max | gaps > 3 s | failed reads |
|---|---|---|---|---|---|---|---|---|
| tuya (LAN) | 215 | 8.36 | 7.20 | 2.67 | 6.1–19.1 | 2.0 s / 8.0 s | 56 | 0 |
| ha (cloud) | 301 | 8.40 | 7.20 | 2.74 | 6.1–19.1 | 2.0 s / 2.1 s | 0 | 0 |
`side-by-side-tuya.csv`, `side-by-side-ha.csv`. The two agree almost exactly — **but not independently**:
**Control (`ha-alone-3min.csv`, 14:55:44–14:58:44Z):** with the tuya reader stopped, Home Assistant's power value
**did not change once in 3 minutes** (6.5 W throughout). When the tuya reader ran again for 20 s, Home Assistant
moved to the last value it pushed (7.9 W) and stayed there. So the plug reports to the cloud only when asked; Home
Assistant's 2-second freshness in the side-by-side was the tuya reader's doing. Earlier, at 14:44:48Z, Home
Assistant still showed 18.7 W from 14:44:21Z while the plug read 6.7 W.
**Recommendation: `--source tuya` for every measurement; `--source ha` as the backup and for history.**
Each tuya gap > 3 s is a slow read (up to 8 s), not a lost one.
## Home Assistant from our catalog — product notes
- Install, gate and first setup worked with no defect found. Deploy-to-healthy ~2 min 12 s.
- A non-admin Home Assistant user **can still switch the plug** (`switch.smart_wi_fi_power_meter_socket_socket_1`
is visible to it). Home Assistant has no read-only role. So the `felhom-bench` token can power off the N100;
plugmeter only reads states. Home Assistant's design, not ours — no register row.
- A household reading a Tuya meter plug only through Home Assistant's cloud integration gets a value that can sit
still for minutes. Tuya's behaviour, not ours — no register row.
- The `felhom-bench` user is local-access-only, so the public (Cloudflare) path is refused for it; plugmeter
connects to the guest's LAN address `192.168.0.155` and checks the certificate by name.
## Teardown
Machine: nothing provisioned on the N100. Host: none. Guest 9201: **Home Assistant stays installed on purpose**
(the plug's second reader, `operations/nodes.md`). Hub: nothing. DooPlex: the user venv and `~/.config/felhom-bench/` stay.