@@ -510,6 +510,8 @@ def _on_message(self, ws: WebSocket, message: str) -> None:
510
510
def _on_open (self , ws : WebSocket ) -> None :
511
511
self .socket_status = SocketStatus .INITIALIZED
512
512
_LOGGER .debug ("Websocket opened" )
513
+ for device in self .devices :
514
+ device .init_if_needed ()
513
515
514
516
# noinspection PyUnusedLocal
515
517
def _on_ping (self , ws : WebSocket ) -> None :
@@ -542,7 +544,7 @@ def connect(self) -> None:
542
544
try :
543
545
self .socket_status = SocketStatus .INITIALIZING
544
546
self ._init_ws ()
545
- self .socket_app .run_forever (ping_interval = 10 , ping_timeout = 2 )
547
+ self .socket_app .run_forever (ping_interval = 10 )
546
548
except WebSocketException : # socket is already opened
547
549
pass
548
550
except Exception as e :
@@ -717,6 +719,9 @@ def _send_single_command(self, command: dict) -> None:
717
719
"trace" : trace ,
718
720
})
719
721
722
+ def init_if_needed (self ) -> None :
723
+ pass
724
+
720
725
def get_commands (self , name : str , value : str | bool ) -> list [dict ]:
721
726
value = str ({True : "on" , False : "off" , None : "off" }.get (value , value ))
722
727
if custom := self .config .get_command_by_name (f"{ name } _{ value } " ):
@@ -822,6 +827,7 @@ def __init__(
822
827
self .autohumidity_on = False
823
828
self .eco_sensor = None
824
829
self ._get_status (backend_data )
830
+ self ._inited = False
825
831
826
832
@property
827
833
def config (self ) -> CFG .HaierACConfig :
@@ -940,6 +946,14 @@ def _get_status(self, data: dict) -> dict:
940
946
self .write_ha_state ()
941
947
return data
942
948
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
+
943
957
def get_commands (self , name : str , value : str | bool ) -> list [dict ]:
944
958
if name != "preset_mode" :
945
959
return super ().get_commands (name , value )
0 commit comments