This commit is contained in:
Jonas Bengtsson
2026-10-04 10:01:49 +02:00
parent 4adbb4171e
commit c1d232581f
15 changed files with 649 additions and 39 deletions
+21 -7
View File
@@ -307,10 +307,13 @@ requirement ID for each item in parentheses.
`--web-port`, env `WAGO_SIM_WEB_USER/PASSWORD/READONLY/
NO_WEB/WEB_PORT`; login page + SPA shell.
- [x] M2: node overview page — DIN-rail strip with coupler block
(MS/NS/BF/SF LEDs), module bezels with article numbers,
per-channel LEDs for DI/DO, bar+numeric indicators for AI/AO,
live values via WebSocket (`/api/ws`, 10 Hz delta push),
`GET /api/values` snapshot.
(MS/NS/BF/SF LEDs), module bezels with article numbers plus the
kind+slot designation (`DI0`, `DO2`, `AI4`) in the header's
upper right corner, per-channel LEDs for DI/DO with the channel
number beneath, bar+numeric indicators for AI/AO with the channel
number outside the overflow/underflow limit LEDs, live values
via WebSocket (`/api/ws`, 10 Hz delta push), `GET /api/values`
snapshot (FR-10.2.2).
- [x] M3: manipulation — DI/DO toggle (field side via
`set_digital_input_channel`, master side via internal
`write_bits`/`write_words` dispatch so mirrors/statistics stay
@@ -331,15 +334,26 @@ requirement ID for each item in parentheses.
graphic on top, live scrollable channel list below with I/O
code, configured name, and a switch (DI/DO) / numeric field
(AI/AO) for display + manipulation.
- [x] M5b: analog display ranges (FR-10.2.14) — bar indicators fill
from the bottom against the channel's display range, default
0–4095 counts (100 % at 4095, WAGO 750 12-bit scaling), with
per-channel min/max configurable in the node config
(`channel_ranges:`) and editable on the Configuration page; values
outside the range fill the bar red with a red LED above the bar
(overflow) or below it (underflow); ranges carried through
module saves, export/import, and rebuilds; also fixes the bar
never filling (it set width instead of height on a vertical bar)
and the invisible numeric label (clipped by overflow: hidden).
- [ ] M6: scenario run view + alias-ownership rejection (FR-10.2.6,
FR-10.2.9) — deferred.
- [x] Tests: 38 web-UI tests (`tests/test_webui.py`) via httpx
- [x] Tests: 46 web-UI tests (`tests/test_webui.py`) via httpx
`ASGITransport` (in-process, no socket) + live verification:
browser SAVE CONFIG rebuilds the node and persists YAML; Modbus
master reads the module description (0x2030) correctly after the
loader-overlap register fix; channel-name save + list sync;
export/import round-trip with a Modbus read after the rebuild.
Full suite: 216 passing.
export/import round-trip with a Modbus read after the rebuild;
bar states verified for in-range (97.7 % at 4000), overflow,
custom-range, and underflow. Full suite: 224 passing.
### Framework gaps (spec §4 — Scenario & Macro Engine)