Repository navigation
feat: load WoT configurations and complete M2 acceptance - #113
Merged
Merged
Conversation
gavinying
marked this pull request as ready for review
October 28, 2026 10:52
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Replace the 2.x CSV configuration runtime with validated WoT TM/TD loading, reusing the existing Modpoll poll/decode/output engine. The versioned shared interpreter preserves block boundaries, literals, byte/word order, property names, multipliers and access metadata. It bundles official TD/TM schemas and a project acquisition schema and rejects invalid/unsupported execution semantics.
M2 adds a per-model
modv:unitIDdefault (explicit--unit-idstill overrides it), so one process can read different Unit IDs. A recording proxy verifies real Unit IDs 2 and 7. Authored simulator TM/TD fixtures preserve four blocks and 37 properties; request/output equivalence against pinned 1.x and modsim checkouts remains in CI.Acceptance now covers independently struct-encoded numeric types with all four byte/word orders, large integer precision, register bits, odd strings, multipliers, units, real HTTP/local model loading, multiple devices, timestamps, invalid configuration rejection, and Modbus exception/null handling.
MQTT tests run actual 1.x CSV and 2.x TM/TD CLIs on unique UUID topics: MQTT 3.1.1/5.0, QoS0/1 grouped JSON and QoS1 individual topics, diagnostics, retained-command rejection and FC5/6/16 commands directed only to a temporary local modsim. CI uses private Mosquitto and also tests broker restart/subscription recovery, authentication rejection and full queues.
Validation:
make check, Sphinx build and standalone shared-package wheel installation/Unit ID validation passed.See
docs/validation.rstfor reproduction and limitations. This remains development code: no release tag/package/image was published, and the application's local shared-package path must become an exact registry version before public distribution. Serial hardware, MQTT TLS/QoS2 and remaining M3/M4 work are not claimed complete.