Read AC fan speeds from the device's own modesName, not just 0-4 (#155)
TP1X_DA-AC-RAC-01001_0000 (model AR07C9150HZN) reports /wind/strength/vs/0 supportedModes as "0"/"31"-"35" instead of the "0"-"4" scale climate.py's _DEVICE_TO_FAN was built from. Only "0" matched, so fan_mode/fan_modes silently dropped every speed but Auto -- exactly the reported symptom. Rather than hardcoding a second numeric scale, codes _DEVICE_TO_FAN doesn't cover now fall back to the device's own modesName label (parallel-indexed with supportedModes), mirroring how preset_mode already resolves dynamically off a device's own supportedModes instead of a per-model table. Boards using the standard 0-4 scale are unaffected -- _DEVICE_TO_FAN is still tried first, so existing auto/low/medium/high/turbo labels don't change.
This commit is contained in:
@@ -709,6 +709,27 @@ def test_registry_reproduces_golden_state_keys_for_artik051_krac_18k():
|
||||
)
|
||||
|
||||
|
||||
def test_registry_reproduces_golden_state_keys_for_airconditioner_tp1x_rac_01001():
|
||||
"""TP1X_DA-AC-RAC-01001_0000 (model AR07C9150HZN, issue #155) -- binds
|
||||
cleanly against the existing airconditioner registry with zero unbound
|
||||
hrefs (the registry/discovery side was never the gap here). Its
|
||||
/wind/strength/vs/0 reports supportedModes "0"/"31"-"35" instead of the
|
||||
"0"-"4" scale climate.py's _DEVICE_TO_FAN was built from, which silently
|
||||
dropped every fan speed but Auto -- see
|
||||
test_airconditioner_tp1x_rac_01001_fan.py for the climate-level fix."""
|
||||
from tests.conftest import _load_device
|
||||
resources = _load_device('airconditioner_tp1x_rac_01001')
|
||||
golden = json.loads(
|
||||
(GOLDEN / 'airconditioner_tp1x_rac_01001.json').read_text()
|
||||
)
|
||||
state_keys = _new_state_keys('airconditioner_tp1x_rac_01001', resources)
|
||||
assert set(state_keys) == set(golden['state_keys']), (
|
||||
f"state_keys mismatch:\n"
|
||||
f" extra: {sorted(set(state_keys) - set(golden['state_keys']))}\n"
|
||||
f" missing: {sorted(set(golden['state_keys']) - set(state_keys))}"
|
||||
)
|
||||
|
||||
|
||||
def test_resources_from_batch_preferred_over_flat():
|
||||
from tests.conftest import _resources_from_dump
|
||||
dump = {
|
||||
|
||||
Reference in New Issue
Block a user