diff --git a/ariston/ariston_api.py b/ariston/ariston_api.py index 5127ffa..17dfbad 100644 --- a/ariston/ariston_api.py +++ b/ariston/ariston_api.py @@ -289,12 +289,13 @@ def set_bsb_mode(self, gw_id: str, value: BsbOperativeMode) -> None: }, ) - def set_bsb_zone_mode(self, gw_id: str, zone: int, value: BsbZoneMode) -> None: + def set_bsb_zone_mode(self, gw_id: str, zone: int, value: BsbZoneMode, old_value: BsbZoneMode, is_cooling: bool) -> None: """Set Bsb zone mode""" self._post( - f"{self.__api_url}{ARISTON_REMOTE}/{ARISTON_BSB_ZONES}/{gw_id}/{zone}/mode", + f"{self.__api_url}{ARISTON_REMOTE}/{ARISTON_BSB_ZONES}/{gw_id}/{zone}/mode?isCooling={is_cooling}", { "new": value.value, + "old": old_value.value }, ) @@ -349,15 +350,19 @@ def set_bsb_temperature(self, gw_id: str, comfort: float, reduced: float, old_co ) def set_bsb_zone_temperature( - self, gw_id: str, zone: int, comfort: float, reduced: float + self, gw_id: str, zone: int, comfort: float, reduced: float, old_comfort: Optional[float], old_reduced: Optional[float], is_cooling: bool ) -> None: """Set Bsb zone temperature""" self._post( - f"{self.__api_url}{ARISTON_REMOTE}/{ARISTON_BSB_ZONES}/{gw_id}/{zone}/temperatures", + f"{self.__api_url}{ARISTON_REMOTE}/{ARISTON_BSB_ZONES}/{gw_id}/{zone}/temperatures?isCooling={is_cooling}", { "new": { "comf": comfort, "econ": reduced, + }, + "old": { + "comf": old_comfort, + "econ": old_reduced, } }, ) @@ -717,13 +722,14 @@ async def async_set_bsb_mode(self, gw_id: str, value: BsbOperativeMode) -> None: ) async def async_set_bsb_zone_mode( - self, gw_id: str, zone: int, value: BsbZoneMode + self, gw_id: str, zone: int, value: BsbZoneMode, old_value: BsbZoneMode, is_cooling: bool ) -> None: """Async set Bsb zone mode""" await self._async_post( - f"{self.__api_url}{ARISTON_REMOTE}/{ARISTON_BSB_ZONES}/{gw_id}/{zone}/mode", + f"{self.__api_url}{ARISTON_REMOTE}/{ARISTON_BSB_ZONES}/{gw_id}/{zone}/mode?isCooling={is_cooling}", { "new": value.value, + "old": old_value.value }, ) @@ -782,15 +788,19 @@ async def async_set_bsb_temperature( ) async def async_set_bsb_zone_temperature( - self, gw_id: str, zone: int, comfort: float, reduced: float + self, gw_id: str, zone: int, comfort: float, reduced: float, old_comfort: Optional[float], old_reduced: Optional[float], is_cooling: bool ) -> None: """Async set Bsb zone temperature""" await self._async_post( - f"{self.__api_url}{ARISTON_REMOTE}/{ARISTON_BSB_ZONES}/{gw_id}/{zone}/temperatures", + f"{self.__api_url}{ARISTON_REMOTE}/{ARISTON_BSB_ZONES}/{gw_id}/{zone}/temperatures?isCooling={is_cooling}", { "new": { "comf": comfort, "econ": reduced, + }, + "old": { + "comf": old_comfort, + "econ": old_reduced, } }, ) diff --git a/ariston/bsb_device.py b/ariston/bsb_device.py index 2ef1bbc..9f13cc3 100644 --- a/ariston/bsb_device.py +++ b/ariston/bsb_device.py @@ -339,11 +339,13 @@ async def _async_set_water_heater_temperature( def set_zone_mode(self, zone_mode: BsbZoneMode, zone: int): """Set zone mode""" - self.api.set_bsb_zone_mode(self.gw, zone, zone_mode) + self.api.set_bsb_zone_mode(self.gw, zone, zone_mode, self.get_zone_mode(zone), self.is_plant_in_cool_mode) + self.get_zone(zone)[BsbZoneProperties.MODE][PropertyType.VALUE] = zone_mode async def async_set_zone_mode(self, zone_mode: BsbZoneMode, zone: int): """Async set zone mode""" - await self.api.async_set_bsb_zone_mode(self.gw, zone, zone_mode) + await self.api.async_set_bsb_zone_mode(self.gw, zone, zone_mode, self.get_zone_mode(zone), self.is_plant_in_cool_mode) + self.get_zone(zone)[BsbZoneProperties.MODE][PropertyType.VALUE] = zone_mode @property def outside_temp_value(self) -> str: @@ -360,7 +362,7 @@ def set_comfort_temp(self, temp: float, zone: int): if len(self.data) == 0: self.update_state() reduced = self.get_reduced_temp_value(zone) - self.api.set_bsb_zone_temperature(self.gw, zone, temp, reduced) + self.api.set_bsb_zone_temperature(self.gw, zone, temp, reduced, self.get_comfort_temp_value(zone), self.get_reduced_temp_value(zone), self.is_plant_in_cool_mode) self.get_zone_ch_comf_temp(zone)[PropertyType.VALUE] = temp async def async_set_comfort_temp(self, temp: float, zone: int): @@ -368,7 +370,7 @@ async def async_set_comfort_temp(self, temp: float, zone: int): if len(self.data) == 0: await self.async_update_state() reduced = self.get_reduced_temp_value(zone) - await self.api.async_set_bsb_zone_temperature(self.gw, zone, temp, reduced) + await self.api.async_set_bsb_zone_temperature(self.gw, zone, temp, reduced, self.get_comfort_temp_value(zone), self.get_reduced_temp_value(zone), self.is_plant_in_cool_mode) self.get_zone_ch_comf_temp(zone)[PropertyType.VALUE] = temp def set_reduced_temp(self, temp: float, zone: int): @@ -376,7 +378,7 @@ def set_reduced_temp(self, temp: float, zone: int): if len(self.data) == 0: self.update_state() comfort = self.get_comfort_temp_value(zone) - self.api.set_bsb_zone_temperature(self.gw, zone, comfort, temp) + self.api.set_bsb_zone_temperature(self.gw, zone, comfort, temp, self.get_comfort_temp_value(zone), self.get_reduced_temp_value(zone), self.is_plant_in_cool_mode) self.get_zone_ch_red_temp(zone)[PropertyType.VALUE] = temp async def async_set_reduced_temp(self, temp: float, zone: int): @@ -384,5 +386,5 @@ async def async_set_reduced_temp(self, temp: float, zone: int): if len(self.data) == 0: await self.async_update_state() comfort = self.get_comfort_temp_value(zone) - await self.api.async_set_bsb_zone_temperature(self.gw, zone, comfort, temp) + await self.api.async_set_bsb_zone_temperature(self.gw, zone, comfort, temp, self.get_comfort_temp_value(zone), self.get_reduced_temp_value(zone), self.is_plant_in_cool_mode) self.get_zone_ch_red_temp(zone)[PropertyType.VALUE] = temp