From 698c201f6a42bfdcf6be95c8da1eef63b07a7168 Mon Sep 17 00:00:00 2001 From: Robbe-B <103053873+Robbe-B@users.noreply.github.com> Date: Sun, 12 Jan 2025 17:00:08 +0100 Subject: [PATCH] Resolve some pylinter stuff in the models.py --- custom_components/maestro_mcz/models.py | 1007 +++++++++++++++++++---- 1 file changed, 840 insertions(+), 167 deletions(-) diff --git a/custom_components/maestro_mcz/models.py b/custom_components/maestro_mcz/models.py index 070aed6..365fd97 100644 --- a/custom_components/maestro_mcz/models.py +++ b/custom_components/maestro_mcz/models.py @@ -1,36 +1,54 @@ +"""Dynamic Models Config.""" + from dataclasses import dataclass + from homeassistant.components.binary_sensor import BinarySensorDeviceClass from homeassistant.components.number import NumberDeviceClass -from homeassistant.components.sensor import ( - SensorDeviceClass, - SensorStateClass, -) - -from homeassistant.helpers.entity import EntityCategory +from homeassistant.components.sensor import SensorDeviceClass, SensorStateClass from homeassistant.const import REVOLUTIONS_PER_MINUTE, UnitOfTemperature, UnitOfTime +from homeassistant.helpers.entity import EntityCategory + @dataclass class MczConfigItem: + """Representation of a generic MCZ config item.""" - sensor_get_name: str | None = None #name used for getting data out of the state and status reponses - sensor_set_name: str | None = None #name used for setting data trough the API (resolved in configs first) + sensor_get_name: str | None = ( + None # name used for getting data out of the state and status reponses + ) + sensor_set_name: str | None = ( + None # name used for setting data trough the API (resolved in configs first) + ) sensor_set_config_name: str | None = None - #optional - mode_to_configuration_name_mapping: dict[str,str] | None = None #key => Mode | value => Configuration Name + # optional + mode_to_configuration_name_mapping: dict[str, str] | None = ( + None # key => Mode | value => Configuration Name + ) user_friendly_name: str | None = None icon: str | None = None unavailable_icon: str | None = None enabled_by_default: bool = True category: EntityCategory | None = None - def __init__(self, user_friendly_name:str) -> None: + def __init__(self, user_friendly_name: str) -> None: + """Create a generic MCZ config item.""" self.user_friendly_name = user_friendly_name + @dataclass class PowerSettingMczConfigItem(MczConfigItem): + """Representation of a 'Power Setting' MCZ config item.""" - def __init__(self, user_friendly_name:str, sensor_get_name:str, sensor_set_name:str, sensor_set_config_name:str, enabled_by_default: bool): + def __init__( + self, + user_friendly_name: str, + sensor_get_name: str, + sensor_set_name: str, + sensor_set_config_name: str, + enabled_by_default: bool, + ) -> None: + """Create a 'Power Setting' MCZ config item.""" super().__init__(user_friendly_name) self.sensor_get_name = sensor_get_name self.icon = "mdi:power" @@ -38,11 +56,23 @@ def __init__(self, user_friendly_name:str, sensor_get_name:str, sensor_set_name self.sensor_set_config_name = sensor_set_config_name self.enabled_by_default = enabled_by_default + @dataclass class ClimateFunctionModeMczConfigItem(MczConfigItem): - api_mappings_key_rename: dict[str,str] | None = None + """Representation of a 'Climate Function Mode' MCZ config item.""" - def __init__(self, user_friendly_name:str, sensor_get_name:str, sensor_set_name:str, sensor_set_config_name:str, enabled_by_default: bool, api_mappings_key_rename: dict[str,str] | None): + api_mappings_key_rename: dict[str, str] | None = None + + def __init__( + self, + user_friendly_name: str, + sensor_get_name: str, + sensor_set_name: str, + sensor_set_config_name: str, + enabled_by_default: bool, + api_mappings_key_rename: dict[str, str] | None, + ) -> None: + """Create a 'Climate Function Mode' MCZ config item.""" super().__init__(user_friendly_name) self.sensor_get_name = sensor_get_name self.icon = "mdi:thermostat-cog" @@ -51,10 +81,20 @@ def __init__(self, user_friendly_name:str, sensor_get_name:str, sensor_set_name: self.enabled_by_default = enabled_by_default self.api_mappings_key_rename = api_mappings_key_rename + @dataclass class ThermostatMczConfigItem(MczConfigItem): + """Representation of a 'Thermostat' MCZ config item.""" - def __init__(self, user_friendly_name:str, sensor_get_name:str, sensor_set_name:str, sensor_set_config_name:str, enabled_by_default: bool): + def __init__( + self, + user_friendly_name: str, + sensor_get_name: str, + sensor_set_name: str, + sensor_set_config_name: str, + enabled_by_default: bool, + ) -> None: + """Create a 'Thermostat' MCZ config item.""" super().__init__(user_friendly_name) self.sensor_get_name = sensor_get_name self.icon = "mdi:thermostat" @@ -62,24 +102,47 @@ def __init__(self, user_friendly_name:str, sensor_get_name:str, sensor_set_name: self.sensor_set_config_name = sensor_set_config_name self.enabled_by_default = enabled_by_default + @dataclass class FanMczConfigItem(MczConfigItem): + """Representation of a 'Fan' MCZ config item.""" + silent_enabled_get_name: str | None = None - def __init__(self, user_friendly_name:str, sensor_get_name:str, sensor_set_name:str, mode_to_configuration_name_mapping: dict[str,str], silent_enabled_get_name: str | None , enabled_by_default: bool): + def __init__( + self, + user_friendly_name: str, + sensor_get_name: str, + sensor_set_name: str, + mode_to_configuration_name_mapping: dict[str, str], + silent_enabled_get_name: str | None, + enabled_by_default: bool, + ) -> None: + """Create a 'Fan' MCZ config item.""" super().__init__(user_friendly_name) self.sensor_get_name = sensor_get_name self.icon = "mdi:fan" self.unavailable_icon = "mdi:fan-off" self.sensor_set_name = sensor_set_name - self.mode_to_configuration_name_mapping = mode_to_configuration_name_mapping # means we want to find the sensor name in the different mode configs + self.mode_to_configuration_name_mapping = mode_to_configuration_name_mapping # means we want to find the sensor name in the different mode configs self.silent_enabled_get_name = silent_enabled_get_name self.enabled_by_default = enabled_by_default + @dataclass class ButtonMczConfigItem(MczConfigItem): + """Representation of a 'Button' MCZ config item.""" - def __init__(self, user_friendly_name:str, sensor_set_name:str, sensor_set_config_name:str, icon:str, category: EntityCategory | None, enabled_by_default: bool): + def __init__( + self, + user_friendly_name: str, + sensor_set_name: str, + sensor_set_config_name: str, + icon: str, + category: EntityCategory | None, + enabled_by_default: bool, + ) -> None: + """Create a 'Button' MCZ config item.""" super().__init__(user_friendly_name) self.icon = icon self.sensor_set_name = sensor_set_name @@ -87,10 +150,22 @@ def __init__(self, user_friendly_name:str, sensor_set_name:str, sensor_set_confi self.category = category self.enabled_by_default = enabled_by_default + @dataclass class SwitchMczConfigItem(MczConfigItem): + """Representation of a 'Switch' MCZ config item.""" - def __init__(self, user_friendly_name:str, sensor_get_name:str, sensor_set_name:str, sensor_set_config_name:str, icon:str, category: EntityCategory | None, enabled_by_default: bool): + def __init__( + self, + user_friendly_name: str, + sensor_get_name: str, + sensor_set_name: str, + sensor_set_config_name: str, + icon: str, + category: EntityCategory | None, + enabled_by_default: bool, + ) -> None: + """Create a 'Switch' MCZ config item.""" super().__init__(user_friendly_name) self.sensor_get_name = sensor_get_name self.icon = icon @@ -99,13 +174,28 @@ def __init__(self, user_friendly_name:str, sensor_get_name:str, sensor_set_name: self.category = category self.enabled_by_default = enabled_by_default + @dataclass class NumberMczConfigItem(MczConfigItem): + """Representation of a 'Number' MCZ config item.""" device_class: NumberDeviceClass | None = None - mode: str = "auto" # 'box' or 'slider' + mode: str = "auto" # 'box' or 'slider' - def __init__(self, user_friendly_name:str, sensor_get_name:str, sensor_set_name:str, sensor_set_config_name:str, mode:str, icon:str, unit:str|None, category: EntityCategory | None, device_class: NumberDeviceClass | None, enabled_by_default: bool): + def __init__( + self, + user_friendly_name: str, + sensor_get_name: str, + sensor_set_name: str, + sensor_set_config_name: str, + mode: str, + icon: str, + unit: str | None, + category: EntityCategory | None, + device_class: NumberDeviceClass | None, + enabled_by_default: bool, + ) -> None: + """Create a 'Number' MCZ config item.""" super().__init__(user_friendly_name) self.sensor_get_name = sensor_get_name self.mode = mode @@ -117,12 +207,28 @@ def __init__(self, user_friendly_name:str, sensor_get_name:str, sensor_set_name: self.device_class = device_class self.enabled_by_default = enabled_by_default + @dataclass class SelectMczConfigItem(MczConfigItem): - value_mappings: dict[str,str] | None = None - map_back_before_sending_to_api: bool | None = None #Still needs implementation when needed + """Representation of a 'Select' MCZ config item.""" - def __init__(self, user_friendly_name:str, sensor_get_name:str, sensor_set_name:str, sensor_set_config_name:str, icon:str, category: EntityCategory | None, enabled_by_default: bool, value_mappings: dict[str,str] | None): + value_mappings: dict[str, str] | None = None + map_back_before_sending_to_api: bool | None = ( + None # Still needs implementation when needed + ) + + def __init__( + self, + user_friendly_name: str, + sensor_get_name: str, + sensor_set_name: str, + sensor_set_config_name: str, + icon: str, + category: EntityCategory | None, + enabled_by_default: bool, + value_mappings: dict[str, str] | None, + ) -> None: + """Create a 'Select' MCZ config item.""" super().__init__(user_friendly_name) self.sensor_get_name = sensor_get_name self.icon = icon @@ -132,9 +238,11 @@ def __init__(self, user_friendly_name:str, sensor_get_name:str, sensor_set_name: self.enabled_by_default = enabled_by_default self.value_mappings = value_mappings + @dataclass class DateTimeMczConfigItem(MczConfigItem): - + """Representation of a 'DateTime' MCZ config item.""" + sensor_set_name_weekday: str | None = None sensor_get_name_weekday: str | None = None @@ -159,18 +267,33 @@ class DateTimeMczConfigItem(MczConfigItem): sensor_set_name_am_pm: str | None = None sensor_get_name_am_pm: str | None = None - - - def __init__(self, user_friendly_name:str, sensor_get_name:str, sensor_set_name:str, - sensor_get_name_weekday:str, sensor_set_name_weekday:str, - sensor_get_name_year:str, sensor_set_name_year:str, - sensor_get_name_month:str, sensor_set_name_month:str, - sensor_get_name_day:str, sensor_set_name_day:str, - sensor_get_name_hour:str, sensor_set_name_hour:str, - sensor_get_name_minute:str, sensor_set_name_minute:str, - sensor_get_name_second:str, sensor_set_name_second:str, - sensor_get_name_am_pm:str, sensor_set_name_am_pm:str, - sensor_set_config_name:str, icon:str, category: EntityCategory | None, enabled_by_default: bool): + def __init__( + self, + user_friendly_name: str, + sensor_get_name: str, + sensor_set_name: str, + sensor_get_name_weekday: str, + sensor_set_name_weekday: str, + sensor_get_name_year: str, + sensor_set_name_year: str, + sensor_get_name_month: str, + sensor_set_name_month: str, + sensor_get_name_day: str, + sensor_set_name_day: str, + sensor_get_name_hour: str, + sensor_set_name_hour: str, + sensor_get_name_minute: str, + sensor_set_name_minute: str, + sensor_get_name_second: str, + sensor_set_name_second: str, + sensor_get_name_am_pm: str, + sensor_set_name_am_pm: str, + sensor_set_config_name: str, + icon: str, + category: EntityCategory | None, + enabled_by_default: bool, + ) -> None: + """Create a 'DateTime' MCZ config item.""" super().__init__(user_friendly_name) self.sensor_get_name = sensor_get_name self.sensor_get_name_weekday = sensor_get_name_weekday @@ -195,41 +318,106 @@ def __init__(self, user_friendly_name:str, sensor_get_name:str, sensor_set_name: self.sensor_set_name_am_pm = sensor_set_name_am_pm self.enabled_by_default = enabled_by_default + @dataclass class TimeSyncButtonMczConfigItem(DateTimeMczConfigItem): - def __init__(self, user_friendly_name:str, sensor_get_name:str, sensor_set_name:str, - sensor_get_name_weekday:str, sensor_set_name_weekday:str, - sensor_get_name_year:str, sensor_set_name_year:str, - sensor_get_name_month:str, sensor_set_name_month:str, - sensor_get_name_day:str, sensor_set_name_day:str, - sensor_get_name_hour:str, sensor_set_name_hour:str, - sensor_get_name_minute:str, sensor_set_name_minute:str, - sensor_get_name_second:str, sensor_set_name_second:str, - sensor_get_name_am_pm:str, sensor_set_name_am_pm:str, - sensor_set_config_name:str, icon:str, category: EntityCategory | None, enabled_by_default: bool): - super().__init__(user_friendly_name, sensor_get_name, sensor_set_name, - sensor_get_name_weekday, sensor_set_name_weekday, - sensor_get_name_year, sensor_set_name_year, - sensor_get_name_month, sensor_set_name_month, - sensor_get_name_day, sensor_set_name_day, - sensor_get_name_hour, sensor_set_name_hour, - sensor_get_name_minute, sensor_set_name_minute, - sensor_get_name_second, sensor_set_name_second, - sensor_get_name_am_pm, sensor_set_name_am_pm, - sensor_set_config_name, icon, category, enabled_by_default) + """Representation of a 'Time sync Button' MCZ config item.""" + + def __init__( + self, + user_friendly_name: str, + sensor_get_name: str, + sensor_set_name: str, + sensor_get_name_weekday: str, + sensor_set_name_weekday: str, + sensor_get_name_year: str, + sensor_set_name_year: str, + sensor_get_name_month: str, + sensor_set_name_month: str, + sensor_get_name_day: str, + sensor_set_name_day: str, + sensor_get_name_hour: str, + sensor_set_name_hour: str, + sensor_get_name_minute: str, + sensor_set_name_minute: str, + sensor_get_name_second: str, + sensor_set_name_second: str, + sensor_get_name_am_pm: str, + sensor_set_name_am_pm: str, + sensor_set_config_name: str, + icon: str, + category: EntityCategory | None, + enabled_by_default: bool, + ) -> None: + """Create a 'Time Sync Button' MCZ config item.""" + super().__init__( + user_friendly_name, + sensor_get_name, + sensor_set_name, + sensor_get_name_weekday, + sensor_set_name_weekday, + sensor_get_name_year, + sensor_set_name_year, + sensor_get_name_month, + sensor_set_name_month, + sensor_get_name_day, + sensor_set_name_day, + sensor_get_name_hour, + sensor_set_name_hour, + sensor_get_name_minute, + sensor_set_name_minute, + sensor_get_name_second, + sensor_set_name_second, + sensor_get_name_am_pm, + sensor_set_name_am_pm, + sensor_set_config_name, + icon, + category, + enabled_by_default, + ) + @dataclass class PotMczConfigItem(SelectMczConfigItem): + """Representation of a 'Pot' MCZ config item.""" + + def __init__( + self, + user_friendly_name: str, + sensor_get_name: str, + sensor_set_name: str, + sensor_set_config_name: str, + enabled_by_default: bool, + ) -> None: + """Create a 'Pot' MCZ config item.""" + super().__init__( + user_friendly_name, + sensor_get_name, + sensor_set_name, + sensor_set_config_name, + "mdi:fire", + None, + enabled_by_default, + None, + ) - def __init__(self, user_friendly_name:str, sensor_get_name:str, sensor_set_name:str, sensor_set_config_name:str, enabled_by_default: bool): - super().__init__(user_friendly_name, sensor_get_name, sensor_set_name, sensor_set_config_name, "mdi:fire", None, enabled_by_default, None) @dataclass class BinarySensorMczConfigItem(MczConfigItem): - + """Representation of a 'Binary Sensor' MCZ config item.""" + device_class: BinarySensorDeviceClass | None = None - def __init__(self, user_friendly_name:str, sensor_get_name:str, icon:str, category: EntityCategory | None, device_class: BinarySensorDeviceClass | None, enabled_by_default: bool): + def __init__( + self, + user_friendly_name: str, + sensor_get_name: str, + icon: str, + category: EntityCategory | None, + device_class: BinarySensorDeviceClass | None, + enabled_by_default: bool, + ) -> None: + """Create a 'Binary Sensor' MCZ config item.""" super().__init__(user_friendly_name) self.sensor_get_name = sensor_get_name self.icon = icon @@ -237,17 +425,31 @@ def __init__(self, user_friendly_name:str, sensor_get_name:str, icon:str, catego self.device_class = device_class self.enabled_by_default = enabled_by_default + @dataclass class SensorMczConfigItem(MczConfigItem): - + """Representation of a 'Sensor' MCZ config item.""" + unit: str | None = None display_precision: int | None = None device_class: SensorDeviceClass | None = None state_class: SensorStateClass | None = None - api_value_renames: dict[str,str] | None = None + api_value_renames: dict[str, str] | None = None - - def __init__(self, user_friendly_name:str, sensor_get_name:str, icon:str, unit:str|None, display_precision:int|None ,category: EntityCategory | None, device_class: SensorDeviceClass | None, state_class: SensorStateClass | None, enabled_by_default: bool, api_value_renames: dict[str,str] | None = None): + def __init__( + self, + user_friendly_name: str, + sensor_get_name: str, + icon: str, + unit: str | None, + display_precision: int | None, + category: EntityCategory | None, + device_class: SensorDeviceClass | None, + state_class: SensorStateClass | None, + enabled_by_default: bool, + api_value_renames: dict[str, str] | None = None, + ) -> None: + """Create a 'Sensor' MCZ config item.""" super().__init__(user_friendly_name) self.sensor_get_name = sensor_get_name self.icon = icon @@ -259,144 +461,615 @@ def __init__(self, user_friendly_name:str, sensor_get_name:str, icon:str, unit:s self.enabled_by_default = enabled_by_default self.api_value_renames = api_value_renames + supported_power_settings = [ - PowerSettingMczConfigItem("Power", "stato_stufa", "com_on_off", "Spegnimento", True), - PowerSettingMczConfigItem("Power", "stato_stufa", "m1_stato_stufa", "Spegnimento", True), #for first generation M1+ + PowerSettingMczConfigItem( + "Power", "stato_stufa", "com_on_off", "Spegnimento", True + ), + PowerSettingMczConfigItem( + "Power", "stato_stufa", "m1_stato_stufa", "Spegnimento", True + ), # for first generation M1+ ] supported_climate_function_modes = [ - ClimateFunctionModeMczConfigItem("Mode", "mode", "mod_funz", "set_mod", True, {"dynamic":"auto"}), - ClimateFunctionModeMczConfigItem("Mode", "mode", "m1_mod_lav_att", "set_mod", True, {"dynamic":"auto", "power":"turbo"}), #for first generation M1+ + ClimateFunctionModeMczConfigItem( + "Mode", "mode", "mod_funz", "set_mod", True, {"dynamic": "auto"} + ), + ClimateFunctionModeMczConfigItem( + "Mode", + "mode", + "m1_mod_lav_att", + "set_mod", + True, + {"dynamic": "auto", "power": "turbo"}, + ), # for first generation M1+ ] supported_thermostats = [ - ThermostatMczConfigItem("Ambient Temperature", "set_amb1", "set_amb1", "Set_amb_temp", True), - ThermostatMczConfigItem("Ambient Temperature", "set_amb1", "m1_set_amb1", "Set_amb_temp", True), #for first generation M1+ - ThermostatMczConfigItem("Ambient Temperature 2", "set_amb2", "set_amb2", "Set_amb_temp", True), - ThermostatMczConfigItem("Ambient Temperature 2", "set_amb2", "m1_set_amb2", "Set_amb_temp", True), #for first generation M1+ - ThermostatMczConfigItem("Ambient Temperature 3", "set_amb3", "set_amb3", "Set_amb_temp", True), - ThermostatMczConfigItem("Ambient Temperature 3", "set_amb3", "m1_set_amb3", "Set_amb_temp", True), #for first generation M1+ + ThermostatMczConfigItem( + "Ambient Temperature", "set_amb1", "set_amb1", "Set_amb_temp", True + ), + ThermostatMczConfigItem( + "Ambient Temperature", "set_amb1", "m1_set_amb1", "Set_amb_temp", True + ), # for first generation M1+ + ThermostatMczConfigItem( + "Ambient Temperature 2", "set_amb2", "set_amb2", "Set_amb_temp", True + ), + ThermostatMczConfigItem( + "Ambient Temperature 2", "set_amb2", "m1_set_amb2", "Set_amb_temp", True + ), # for first generation M1+ + ThermostatMczConfigItem( + "Ambient Temperature 3", "set_amb3", "set_amb3", "Set_amb_temp", True + ), + ThermostatMczConfigItem( + "Ambient Temperature 3", "set_amb3", "m1_set_amb3", "Set_amb_temp", True + ), # for first generation M1+ ] supported_pots = [ PotMczConfigItem("Manual Power", "set_pot_man", "set_pot_man", "Set_pot", True), - PotMczConfigItem("Manual Power", "set_pot_man", "m1_potenza_att", "Set_pot", True), #for first generation M1+ + PotMczConfigItem( + "Manual Power", "set_pot_man", "m1_potenza_att", "Set_pot", True + ), # for first generation M1+ ] supported_fans = [ - FanMczConfigItem("Fan 1", "set_vent_v1", "set_vent_v1", {"manual":"Manuale", "auto":"Auto", "overnight":"Overnight", "comfort":"Comfort", "turbo":"Turbo"}, "silent_enabled", True), - FanMczConfigItem("Fan 1", "set_vent_v1", "m1_set_vent_v1", {"manual":"Manuale","dynamic":"Dynamic", "overnight":"Overnight", "comfort":"Comfort", "power":"Power"}, "silent_enabled", True), #for first generation M1+ - FanMczConfigItem("Fan 2", "set_vent_v2", "set_vent_v2", {"manual":"Manuale", "auto":"Auto", "overnight":"Overnight", "comfort":"Comfort", "turbo":"Turbo"}, "silent_enabled", True), - FanMczConfigItem("Fan 2", "set_vent_v2", "m1_set_vent_v2", {"manual":"Manuale","dynamic":"Dynamic", "overnight":"Overnight", "comfort":"Comfort", "power":"Power"}, "silent_enabled", True), #for first generation M1+ - FanMczConfigItem("Fan 3", "set_vent_v3", "set_vent_v3", {"manual":"Manuale", "auto":"Auto", "overnight":"Overnight", "comfort":"Comfort", "turbo":"Turbo"}, "silent_enabled", True), - FanMczConfigItem("Fan 3", "set_vent_v3", "m1_set_vent_v3", {"manual":"Manuale","dynamic":"Dynamic", "overnight":"Overnight", "comfort":"Comfort", "power":"Power"}, "silent_enabled", True), #for first generation M1+ + FanMczConfigItem( + "Fan 1", + "set_vent_v1", + "set_vent_v1", + { + "manual": "Manuale", + "auto": "Auto", + "overnight": "Overnight", + "comfort": "Comfort", + "turbo": "Turbo", + }, + "silent_enabled", + True, + ), + FanMczConfigItem( + "Fan 1", + "set_vent_v1", + "m1_set_vent_v1", + { + "manual": "Manuale", + "dynamic": "Dynamic", + "overnight": "Overnight", + "comfort": "Comfort", + "power": "Power", + }, + "silent_enabled", + True, + ), # for first generation M1+ + FanMczConfigItem( + "Fan 2", + "set_vent_v2", + "set_vent_v2", + { + "manual": "Manuale", + "auto": "Auto", + "overnight": "Overnight", + "comfort": "Comfort", + "turbo": "Turbo", + }, + "silent_enabled", + True, + ), + FanMczConfigItem( + "Fan 2", + "set_vent_v2", + "m1_set_vent_v2", + { + "manual": "Manuale", + "dynamic": "Dynamic", + "overnight": "Overnight", + "comfort": "Comfort", + "power": "Power", + }, + "silent_enabled", + True, + ), # for first generation M1+ + FanMczConfigItem( + "Fan 3", + "set_vent_v3", + "set_vent_v3", + { + "manual": "Manuale", + "auto": "Auto", + "overnight": "Overnight", + "comfort": "Comfort", + "turbo": "Turbo", + }, + "silent_enabled", + True, + ), + FanMczConfigItem( + "Fan 3", + "set_vent_v3", + "m1_set_vent_v3", + { + "manual": "Manuale", + "dynamic": "Dynamic", + "overnight": "Overnight", + "comfort": "Comfort", + "power": "Power", + }, + "silent_enabled", + True, + ), # for first generation M1+ ] supported_switches = [ - SwitchMczConfigItem("Start / Stop", "att_eco", "att_eco", "Start&Stop", "mdi:leaf", None, True), - SwitchMczConfigItem("Start / Stop", "att_eco", "m1_att_eco", "Start&Stop", "mdi:leaf", None, True), #for first generation M1+ - SwitchMczConfigItem("Timer", "crono_enabled", "att", "Crono", "mdi:timer", None, True), - SwitchMczConfigItem("Timer", "crono_enabled", "m1_crono_enabled", "Crono", "mdi:timer", None, True), #for first generation M1+ - #SwitchMczConfigItem("Silent Mode", "silent_enabled", "m1_silent_enabled", "set_v1", "mdi:fan-off", None, True), #for first generation M1+ + SwitchMczConfigItem( + "Start / Stop", "att_eco", "att_eco", "Start&Stop", "mdi:leaf", None, True + ), + SwitchMczConfigItem( + "Start / Stop", "att_eco", "m1_att_eco", "Start&Stop", "mdi:leaf", None, True + ), # for first generation M1+ + SwitchMczConfigItem( + "Timer", "crono_enabled", "att", "Crono", "mdi:timer", None, True + ), + SwitchMczConfigItem( + "Timer", "crono_enabled", "m1_crono_enabled", "Crono", "mdi:timer", None, True + ), # for first generation M1+ + # SwitchMczConfigItem("Silent Mode", "silent_enabled", "m1_silent_enabled", "set_v1", "mdi:fan-off", None, True), #for first generation M1+ ] supported_numbers = [ - #start/stop - NumberMczConfigItem("Start / Stop - Delay in Ignition", "rit_usc_standby", "rit_usc_standby", "Start&Stop", "auto", "mdi:fire", UnitOfTime.SECONDS ,EntityCategory.CONFIG, None, True), - NumberMczConfigItem("Start / Stop - Delay in Ignition", "rit_usc_standby", "m1_rit_usc_standby", "Start&Stop", "auto", "mdi:fire", UnitOfTime.SECONDS ,EntityCategory.CONFIG, None, True), #for first generation M1+ - NumberMczConfigItem("Start / Stop - Delay in Shutdown", "rit_ing_standby", "rit_ing_standby", "Start&Stop", "auto", "mdi:fire-off", UnitOfTime.SECONDS ,EntityCategory.CONFIG, None, True), - NumberMczConfigItem("Start / Stop - Delay in Shutdown", "rit_ing_standby", "m1_rit_ing_standby", "Start&Stop", "auto", "mdi:fire-off", UnitOfTime.SECONDS ,EntityCategory.CONFIG, None, True), #for first generation M1+ - NumberMczConfigItem("Start / Stop - Negative Hysteresis", "ist_eco_neg_amb", "ist_eco_neg_amb", "Start&Stop", "auto", "mdi:thermometer-minus", UnitOfTemperature.CELSIUS ,EntityCategory.CONFIG, NumberDeviceClass.TEMPERATURE, True), - NumberMczConfigItem("Start / Stop - Negative Hysteresis", "ist_eco_neg_amb", "m1_ist_eco_neg_amb", "Start&Stop", "auto", "mdi:thermometer-minus", UnitOfTemperature.CELSIUS ,EntityCategory.CONFIG, NumberDeviceClass.TEMPERATURE, True), #for first generation M1+ - NumberMczConfigItem("Start / Stop - Positive Hysteresis", "ist_eco_pos_amb", "ist_eco_pos_amb", "Start&Stop", "auto", "mdi:thermometer-plus", UnitOfTemperature.CELSIUS ,EntityCategory.CONFIG, NumberDeviceClass.TEMPERATURE, True), - NumberMczConfigItem("Start / Stop - Positive Hysteresis", "ist_eco_pos_amb", "m1_ist_eco_pos_amb", "Start&Stop", "auto", "mdi:thermometer-plus", UnitOfTemperature.CELSIUS ,EntityCategory.CONFIG, NumberDeviceClass.TEMPERATURE, True), #for first generation M1+ - #ambient - NumberMczConfigItem("Ambient - Negative Hysteresis", "ist_neg_amb", "ist_neg_amb", "Ambiente", "auto", "mdi:thermometer-minus", UnitOfTemperature.CELSIUS ,EntityCategory.CONFIG, NumberDeviceClass.TEMPERATURE, True), - NumberMczConfigItem("Ambient - Negative Hysteresis", "ist_neg_amb", "m1_ist_neg_amb", "Ambiente", "auto", "mdi:thermometer-minus", UnitOfTemperature.CELSIUS ,EntityCategory.CONFIG, NumberDeviceClass.TEMPERATURE, True), #for first generation M1+ - NumberMczConfigItem("Ambient - Positive Hysteresis", "ist_pos_amb", "ist_pos_amb", "Ambiente", "auto", "mdi:thermometer-plus", UnitOfTemperature.CELSIUS ,EntityCategory.CONFIG, NumberDeviceClass.TEMPERATURE, True), - NumberMczConfigItem("Ambient - Positive Hysteresis", "ist_pos_amb", "m1_ist_pos_amb", "Ambiente", "auto", "mdi:thermometer-plus", UnitOfTemperature.CELSIUS ,EntityCategory.CONFIG, NumberDeviceClass.TEMPERATURE, True), #for first generation M1+ - - #HYDRO - circulation pump - NumberMczConfigItem("Circulation Pump - On - Minimum Temperature", "temp_min_circ_on", "temp_min_circ_on", "temp_avanzate", "auto", "mdi:pump", UnitOfTemperature.CELSIUS ,EntityCategory.CONFIG, NumberDeviceClass.TEMPERATURE, True), - NumberMczConfigItem("Circulation Pump - On - Minimum Temperature", "temp_min_circ_on", "m1_temp_min_circ_on", "temp_avanzate", "auto", "mdi:pump", UnitOfTemperature.CELSIUS ,EntityCategory.CONFIG, NumberDeviceClass.TEMPERATURE, True), #for first generation M1+ - - + # start/stop + NumberMczConfigItem( + "Start / Stop - Delay in Ignition", + "rit_usc_standby", + "rit_usc_standby", + "Start&Stop", + "auto", + "mdi:fire", + UnitOfTime.SECONDS, + EntityCategory.CONFIG, + None, + True, + ), + NumberMczConfigItem( + "Start / Stop - Delay in Ignition", + "rit_usc_standby", + "m1_rit_usc_standby", + "Start&Stop", + "auto", + "mdi:fire", + UnitOfTime.SECONDS, + EntityCategory.CONFIG, + None, + True, + ), # for first generation M1+ + NumberMczConfigItem( + "Start / Stop - Delay in Shutdown", + "rit_ing_standby", + "rit_ing_standby", + "Start&Stop", + "auto", + "mdi:fire-off", + UnitOfTime.SECONDS, + EntityCategory.CONFIG, + None, + True, + ), + NumberMczConfigItem( + "Start / Stop - Delay in Shutdown", + "rit_ing_standby", + "m1_rit_ing_standby", + "Start&Stop", + "auto", + "mdi:fire-off", + UnitOfTime.SECONDS, + EntityCategory.CONFIG, + None, + True, + ), # for first generation M1+ + NumberMczConfigItem( + "Start / Stop - Negative Hysteresis", + "ist_eco_neg_amb", + "ist_eco_neg_amb", + "Start&Stop", + "auto", + "mdi:thermometer-minus", + UnitOfTemperature.CELSIUS, + EntityCategory.CONFIG, + NumberDeviceClass.TEMPERATURE, + True, + ), + NumberMczConfigItem( + "Start / Stop - Negative Hysteresis", + "ist_eco_neg_amb", + "m1_ist_eco_neg_amb", + "Start&Stop", + "auto", + "mdi:thermometer-minus", + UnitOfTemperature.CELSIUS, + EntityCategory.CONFIG, + NumberDeviceClass.TEMPERATURE, + True, + ), # for first generation M1+ + NumberMczConfigItem( + "Start / Stop - Positive Hysteresis", + "ist_eco_pos_amb", + "ist_eco_pos_amb", + "Start&Stop", + "auto", + "mdi:thermometer-plus", + UnitOfTemperature.CELSIUS, + EntityCategory.CONFIG, + NumberDeviceClass.TEMPERATURE, + True, + ), + NumberMczConfigItem( + "Start / Stop - Positive Hysteresis", + "ist_eco_pos_amb", + "m1_ist_eco_pos_amb", + "Start&Stop", + "auto", + "mdi:thermometer-plus", + UnitOfTemperature.CELSIUS, + EntityCategory.CONFIG, + NumberDeviceClass.TEMPERATURE, + True, + ), # for first generation M1+ + # ambient + NumberMczConfigItem( + "Ambient - Negative Hysteresis", + "ist_neg_amb", + "ist_neg_amb", + "Ambiente", + "auto", + "mdi:thermometer-minus", + UnitOfTemperature.CELSIUS, + EntityCategory.CONFIG, + NumberDeviceClass.TEMPERATURE, + True, + ), + NumberMczConfigItem( + "Ambient - Negative Hysteresis", + "ist_neg_amb", + "m1_ist_neg_amb", + "Ambiente", + "auto", + "mdi:thermometer-minus", + UnitOfTemperature.CELSIUS, + EntityCategory.CONFIG, + NumberDeviceClass.TEMPERATURE, + True, + ), # for first generation M1+ + NumberMczConfigItem( + "Ambient - Positive Hysteresis", + "ist_pos_amb", + "ist_pos_amb", + "Ambiente", + "auto", + "mdi:thermometer-plus", + UnitOfTemperature.CELSIUS, + EntityCategory.CONFIG, + NumberDeviceClass.TEMPERATURE, + True, + ), + NumberMczConfigItem( + "Ambient - Positive Hysteresis", + "ist_pos_amb", + "m1_ist_pos_amb", + "Ambiente", + "auto", + "mdi:thermometer-plus", + UnitOfTemperature.CELSIUS, + EntityCategory.CONFIG, + NumberDeviceClass.TEMPERATURE, + True, + ), # for first generation M1+ + # HYDRO - circulation pump + NumberMczConfigItem( + "Circulation Pump - On - Minimum Temperature", + "temp_min_circ_on", + "temp_min_circ_on", + "temp_avanzate", + "auto", + "mdi:pump", + UnitOfTemperature.CELSIUS, + EntityCategory.CONFIG, + NumberDeviceClass.TEMPERATURE, + True, + ), + NumberMczConfigItem( + "Circulation Pump - On - Minimum Temperature", + "temp_min_circ_on", + "m1_temp_min_circ_on", + "temp_avanzate", + "auto", + "mdi:pump", + UnitOfTemperature.CELSIUS, + EntityCategory.CONFIG, + NumberDeviceClass.TEMPERATURE, + True, + ), # for first generation M1+ ] supported_selectors = [ - SelectMczConfigItem("Tones", "toni_buzz", "toni_buzz", "Toni", "mdi:volume-high", EntityCategory.CONFIG, True, {"0":"Silent", "1":"Normal", "2":"High"}), - SelectMczConfigItem("Tones", "toni_buzz", "m1_toni_buzz", "Toni", "mdi:volume-high", EntityCategory.CONFIG, True, {"0":"Silent", "1":"Normal", "2":"High"}), #for first generation M1+ + SelectMczConfigItem( + "Tones", + "toni_buzz", + "toni_buzz", + "Toni", + "mdi:volume-high", + EntityCategory.CONFIG, + True, + {"0": "Silent", "1": "Normal", "2": "High"}, + ), + SelectMczConfigItem( + "Tones", + "toni_buzz", + "m1_toni_buzz", + "Toni", + "mdi:volume-high", + EntityCategory.CONFIG, + True, + {"0": "Silent", "1": "Normal", "2": "High"}, + ), # for first generation M1+ ] supported_date_times = [ - DateTimeMczConfigItem("Date & Time", - "giorno", "giorno", - "giorno_sett", "giorno_sett", - "anno", "anno", - "mese", "mese", - "giorno", "giorno", - "ore", "ore", - "minuti", "minuti", - "secondi", "secondi", - "am_pm","am_pm", - "Orodatario", "mdi:calendar-clock", EntityCategory.CONFIG, False), - DateTimeMczConfigItem("Date & Time", - "giorno", "m1_giorno", - None, None, - "anno", "m1_anno", - "mese", "m1_mese", - "giorno", "m1_giorno", - "ore", "m1_ore", - "minuti", "m1_minuti", - None, None, - None, None, - "Orodatario", "mdi:calendar-clock", EntityCategory.CONFIG, False), #for first generation M1+ + DateTimeMczConfigItem( + "Date & Time", + "giorno", + "giorno", + "giorno_sett", + "giorno_sett", + "anno", + "anno", + "mese", + "mese", + "giorno", + "giorno", + "ore", + "ore", + "minuti", + "minuti", + "secondi", + "secondi", + "am_pm", + "am_pm", + "Orodatario", + "mdi:calendar-clock", + EntityCategory.CONFIG, + False, + ), + DateTimeMczConfigItem( + "Date & Time", + "giorno", + "m1_giorno", + None, + None, + "anno", + "m1_anno", + "mese", + "m1_mese", + "giorno", + "m1_giorno", + "ore", + "m1_ore", + "minuti", + "m1_minuti", + None, + None, + None, + None, + "Orodatario", + "mdi:calendar-clock", + EntityCategory.CONFIG, + False, + ), # for first generation M1+ ] supported_buttons = [ - ButtonMczConfigItem("Alarm Reset","com_reset_allarm","Reset Allarme","mdi:auto-fix", EntityCategory.DIAGNOSTIC, True), - ButtonMczConfigItem("Alarm Reset","m1_com_reset_allarm","Reset Allarme","mdi:auto-fix", EntityCategory.DIAGNOSTIC, True), #for first generation M1+ + ButtonMczConfigItem( + "Alarm Reset", + "com_reset_allarm", + "Reset Allarme", + "mdi:auto-fix", + EntityCategory.DIAGNOSTIC, + True, + ), + ButtonMczConfigItem( + "Alarm Reset", + "m1_com_reset_allarm", + "Reset Allarme", + "mdi:auto-fix", + EntityCategory.DIAGNOSTIC, + True, + ), # for first generation M1+ ] supported_time_sync_buttons = [ - TimeSyncButtonMczConfigItem("Set System Date & Time", - "giorno", "giorno", - "giorno_sett", "giorno_sett", - "anno", "anno", - "mese", "mese", - "giorno", "giorno", - "ore", "ore", - "minuti", "minuti", - "secondi", "secondi", - "am_pm","am_pm", - "Orodatario", "mdi:calendar-clock", EntityCategory.CONFIG, True), - TimeSyncButtonMczConfigItem("Set System Date & Time", - "giorno", "m1_giorno", - None, None, - "anno", "m1_anno", - "mese", "m1_mese", - "giorno", "m1_giorno", - "ore", "m1_ore", - "minuti", "m1_minuti", - None, None, - None, None, - "Orodatario", "mdi:calendar-clock", EntityCategory.CONFIG, True), #for first generation M1+ + TimeSyncButtonMczConfigItem( + "Set System Date & Time", + "giorno", + "giorno", + "giorno_sett", + "giorno_sett", + "anno", + "anno", + "mese", + "mese", + "giorno", + "giorno", + "ore", + "ore", + "minuti", + "minuti", + "secondi", + "secondi", + "am_pm", + "am_pm", + "Orodatario", + "mdi:calendar-clock", + EntityCategory.CONFIG, + True, + ), + TimeSyncButtonMczConfigItem( + "Set System Date & Time", + "giorno", + "m1_giorno", + None, + None, + "anno", + "m1_anno", + "mese", + "m1_mese", + "giorno", + "m1_giorno", + "ore", + "m1_ore", + "minuti", + "m1_minuti", + None, + None, + None, + None, + "Orodatario", + "mdi:calendar-clock", + EntityCategory.CONFIG, + True, + ), # for first generation M1+ ] supported_binary_sensors = [ - BinarySensorMczConfigItem("Alarm","is_in_error","mdi:alert", EntityCategory.DIAGNOSTIC, BinarySensorDeviceClass.PROBLEM, True), + BinarySensorMczConfigItem( + "Alarm", + "is_in_error", + "mdi:alert", + EntityCategory.DIAGNOSTIC, + BinarySensorDeviceClass.PROBLEM, + True, + ), ] supported_sensors = [ - SensorMczConfigItem("Last Alarm Code","last_alarm","mdi:alert", None, None, EntityCategory.DIAGNOSTIC, None, None, True), - SensorMczConfigItem("Current State","state","mdi:power", None, None, EntityCategory.DIAGNOSTIC, None, None, True), - SensorMczConfigItem("Ambient Temperature","temp_amb_install","mdi:thermometer", UnitOfTemperature.CELSIUS, None, None, SensorDeviceClass.TEMPERATURE, SensorStateClass.MEASUREMENT, True), - SensorMczConfigItem("Water Temperature","temp_caldaia","mdi:water-thermometer", UnitOfTemperature.CELSIUS, None, None, SensorDeviceClass.TEMPERATURE, SensorStateClass.MEASUREMENT, True), - SensorMczConfigItem("Puffer Temperature","temp_puffer","mdi:water-thermometer", UnitOfTemperature.CELSIUS, None, None, SensorDeviceClass.TEMPERATURE, SensorStateClass.MEASUREMENT, True), - SensorMczConfigItem("Current Mode","mode","mdi:calendar-multiselect", None, None, EntityCategory.DIAGNOSTIC, None, None, True, {"dynamic":"auto", "power":"turbo"}), #renames are needed for first generation M1+ (for consistency in the different modes compaired to other models) - SensorMczConfigItem("Exhaust Temperature","temp_fumi","mdi:thermometer", UnitOfTemperature.CELSIUS, None, EntityCategory.DIAGNOSTIC, SensorDeviceClass.TEMPERATURE, SensorStateClass.MEASUREMENT, True), - SensorMczConfigItem("Board Temperature","temp_scheda","mdi:thermometer", UnitOfTemperature.CELSIUS, None, EntityCategory.DIAGNOSTIC, SensorDeviceClass.TEMPERATURE, SensorStateClass.MEASUREMENT, True), - SensorMczConfigItem("Exhaust Fan Speed","vel_real_ventola_fumi","mdi:fan-chevron-up", REVOLUTIONS_PER_MINUTE, None, EntityCategory.DIAGNOSTIC, None, SensorStateClass.MEASUREMENT, True), - SensorMczConfigItem("Transport Screw Speed","vel_real_coclea","mdi:screw-lag", REVOLUTIONS_PER_MINUTE, None, EntityCategory.DIAGNOSTIC, None, SensorStateClass.MEASUREMENT, True), - SensorMczConfigItem("Next Maintenance","ore_prox_manut","mdi:wrench-clock", UnitOfTime.HOURS, 0, EntityCategory.DIAGNOSTIC, None , SensorStateClass.MEASUREMENT, True), #SensorDeviceClass.DURATION + SensorMczConfigItem( + "Last Alarm Code", + "last_alarm", + "mdi:alert", + None, + None, + EntityCategory.DIAGNOSTIC, + None, + None, + True, + ), + SensorMczConfigItem( + "Current State", + "state", + "mdi:power", + None, + None, + EntityCategory.DIAGNOSTIC, + None, + None, + True, + ), + SensorMczConfigItem( + "Ambient Temperature", + "temp_amb_install", + "mdi:thermometer", + UnitOfTemperature.CELSIUS, + None, + None, + SensorDeviceClass.TEMPERATURE, + SensorStateClass.MEASUREMENT, + True, + ), + SensorMczConfigItem( + "Water Temperature", + "temp_caldaia", + "mdi:water-thermometer", + UnitOfTemperature.CELSIUS, + None, + None, + SensorDeviceClass.TEMPERATURE, + SensorStateClass.MEASUREMENT, + True, + ), + SensorMczConfigItem( + "Puffer Temperature", + "temp_puffer", + "mdi:water-thermometer", + UnitOfTemperature.CELSIUS, + None, + None, + SensorDeviceClass.TEMPERATURE, + SensorStateClass.MEASUREMENT, + True, + ), + SensorMczConfigItem( + "Current Mode", + "mode", + "mdi:calendar-multiselect", + None, + None, + EntityCategory.DIAGNOSTIC, + None, + None, + True, + {"dynamic": "auto", "power": "turbo"}, + ), # renames are needed for first generation M1+ (for consistency in the different modes compaired to other models) + SensorMczConfigItem( + "Exhaust Temperature", + "temp_fumi", + "mdi:thermometer", + UnitOfTemperature.CELSIUS, + None, + EntityCategory.DIAGNOSTIC, + SensorDeviceClass.TEMPERATURE, + SensorStateClass.MEASUREMENT, + True, + ), + SensorMczConfigItem( + "Board Temperature", + "temp_scheda", + "mdi:thermometer", + UnitOfTemperature.CELSIUS, + None, + EntityCategory.DIAGNOSTIC, + SensorDeviceClass.TEMPERATURE, + SensorStateClass.MEASUREMENT, + True, + ), + SensorMczConfigItem( + "Exhaust Fan Speed", + "vel_real_ventola_fumi", + "mdi:fan-chevron-up", + REVOLUTIONS_PER_MINUTE, + None, + EntityCategory.DIAGNOSTIC, + None, + SensorStateClass.MEASUREMENT, + True, + ), + SensorMczConfigItem( + "Transport Screw Speed", + "vel_real_coclea", + "mdi:screw-lag", + REVOLUTIONS_PER_MINUTE, + None, + EntityCategory.DIAGNOSTIC, + None, + SensorStateClass.MEASUREMENT, + True, + ), + SensorMczConfigItem( + "Next Maintenance", + "ore_prox_manut", + "mdi:wrench-clock", + UnitOfTime.HOURS, + 0, + EntityCategory.DIAGNOSTIC, + None, + SensorStateClass.MEASUREMENT, + True, + ), # SensorDeviceClass.DURATION ]