Merge pull request #216 from firstof9/fix-hood-fan-write-fallback

fix(hood_fan): fall back to settable min/max when supportedFanSpeed is missing
This commit is contained in:
Marc Billow
2026-07-30 20:21:02 -05:00
committed by GitHub
2 changed files with 19 additions and 0 deletions
@@ -79,6 +79,15 @@ def _hood_fan_write(payload, rep, href=None):
str(code)
for code in rep.get('x.com.samsung.da.hood.supportedFanSpeed', ())
]
if not supported:
min_s = rep.get('x.com.samsung.da.hood.settableMinFanSpeed')
max_s = rep.get('x.com.samsung.da.hood.settableMaxFanSpeed')
if min_s is not None and max_s is not None:
try:
mn, mx = int(min_s), int(max_s)
supported = [str(i) for i in range(mn, mx + 1)]
except (ValueError, TypeError):
pass
if value not in supported:
return None
return ['hood', 'fanspeed', 'vs', '0'], {
+10
View File
@@ -99,6 +99,16 @@ def test_fan_write_contract():
)
assert desc.write_fn(('speed', '99'), rep) is None
rep_fallback = {
'x.com.samsung.da.hood.settableMinFanSpeed': '0',
'x.com.samsung.da.hood.settableMaxFanSpeed': '3',
}
assert desc.write_fn(('speed', '2'), rep_fallback) == (
['hood', 'fanspeed', 'vs', '0'],
{'x.com.samsung.da.hood.fanSpeed': '2'},
)
assert desc.write_fn(('speed', '4'), rep_fallback) is None
def test_lamp_write_contract():
lamp, brightness = range_hood.HOOD_LAMP.entities