7979_LOGGER = logging .getLogger (__name__ )
8080
8181
82+ REFRESH_PROPS_DELAY = 0.2
83+ REFRESH_PROPS_RETRY_DELAY = 3
84+ REFRESH_CLOUD_DEVICES_DELAY = 6
85+ REFRESH_CLOUD_DEVICES_RETRY_DELAY = 60
86+ REFRESH_GATEWAY_DEVICES_DELAY = 3
87+
8288@dataclass
8389class MIoTClientSub :
8490 """MIoT client subscription."""
@@ -717,7 +723,7 @@ def request_refresh_prop(
717723 if self ._refresh_props_timer :
718724 return
719725 self ._refresh_props_timer = self ._main_loop .call_later (
720- 0.2 , lambda : self ._main_loop .create_task (
726+ REFRESH_PROPS_DELAY , lambda : self ._main_loop .create_task (
721727 self .__refresh_props_handler ()))
722728
723729 async def get_prop_async (self , did : str , siid : int , piid : int ) -> Any :
@@ -1433,9 +1439,19 @@ async def __update_devices_from_cloud_async(
14331439 async def __refresh_cloud_devices_async (self ) -> None :
14341440 _LOGGER .debug (
14351441 'refresh cloud devices, %s, %s' , self ._uid , self ._cloud_server )
1436- self ._refresh_cloud_devices_timer = None
1437- result = await self ._http .get_devices_async (
1438- home_ids = list (self ._entry_data .get ('home_selected' , {}).keys ()))
1442+ if self ._refresh_cloud_devices_timer :
1443+ self ._refresh_cloud_devices_timer .cancel ()
1444+ self ._refresh_cloud_devices_timer = None
1445+ try :
1446+ result = await self ._http .get_devices_async (
1447+ home_ids = list (self ._entry_data .get ('home_selected' , {}).keys ()))
1448+ except Exception as err : # pylint: disable=broad-exception-caught
1449+ _LOGGER .error ('refresh cloud devices failed, %s' , err )
1450+ self ._refresh_cloud_devices_timer = self ._main_loop .call_later (
1451+ REFRESH_CLOUD_DEVICES_RETRY_DELAY ,
1452+ lambda : self ._main_loop .create_task (
1453+ self .__refresh_cloud_devices_async ()))
1454+ return
14391455 if not result and 'devices' not in result :
14401456 self .__show_client_error_notify (
14411457 message = self ._i18n .translate (
@@ -1481,17 +1497,11 @@ def __request_refresh_cloud_devices(self, immediately=False) -> None:
14811497 _LOGGER .debug (
14821498 'request refresh cloud devices, %s, %s' ,
14831499 self ._uid , self ._cloud_server )
1484- if immediately :
1485- if self ._refresh_cloud_devices_timer :
1486- self ._refresh_cloud_devices_timer .cancel ()
1487- self ._refresh_cloud_devices_timer = self ._main_loop .call_later (
1488- 0 , lambda : self ._main_loop .create_task (
1489- self .__refresh_cloud_devices_async ()))
1490- return
1500+ delay_sec : int = 0 if immediately else REFRESH_CLOUD_DEVICES_DELAY
14911501 if self ._refresh_cloud_devices_timer :
1492- return
1502+ self . _refresh_cloud_devices_timer . cancel ()
14931503 self ._refresh_cloud_devices_timer = self ._main_loop .call_later (
1494- 6 , lambda : self ._main_loop .create_task (
1504+ delay_sec , lambda : self ._main_loop .create_task (
14951505 self .__refresh_cloud_devices_async ()))
14961506
14971507 @final
@@ -1615,7 +1625,8 @@ def __request_refresh_gw_devices_by_group_id(
16151625 return
16161626 self ._mips_local_state_changed_timers [group_id ] = (
16171627 self ._main_loop .call_later (
1618- 3 , lambda : self ._main_loop .create_task (
1628+ REFRESH_GATEWAY_DEVICES_DELAY ,
1629+ lambda : self ._main_loop .create_task (
16191630 self .__refresh_gw_devices_with_group_id_async (
16201631 group_id = group_id ))))
16211632
@@ -1769,7 +1780,7 @@ async def __refresh_props_handler(self) -> None:
17691780 self ._refresh_props_retry_count = 0
17701781 if self ._refresh_props_list :
17711782 self ._refresh_props_timer = self ._main_loop .call_later (
1772- 0.2 , lambda : self ._main_loop .create_task (
1783+ REFRESH_PROPS_DELAY , lambda : self ._main_loop .create_task (
17731784 self .__refresh_props_handler ()))
17741785 else :
17751786 self ._refresh_props_timer = None
@@ -1788,7 +1799,7 @@ async def __refresh_props_handler(self) -> None:
17881799 _LOGGER .info (
17891800 'refresh props failed, retry, %s' , self ._refresh_props_retry_count )
17901801 self ._refresh_props_timer = self ._main_loop .call_later (
1791- 3 , lambda : self ._main_loop .create_task (
1802+ REFRESH_PROPS_RETRY_DELAY , lambda : self ._main_loop .create_task (
17921803 self .__refresh_props_handler ()))
17931804
17941805 @final
0 commit comments