Skip to content

Commit 2658a73

Browse files
authored
Fix set temperature and set zone mode for BSB devices (#168)
1 parent 31606db commit 2658a73

2 files changed

Lines changed: 26 additions & 14 deletions

File tree

ariston/ariston_api.py

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -289,12 +289,13 @@ def set_bsb_mode(self, gw_id: str, value: BsbOperativeMode) -> None:
289289
},
290290
)
291291

292-
def set_bsb_zone_mode(self, gw_id: str, zone: int, value: BsbZoneMode) -> None:
292+
def set_bsb_zone_mode(self, gw_id: str, zone: int, value: BsbZoneMode, old_value: BsbZoneMode, is_cooling: bool) -> None:
293293
"""Set Bsb zone mode"""
294294
self._post(
295-
f"{self.__api_url}{ARISTON_REMOTE}/{ARISTON_BSB_ZONES}/{gw_id}/{zone}/mode",
295+
f"{self.__api_url}{ARISTON_REMOTE}/{ARISTON_BSB_ZONES}/{gw_id}/{zone}/mode?isCooling={is_cooling}",
296296
{
297297
"new": value.value,
298+
"old": old_value.value
298299
},
299300
)
300301

@@ -349,15 +350,19 @@ def set_bsb_temperature(self, gw_id: str, comfort: float, reduced: float, old_co
349350
)
350351

351352
def set_bsb_zone_temperature(
352-
self, gw_id: str, zone: int, comfort: float, reduced: float
353+
self, gw_id: str, zone: int, comfort: float, reduced: float, old_comfort: Optional[float], old_reduced: Optional[float], is_cooling: bool
353354
) -> None:
354355
"""Set Bsb zone temperature"""
355356
self._post(
356-
f"{self.__api_url}{ARISTON_REMOTE}/{ARISTON_BSB_ZONES}/{gw_id}/{zone}/temperatures",
357+
f"{self.__api_url}{ARISTON_REMOTE}/{ARISTON_BSB_ZONES}/{gw_id}/{zone}/temperatures?isCooling={is_cooling}",
357358
{
358359
"new": {
359360
"comf": comfort,
360361
"econ": reduced,
362+
},
363+
"old": {
364+
"comf": old_comfort,
365+
"econ": old_reduced,
361366
}
362367
},
363368
)
@@ -717,13 +722,14 @@ async def async_set_bsb_mode(self, gw_id: str, value: BsbOperativeMode) -> None:
717722
)
718723

719724
async def async_set_bsb_zone_mode(
720-
self, gw_id: str, zone: int, value: BsbZoneMode
725+
self, gw_id: str, zone: int, value: BsbZoneMode, old_value: BsbZoneMode, is_cooling: bool
721726
) -> None:
722727
"""Async set Bsb zone mode"""
723728
await self._async_post(
724-
f"{self.__api_url}{ARISTON_REMOTE}/{ARISTON_BSB_ZONES}/{gw_id}/{zone}/mode",
729+
f"{self.__api_url}{ARISTON_REMOTE}/{ARISTON_BSB_ZONES}/{gw_id}/{zone}/mode?isCooling={is_cooling}",
725730
{
726731
"new": value.value,
732+
"old": old_value.value
727733
},
728734
)
729735

@@ -782,15 +788,19 @@ async def async_set_bsb_temperature(
782788
)
783789

784790
async def async_set_bsb_zone_temperature(
785-
self, gw_id: str, zone: int, comfort: float, reduced: float
791+
self, gw_id: str, zone: int, comfort: float, reduced: float, old_comfort: Optional[float], old_reduced: Optional[float], is_cooling: bool
786792
) -> None:
787793
"""Async set Bsb zone temperature"""
788794
await self._async_post(
789-
f"{self.__api_url}{ARISTON_REMOTE}/{ARISTON_BSB_ZONES}/{gw_id}/{zone}/temperatures",
795+
f"{self.__api_url}{ARISTON_REMOTE}/{ARISTON_BSB_ZONES}/{gw_id}/{zone}/temperatures?isCooling={is_cooling}",
790796
{
791797
"new": {
792798
"comf": comfort,
793799
"econ": reduced,
800+
},
801+
"old": {
802+
"comf": old_comfort,
803+
"econ": old_reduced,
794804
}
795805
},
796806
)

ariston/bsb_device.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -339,11 +339,13 @@ async def _async_set_water_heater_temperature(
339339

340340
def set_zone_mode(self, zone_mode: BsbZoneMode, zone: int):
341341
"""Set zone mode"""
342-
self.api.set_bsb_zone_mode(self.gw, zone, zone_mode)
342+
self.api.set_bsb_zone_mode(self.gw, zone, zone_mode, self.get_zone_mode(zone), self.is_plant_in_cool_mode)
343+
self.get_zone(zone)[BsbZoneProperties.MODE][PropertyType.VALUE] = zone_mode
343344

344345
async def async_set_zone_mode(self, zone_mode: BsbZoneMode, zone: int):
345346
"""Async set zone mode"""
346-
await self.api.async_set_bsb_zone_mode(self.gw, zone, zone_mode)
347+
await self.api.async_set_bsb_zone_mode(self.gw, zone, zone_mode, self.get_zone_mode(zone), self.is_plant_in_cool_mode)
348+
self.get_zone(zone)[BsbZoneProperties.MODE][PropertyType.VALUE] = zone_mode
347349

348350
@property
349351
def outside_temp_value(self) -> str:
@@ -360,29 +362,29 @@ def set_comfort_temp(self, temp: float, zone: int):
360362
if len(self.data) == 0:
361363
self.update_state()
362364
reduced = self.get_reduced_temp_value(zone)
363-
self.api.set_bsb_zone_temperature(self.gw, zone, temp, reduced)
365+
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)
364366
self.get_zone_ch_comf_temp(zone)[PropertyType.VALUE] = temp
365367

366368
async def async_set_comfort_temp(self, temp: float, zone: int):
367369
"""Async set central heating comfort temp"""
368370
if len(self.data) == 0:
369371
await self.async_update_state()
370372
reduced = self.get_reduced_temp_value(zone)
371-
await self.api.async_set_bsb_zone_temperature(self.gw, zone, temp, reduced)
373+
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)
372374
self.get_zone_ch_comf_temp(zone)[PropertyType.VALUE] = temp
373375

374376
def set_reduced_temp(self, temp: float, zone: int):
375377
"""Set central heating reduced temp"""
376378
if len(self.data) == 0:
377379
self.update_state()
378380
comfort = self.get_comfort_temp_value(zone)
379-
self.api.set_bsb_zone_temperature(self.gw, zone, comfort, temp)
381+
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)
380382
self.get_zone_ch_red_temp(zone)[PropertyType.VALUE] = temp
381383

382384
async def async_set_reduced_temp(self, temp: float, zone: int):
383385
"""Async set central heating reduced temp"""
384386
if len(self.data) == 0:
385387
await self.async_update_state()
386388
comfort = self.get_comfort_temp_value(zone)
387-
await self.api.async_set_bsb_zone_temperature(self.gw, zone, comfort, temp)
389+
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)
388390
self.get_zone_ch_red_temp(zone)[PropertyType.VALUE] = temp

0 commit comments

Comments
 (0)