Three gaps reported against an ARTIK051_PRAC_20K WindFree unit vs. the SmartThings integration: 1. Missing WindFree/motion convenient-mode presets -- left alone here. PR #91 replaces climate.py's static _DEVICE_TO_PRESET table with a generic resolver that reads any preset code straight off the unit's own supportedModes, which already covers this (and more generically than a per-model dict would) -- adding one here would just conflict. 2. No horizontal oscillation: /wind/direction/vs/0's supportedModes includes Left_And_Right, which _DEVICE_TO_SWING had no mapping for. Add it to HA's standard 'horizontal' swing constant. 3. No standalone humidity/current-temperature sensors: the climate card already reads both internally, but nothing exposed them as entities for history/automations. Add CURRENT_TEMPERATURE (OCF /temperature/current/0) with a CURRENT_TEMPERATURE_VS vendor fallback (same match_fn-gated pair shape as common.py's POWER_GENERIC/ POWER_VS_FALLBACK), and a HUMIDITY sensor reading /humidity/vs/0's fivepercentHumidity field -- the only one of the three humidity-shaped fields across /humidity/0 and /humidity/vs/0 that isn't permanently stuck at 0 on every dump seen. Regenerates the five existing AC goldens (all pick up current_temperature_c; most pick up humidity) and adds a dedicated fixture from the issue's WindFree dump, whose /humidity/vs/0 actually has live fivepercentHumidity data.
24 lines
1.0 KiB
Python
24 lines
1.0 KiB
Python
"""Tests for the horizontal-swing mapping added to climate.py for issue #75
|
|
-- pure dict lookups, testable without a coordinator/entity fixture (see
|
|
test_climate_temperature_fallback.py).
|
|
|
|
The preset side of issue #75 (WindFree/motion convenient modes not
|
|
surfacing) is intentionally not addressed here: PR #91 replaces
|
|
climate.py's static _DEVICE_TO_PRESET table with a generic resolver that
|
|
reads any device preset code straight off the unit's own supportedModes,
|
|
which covers WindFree/motion generically instead of a per-model dict --
|
|
duplicating that here would just conflict with it.
|
|
"""
|
|
from custom_components.localthings.climate import _DEVICE_TO_SWING, _SWING_TO_DEVICE
|
|
|
|
|
|
def test_horizontal_swing_maps_both_directions():
|
|
assert _DEVICE_TO_SWING['Left_And_Right'] == 'horizontal'
|
|
assert _SWING_TO_DEVICE['horizontal'] == 'Left_And_Right'
|
|
|
|
|
|
def test_existing_swing_modes_unchanged():
|
|
assert _DEVICE_TO_SWING['Fix'] == 'off'
|
|
assert _DEVICE_TO_SWING['All'] == 'both'
|
|
assert _DEVICE_TO_SWING['Up_And_Low'] == 'vertical'
|