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