Repository navigation
fix(light): handle dimmer no-load state WHAT 19 and promote to dimmable (#619) - #622
Merged
GreenGrassBlueOcean merged 1 commit intoOct 4, 2026
Merged
Conversation
|
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
…le (#619) - Light entity: handle WHAT 19 (*1*19*WHERE##) as is_on=False and expose no_load: True attribute - Prevent unloaded lights from staying stuck ON at 1% in Home Assistant UI - Log state transitions to no_load at INFO level, and subsequent unloaded frames at DEBUG - Preserve no_load attribute on normal OFF commands; only clear on positive load reconnect - Auto-promote existing entities to ColorMode.BRIGHTNESS when WHAT 19 is received (unless locked) - Auto-detect dimmable in build() when first frame carries WHAT 19 - Classify WHAT 19 as RECOGNIZED_STATUSES in device_health to suppress false faults and clear prior unmapped anomalies - Update diagnostics documentation in repair-issues.md - Commit authentic F453AV & F414 bus trace fixture with replay test suite in test_issue_619_dimmer_trace.py - Add comprehensive unit tests in test_component_light.py, test_device_health.py, and test_device_health_corpus.py - Synchronize documentation and trace availability matrix
GreenGrassBlueOcean
force-pushed
the
fix/dimmer-no-load-what19
branch
from
October 4, 2026 16:15
a34d1f4 to
93de412
Compare
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.
Summary
Resolves #619: Handle BTicino phase-cut dimmer unloaded / open-circuit state (
*1*19*<WHERE>##).Physical modular phase-cut dimmers (e.g. BTicino F414) require a minimum closed load circuit for AC zero-crossing detection. When no load is attached or a lamp filament is blown, the dimmer enters an unloaded state and emits
*1*19*<WHERE>##.Previously, this resulted in:
ColorMode.ONOFF).unmapped_device_statusrepair issues being raised for unused cabinet channels.Details & Behavior
custom_components/myhome/light.py):WHAT 19as_attr_is_on = False, preventing the entity from remaining stuck ON at 1%.no_load: trueinextra_state_attributeswhile unloaded.no_loadonce atINFOlevel (subsequent recurring unloaded frames log atDEBUG), ensuring blown lamps or disconnected loads are visible in standard logs without spam.OFFcommands (*1*0*<WHERE>##) preserveno_load: true(turning off an unloaded channel does not imply a load was connected).no_loadis cleared and anINFOmessage logged when an active load reconnects (positiveis_on = Trueor level frame arrives).ColorMode.BRIGHTNESSon receivingWHAT 19(respectinglock_features).dimmable = Trueinbuild()when first seen viaWHAT 19.custom_components/myhome/device_health.py,docs/diagnostics/repair-issues.md):19toRECOGNIZED_STATUSESindevice_health.py(keepingDOCUMENTED_EVENTSstrictly for ZigBee spec events{32, 34, 39}).WHAT 19clears any priorunmapped_statusfault on that address without raising new repair issues.docs/diagnostics/repair-issues.md.tests/fixtures/traces/issue_619/,README.md,docs/trace-availability.md):myhome_trace_F453AV_all_2026-10-04T08-28-13.json) with README documentation.tests/test_issue_619_dimmer_trace.pyverifying discrete dimming levels 2..7 with 35 W load, turn off transitions, and unloaded channel WHAT 19 handling.tests/test_component_light.py: Unit tests for WHAT 19 no-load behavior, stuck-on prevention,async_turn_on()UI execution, level recovery, OFF command preservation ofno_load, state transition logging, and dimmable discovery.tests/test_device_health.py: VerifiedWHAT 19clears unmapped status faults and raises no repair issues.tests/test_device_health_corpus.py: Replay suite tests verifyingDOCUMENTED_EVENTSandRECOGNIZED_STATUSES.Verification
WSL Python 3.14 / HA Core 2026.9.2: Full test suite passed (218 component/health/trace tests passed).
Ruff Linting: 0 violations across
custom_components,tests, andscripts.Architectural Standards: All 22 checks passed via
scripts/verify_ha_standards.py.V2 Architecture: New entities implement
handle_event()and do not manually subscribe viaasync_dispatcher_connect.