Files
2026-06-11 11:50:50 -04:00

47 lines
1.3 KiB
Python

from homeassistant.helpers.typing import ConfigType
from custom_components.powercalc.const import (
CONF_COMPOSITE,
CONF_FIXED,
CONF_LINEAR,
CONF_LUT,
CONF_MODE,
CONF_MULTI_SWITCH,
CONF_PLAYBOOK,
CONF_WLED,
CalculationStrategy,
)
from custom_components.powercalc.errors import UnsupportedStrategyError
from custom_components.powercalc.power_profile.power_profile import PowerProfile
STRATEGY_CONFIG_MAP = {
CONF_LINEAR: CalculationStrategy.LINEAR,
CONF_FIXED: CalculationStrategy.FIXED,
CONF_MULTI_SWITCH: CalculationStrategy.MULTI_SWITCH,
CONF_PLAYBOOK: CalculationStrategy.PLAYBOOK,
CONF_WLED: CalculationStrategy.WLED,
CONF_LUT: CalculationStrategy.LUT,
CONF_COMPOSITE: CalculationStrategy.COMPOSITE,
}
def detect_calculation_strategy(
config: ConfigType,
power_profile: PowerProfile | None,
) -> CalculationStrategy:
"""Select the calculation strategy."""
config_mode = config.get(CONF_MODE)
if config_mode:
return CalculationStrategy(config_mode)
for config_key, strategy in STRATEGY_CONFIG_MAP.items():
if config_key in config:
return strategy
if power_profile:
return power_profile.calculation_strategy
raise UnsupportedStrategyError(
"Cannot select a strategy, supply it in the config. See the readme",
)