Skip to content

Commit e8782e1

Browse files
authored
Merge pull request #60 from rleschuk/main
механизм запроса состояния кондиционера если это небходимо
2 parents 23f75ab + 79b38d1 commit e8782e1

File tree

1 file changed

+15
-1
lines changed
  • custom_components/haier_evo

1 file changed

+15
-1
lines changed

custom_components/haier_evo/api.py

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -510,6 +510,8 @@ def _on_message(self, ws: WebSocket, message: str) -> None:
510510
def _on_open(self, ws: WebSocket) -> None:
511511
self.socket_status = SocketStatus.INITIALIZED
512512
_LOGGER.debug("Websocket opened")
513+
for device in self.devices:
514+
device.init_if_needed()
513515

514516
# noinspection PyUnusedLocal
515517
def _on_ping(self, ws: WebSocket) -> None:
@@ -542,7 +544,7 @@ def connect(self) -> None:
542544
try:
543545
self.socket_status = SocketStatus.INITIALIZING
544546
self._init_ws()
545-
self.socket_app.run_forever(ping_interval=10, ping_timeout=2)
547+
self.socket_app.run_forever(ping_interval=10)
546548
except WebSocketException: # socket is already opened
547549
pass
548550
except Exception as e:
@@ -717,6 +719,9 @@ def _send_single_command(self, command: dict) -> None:
717719
"trace": trace,
718720
})
719721

722+
def init_if_needed(self) -> None:
723+
pass
724+
720725
def get_commands(self, name: str, value: str | bool) -> list[dict]:
721726
value = str({True: "on", False: "off", None: "off"}.get(value, value))
722727
if custom := self.config.get_command_by_name(f"{name}_{value}"):
@@ -822,6 +827,7 @@ def __init__(
822827
self.autohumidity_on = False
823828
self.eco_sensor = None
824829
self._get_status(backend_data)
830+
self._inited = False
825831

826832
@property
827833
def config(self) -> CFG.HaierACConfig:
@@ -940,6 +946,14 @@ def _get_status(self, data: dict) -> dict:
940946
self.write_ha_state()
941947
return data
942948

949+
def init_if_needed(self) -> None:
950+
if not self._inited and next(filter(
951+
lambda a: (not a.name.startswith("preset_mode_") and a.current is None),
952+
self.config.attrs
953+
), None) is not None:
954+
self.set_temperature(self.target_temperature)
955+
self._inited = True
956+
943957
def get_commands(self, name: str, value: str | bool) -> list[dict]:
944958
if name != "preset_mode":
945959
return super().get_commands(name, value)

0 commit comments

Comments
 (0)