""" ThermalControl module SPDX - License - Identifier: LGPL - 3.0 - or -later Copyright © 2022 Project Author Pilar Monsalvete Alvarez de Uribarri pilar.monsalvete@concordia.ca """ from typing import Union from city_model_structure.attributes.schedule import Schedule class ThermalControl: """ ThermalControl class """ def __init__(self): self._heating_set_point = None self._cooling_set_point = None self._hvac_availability = None self._heating_set_back = None @property def heating_set_point(self) -> Union[None, Schedule]: """ Get heating set point defined for a thermal zone in Celsius :return: None or Schedule """ return self._heating_set_point @heating_set_point.setter def heating_set_point(self, value): """ Set heating set point defined for a thermal zone in Celsius :param value: Schedule """ self._heating_set_point = value @property def heating_set_back(self) -> Union[None, float]: """ Get heating set back defined for a thermal zone in Celsius Heating set back is the only parameter which is not a schedule as it is either one value or it is implicit in the set point schedule :return: None or float """ return self._heating_set_back @heating_set_back.setter def heating_set_back(self, value): """ Set heating set back defined for a thermal zone in Celsius :param value: float """ if value is not None: self._heating_set_back = float(value) @property def cooling_set_point(self) -> Union[None, Schedule]: """ Get cooling set point defined for a thermal zone in Celsius :return: None or Schedule """ return self._cooling_set_point @cooling_set_point.setter def cooling_set_point(self, value): """ Set cooling set point defined for a thermal zone in Celsius :param value: Schedule """ self._cooling_set_point = value @property def hvac_availability(self) -> Union[None, Schedule]: """ Get the availability of the conditioning system defined for a thermal zone :return: None or Schedule """ return self._hvac_availability @hvac_availability.setter def hvac_availability(self, value): """ Set the availability of the conditioning system defined for a thermal zone :param value: Schedule """ self._hvac_availability = value