mirror of
https://github.com/home-assistant/core.git
synced 2025-11-09 02:49:40 +00:00
Added HomeKit fan speed based on speed_list (#19767)
Speed_list needs to be in ascending order.
This commit is contained in:
@@ -3,15 +3,14 @@ import pytest
|
||||
import voluptuous as vol
|
||||
|
||||
from homeassistant.components.homekit.const import (
|
||||
CONF_FEATURE, CONF_FEATURE_LIST, HOMEKIT_NOTIFY_ID, FEATURE_ON_OFF,
|
||||
FEATURE_PLAY_PAUSE, TYPE_FAUCET, TYPE_OUTLET, TYPE_SHOWER, TYPE_SPRINKLER,
|
||||
CONF_FEATURE, CONF_FEATURE_LIST, FEATURE_ON_OFF, FEATURE_PLAY_PAUSE,
|
||||
HOMEKIT_NOTIFY_ID, TYPE_FAUCET, TYPE_OUTLET, TYPE_SHOWER, TYPE_SPRINKLER,
|
||||
TYPE_SWITCH, TYPE_VALVE)
|
||||
from homeassistant.components.homekit.util import (
|
||||
convert_to_float, density_to_air_quality, dismiss_setup_message,
|
||||
show_setup_message, temperature_to_homekit, temperature_to_states,
|
||||
HomeKitSpeedMapping, SpeedRange, convert_to_float, density_to_air_quality,
|
||||
dismiss_setup_message, show_setup_message, temperature_to_homekit,
|
||||
temperature_to_states, validate_entity_config as vec,
|
||||
validate_media_player_features)
|
||||
from homeassistant.components.homekit.util import validate_entity_config \
|
||||
as vec
|
||||
from homeassistant.components.persistent_notification import (
|
||||
ATTR_MESSAGE, ATTR_NOTIFICATION_ID, DOMAIN)
|
||||
from homeassistant.const import (
|
||||
@@ -144,3 +143,58 @@ async def test_dismiss_setup_msg(hass):
|
||||
assert call_dismiss_notification
|
||||
assert call_dismiss_notification[0].data[ATTR_NOTIFICATION_ID] == \
|
||||
HOMEKIT_NOTIFY_ID
|
||||
|
||||
|
||||
def test_homekit_speed_mapping():
|
||||
"""Test if the SpeedRanges from a speed_list are as expected."""
|
||||
# A standard 2-speed fan
|
||||
speed_mapping = HomeKitSpeedMapping(['off', 'low', 'high'])
|
||||
assert speed_mapping.speed_ranges == {
|
||||
'off': SpeedRange(0, 0),
|
||||
'low': SpeedRange(100 / 3, 50),
|
||||
'high': SpeedRange(200 / 3, 100),
|
||||
}
|
||||
|
||||
# A standard 3-speed fan
|
||||
speed_mapping = HomeKitSpeedMapping(['off', 'low', 'medium', 'high'])
|
||||
assert speed_mapping.speed_ranges == {
|
||||
'off': SpeedRange(0, 0),
|
||||
'low': SpeedRange(100 / 4, 100 / 3),
|
||||
'medium': SpeedRange(200 / 4, 200 / 3),
|
||||
'high': SpeedRange(300 / 4, 100),
|
||||
}
|
||||
|
||||
# a Dyson-like fan with 10 speeds
|
||||
speed_mapping = HomeKitSpeedMapping([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
|
||||
assert speed_mapping.speed_ranges == {
|
||||
0: SpeedRange(0, 0),
|
||||
1: SpeedRange(10, 100 / 9),
|
||||
2: SpeedRange(20, 200 / 9),
|
||||
3: SpeedRange(30, 300 / 9),
|
||||
4: SpeedRange(40, 400 / 9),
|
||||
5: SpeedRange(50, 500 / 9),
|
||||
6: SpeedRange(60, 600 / 9),
|
||||
7: SpeedRange(70, 700 / 9),
|
||||
8: SpeedRange(80, 800 / 9),
|
||||
9: SpeedRange(90, 100),
|
||||
}
|
||||
|
||||
|
||||
def test_speed_to_homekit():
|
||||
"""Test speed conversion from HA to Homekit."""
|
||||
speed_mapping = HomeKitSpeedMapping(['off', 'low', 'high'])
|
||||
assert speed_mapping.speed_to_homekit('off') == 0
|
||||
assert speed_mapping.speed_to_homekit('low') == 50
|
||||
assert speed_mapping.speed_to_homekit('high') == 100
|
||||
|
||||
|
||||
def test_speed_to_states():
|
||||
"""Test speed conversion from Homekit to HA."""
|
||||
speed_mapping = HomeKitSpeedMapping(['off', 'low', 'high'])
|
||||
assert speed_mapping.speed_to_states(0) == 'off'
|
||||
assert speed_mapping.speed_to_states(33) == 'off'
|
||||
assert speed_mapping.speed_to_states(34) == 'low'
|
||||
assert speed_mapping.speed_to_states(50) == 'low'
|
||||
assert speed_mapping.speed_to_states(66) == 'low'
|
||||
assert speed_mapping.speed_to_states(67) == 'high'
|
||||
assert speed_mapping.speed_to_states(100) == 'high'
|
||||
|
||||
Reference in New Issue
Block a user