This commit is contained in:
Jonas Bengtsson
2026-10-04 09:28:02 +02:00
parent 87c1c8db7b
commit 4adbb4171e
16 changed files with 788 additions and 29 deletions
+14 -2
View File
@@ -321,13 +321,25 @@ requirement ID for each item in parentheses.
(0x1020/0x1021) and module-diagnosis (0x1050) fault injection
and clear; SF LED on the coupler reflects injected LED errors.
- [x] M5: configuration — coupler settings forms (watchdog time/masks/type/close-on-timeout via 0x1000–0x100B, response delay 0x1037, idle timeout 0x1030) with the device's own validation surfaced (writes refused while the watchdog runs → field error); module list editor over the 13-article catalog with SAVE CONFIG → live process-image rebuild (`rebuild_node`: datastore survives, values clear like a KBUS reset, 0x1022–0x1025 and 0x2030+ updated) + persistence to the node-config YAML via a comment-preserving custom emitter.
- [x] M5a: channel names for every module channel (FR-10.2.11) —
node-config persisted (`channel_names:` mapping, I/O code →
name), survive module saves and rebuilds, shown in the overview
list/tooltips and a per-channel name editor; configuration
import/export as JSON (FR-10.2.12) — modules, channel names,
coupler settings in one file, atomic validated import with
stale-name-code dropping; split overview (FR-10.2.13) — DIN-rail
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.
- [ ] M6: scenario run view + alias-ownership rejection (FR-10.2.6,
FR-10.2.9) — deferred.
- [x] Tests: 28 web-UI tests (`tests/test_webui.py`) via httpx
- [x] Tests: 38 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. Full suite: 206 passing.
loader-overlap register fix; channel-name save + list sync;
export/import round-trip with a Modbus read after the rebuild.
Full suite: 216 passing.
### Framework gaps (spec §4 — Scenario & Macro Engine)