Use NamedTuple for touchline preset mode settings (#55695)

This commit is contained in:
Marc Mueller 2021-09-04 00:44:16 +02:00 committed by GitHub
parent edddeaf5ab
commit 617e8544c0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,4 +1,6 @@
"""Platform for Roth Touchline floor heating controller.""" """Platform for Roth Touchline floor heating controller."""
from typing import NamedTuple
from pytouchline import PyTouchline from pytouchline import PyTouchline
import voluptuous as vol import voluptuous as vol
@ -11,17 +13,25 @@ from homeassistant.components.climate.const import (
from homeassistant.const import ATTR_TEMPERATURE, CONF_HOST, TEMP_CELSIUS from homeassistant.const import ATTR_TEMPERATURE, CONF_HOST, TEMP_CELSIUS
import homeassistant.helpers.config_validation as cv import homeassistant.helpers.config_validation as cv
class PresetMode(NamedTuple):
"""Settings for preset mode."""
mode: int
program: int
PRESET_MODES = { PRESET_MODES = {
"Normal": {"mode": 0, "program": 0}, "Normal": PresetMode(mode=0, program=0),
"Night": {"mode": 1, "program": 0}, "Night": PresetMode(mode=1, program=0),
"Holiday": {"mode": 2, "program": 0}, "Holiday": PresetMode(mode=2, program=0),
"Pro 1": {"mode": 0, "program": 1}, "Pro 1": PresetMode(mode=0, program=1),
"Pro 2": {"mode": 0, "program": 2}, "Pro 2": PresetMode(mode=0, program=2),
"Pro 3": {"mode": 0, "program": 3}, "Pro 3": PresetMode(mode=0, program=3),
} }
TOUCHLINE_HA_PRESETS = { TOUCHLINE_HA_PRESETS = {
(settings["mode"], settings["program"]): preset (settings.mode, settings.program): preset
for preset, settings in PRESET_MODES.items() for preset, settings in PRESET_MODES.items()
} }
@ -119,8 +129,9 @@ class Touchline(ClimateEntity):
def set_preset_mode(self, preset_mode): def set_preset_mode(self, preset_mode):
"""Set new target preset mode.""" """Set new target preset mode."""
self.unit.set_operation_mode(PRESET_MODES[preset_mode]["mode"]) preset_mode = PRESET_MODES[preset_mode]
self.unit.set_week_program(PRESET_MODES[preset_mode]["program"]) self.unit.set_operation_mode(preset_mode.mode)
self.unit.set_week_program(preset_mode.program)
def set_hvac_mode(self, hvac_mode): def set_hvac_mode(self, hvac_mode):
"""Set new target hvac mode.""" """Set new target hvac mode."""