Skip to content

Fix Nodus II MQTT display settings synchronization - #33

Merged
mot-yelraf merged 1 commit into
trunkfrom
fix-mqtt-nodusii-ingest
Sep 27, 2026
Merged

mot-yelraf merged 1 commit into
trunkfrom
fix-mqtt-nodusii-ingest

Conversation

@mot-yelraf

@mot-yelraf mot-yelraf commented Sep 27, 2026 •

Copy link
Copy Markdown
Owner

Summary

Nodus II now publishes saved display settings in retained meta/config, while its compact meta omits them. Sensorius ignored the companion topic and replaced the existing sensor display order with factory defaults, so device-side edits were not reflected after a Nodus restart.

Subscribe to and merge the saved configuration companion in either arrival order, preserve existing settings when metadata omits display fields, and preserve positional metric/style slots through correlated meta/patch updates. This also prevents temporary duplicate metrics during one-key-at-a-time reordering from shifting other slots. Keep full metadata support for Nodus III. Update the canonical MQTT contract and version to v0.26.270.1.

Verification

Host: macOS 27.0, Python 3.13.9. Tests use isolated settings files and simulated MQTT messages, with no physical MCU or live broker required.

  • python3 -m pytest testApparatus/test_mqtt_ingest_liveness.py testApparatus/test_nodus_settings_schema_writes.py testApparatus/test_mqtt_ingest_auth.py testApparatus/test_homeassistant_mqtt.py testApparatus/test_compile_python.py -q — 295 passed.
  • npm run validate:pr — 44 passed using the isolated host fixture and Playwright Chromium.
  • git diff --check — passed.
  • Regression coverage includes retained companion arrival in either order, prefixed topics, device-side edits followed by simulated restart discovery, sequential metric/style patches, and a patch arriving before the companion snapshot.

Contributor checklist

  • This pull request is focused on one logical change.
  • I added or updated tests for behavior changes.
  • I updated the canonical documentation when behavior or configuration changed.
  • I did not commit credentials, private runtime configuration, databases, or logs.
  • I preserved compatibility-sensitive MQTT, settings, switch identity, and persistence behavior, or documented an intentional break.

Maintainer verification

  • Required remote checks pass (Python 3.11/3.13 compilation and full regression suite with coverage floor).
  • npm run validate:pr passes on a trusted host when the change can affect rendered UI behavior.
  • Hardware-, broker-, onboarding-, and platform-specific behavior not covered remotely is recorded below.

Residual risk or unverified areas

The maintainer has verified other aspects of device configuration, but has not reproduced and verified this specific failure mode on hardware because of the conditions needed to trigger it. Automated replay verifies the targeted behavior. Physical Pico2W/XESP32S3 devices, the production broker, and live onboarding were not exercised by the automated checks. No firmware changes are included.

@mot-yelraf
mot-yelraf merged commit 1092918 into trunk Sep 27, 2026
3 checks passed
@mot-yelraf
mot-yelraf deleted the fix-mqtt-nodusii-ingest branch September 27, 2026 16:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant