Skip to content

Commit e810a59

Browse files
committed
feat(tion): set internal state based on user request
It will allow us to don't make new request to breezer after set to get updated params i.e. use set() get(skip_update=True) sequence to get updated params without connecting to breezer. Also set() set() calls may be done without additional internal get().
1 parent e94748d commit e810a59

File tree

1 file changed

+20
-2
lines changed

1 file changed

+20
-2
lines changed

tion_btle/tion.py

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -260,6 +260,20 @@ def get(self, keep_connection: bool = False, skip_update: bool = False) -> dict:
260260

261261
return {**common, **model_specific_data}
262262

263+
def _set_internal_state_from_request(self, request: dict) -> None:
264+
"""
265+
Set internal parameters based on user request
266+
:param request: changed breezer parameter from set request
267+
:return: None
268+
"""
269+
for p in ['fan_speed', 'target_temp', 'heater', 'sound', 'mode', 'state']:
270+
# ToDo: lite have additional parameters to set: "light" and "co2_auto_control", so we should get this
271+
# list from class
272+
try:
273+
setattr(self, p, request[p])
274+
except KeyError:
275+
pass
276+
263277
def set(self, new_settings=None) -> None:
264278
"""
265279
Set new breezer state
@@ -278,14 +292,14 @@ def set(self, new_settings=None) -> None:
278292

279293
try:
280294
self.connect()
281-
current_settings = self.get()
295+
current_settings = self.get(skip_update=True)
282296

283297
merged_settings = {**current_settings, **new_settings}
284298

285299
encoded_request = self._encode_request(merged_settings)
286300
_LOGGER.debug("Will write %s", encoded_request)
287301
self._send_request(encoded_request)
288-
# ToDo set internal state according to new_settings
302+
self._set_internal_state_from_request(new_settings)
289303
finally:
290304
self.disconnect()
291305

@@ -487,6 +501,10 @@ def heating(self, new_state: str):
487501
def mode(self):
488502
return self._process_mode(self._mode)
489503

504+
@mode.setter
505+
def mode(self, new_state: str):
506+
self._mode = self._encode_mode(new_state)
507+
490508
@property
491509
def model(self) -> str:
492510
return self._model

0 commit comments

Comments
 (0)