Skip to content

feat(options): silence faulty or unwanted devices via ignored_addresses option - #611

Merged
GreenGrassBlueOcean merged 4 commits into
OpenWebNet-HA:v2-phase1-architecturefrom
GreenGrassBlueOcean:feat/ignored-addresses
Oct 4, 2026
Merged

GreenGrassBlueOcean merged 4 commits into
OpenWebNet-HA:v2-phase1-architecturefrom
GreenGrassBlueOcean:feat/ignored-addresses

Conversation

@GreenGrassBlueOcean

Copy link
Copy Markdown
Contributor

Summary

Adds an ignored_addresses configuration option to gateway options flow to permanently silence faulty or unwanted devices on that gateway.

Follow-up to discussion in #593 (comment #5949536976): an actuator with hardware faults that cannot be immediately replaced or repaired can now be permanently ignored without leaving lingering repair issues or re-triggering discovery sweeps.

Features & Behavior

  1. Gateway Options Flow (ignored_addresses):

    • Multiline text input in the gateway's Configure dialog (Settings → Devices & Services → MyHOME).
    • Accepts addresses in flexible WHO/WHERE formats: e.g. 1/74, 1:74, 1-74, WHO 1 WHERE 74, or interface-qualified 1/74#4#01.
    • Strips leading zeros (074 == 74) so wire frames with varying zero-padding match cleanly.
    • Bare addresses (e.g. 1/74) match both local and routed interfaces (74#4#01), silencing the device everywhere behind that gateway unless explicitly qualified.
    • Interface-qualified addresses (e.g. 1/74#4#01) match specifically on that interface and do not silence other routed buses.
  2. Suppression across Integration Lifecycles:

    • Dynamic Discovery (discovery.py): incoming bus frames for ignored addresses are discarded immediately before scope handling, discovery, or router dispatching.
    • Entity Registry Cleanup (discovery.py): on startup/reload, any existing registry entities and companion buttons (-disable, -enable, -calibrate) matching ignored addresses are cleanly pruned via prune_entity(). YAML configured devices matching ignored addresses are skipped.
    • Device Health Fault Tracking (device_health.py): suppressed from tracking or raising unmapped_device_status or unmapped_device_status_autodiag. Any pre-existing repair issues for ignored addresses are automatically withdrawn upon gateway reload.
  3. Documentation & Translations:

    • Updated docs/diagnostics/repair-issues.md with instructions on permanently silencing faulty devices via gateway options.
    • Synchronized docs/configuration/gateways.md options table via scripts/update_gateway_profiles.py and scripts/sync_documentation.py.
    • Full translations in English, French, Italian, and Dutch (strings.json, en.json, fr.json, it.json, nl.json).

Tests

  • tests/test_ignored.py: 45 unit tests covering address parsing, delimiter handling, normalization, interface matching, and IgnoredAddresses lookup helper.
  • tests/test_device_health.py: verified fault suppression, autodiagnostic frame suppression, startup cleanup of pre-existing issues, and name/report guards.
  • tests/test_platform_discovery.py: verified YAML filtering, registry pruning on startup, and immediate bus frame suppression.
  • tests/test_config_flow.py: verified options flow validation, error reporting for invalid formats, saving, and pre-population.
  • Full HA standards validation (scripts/verify_ha_standards.py) and ruff check pass with 0 violations.

Note

Based on #593 (rfc/actuator-hardware-fault-handling). Once #593 is merged, this branch will automatically rebase cleanly onto v2-phase1-architecture.

  • V2 Architecture: New entities implement handle_event() and do not manually subscribe via async_dispatcher_connect. (No new entities.)

@codecov-commenter

Copy link
Copy Markdown

⚠️ Please install the 'codecov app svg image' to ensure uploads and comments are reliably processed by Codecov.

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

- Add ignored_addresses gateway option to permanently silence specific bus addresses
- Skip dynamic discovery, prune registry entities and companion buttons, and ignore bus messages
- Suppress actuator hardware fault tracking and clean pre-existing repair issues
- Support flexible WHO/WHERE formats with zero-normalization and interface targeting
- Include complete translations (en, fr, it, nl), documentation, and test suite
…none address

- Query issue registry in _clean_ignored_issues to withdraw pre-existing issues matching routed (#4#) and zero-padded addresses
- Guard where parameter against non-string and None inputs in IgnoredAddresses.is_ignored
- Add unit tests for defensive types and routed/zero-padded pre-existing issue withdrawal
@GreenGrassBlueOcean
GreenGrassBlueOcean merged commit 76d76f8 into OpenWebNet-HA:v2-phase1-architecture Oct 4, 2026
16 checks passed
@GreenGrassBlueOcean
GreenGrassBlueOcean deleted the feat/ignored-addresses branch October 4, 2026 15:04
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.

2 participants