@@ -36,8 +36,11 @@ def on_data_received(self) -> None: ...
3636
3737
3838class _NoOpStatusCallback :
39- def on_explicit_status (self , online : bool ) -> None : pass
40- def on_data_received (self ) -> None : pass
39+ def on_explicit_status (self , online : bool ) -> None :
40+ pass
41+
42+ def on_data_received (self ) -> None :
43+ pass
4144
4245
4346class EcoflowDataHolder :
@@ -66,10 +69,12 @@ def __init__(
6669
6770 self .set_status = BoundFifoList [dict [str , Any ]]()
6871 self .set_status_time = dt .utcnow ().replace (year = 2000 , month = 1 , day = 1 , hour = 0 , minute = 0 , second = 0 )
72+ self .status_change_time = dt .utcnow ().replace (year = 2000 , month = 1 , day = 1 , hour = 0 , minute = 0 , second = 0 )
6973
7074 def last_received_time (self ):
7175 return max (
7276 self .set_status_time ,
77+ self .status_change_time ,
7378 self .set_params_time ,
7479 # 1. get_reply can receive '"message": "The device is not online"'
7580 # 2. if device is online - get_reply message will update params, so param_time will be updated as well
@@ -120,6 +125,7 @@ def __update_params(self, params: dict[str, Any]):
120125 def __accept_prepared_data (self , data : PreparedData , raw_data_acceptor : Callable [[dict [str , Any ]], None ]):
121126 if data .online is not None :
122127 self ._status_callback .on_explicit_status (data .online )
128+ self .status_change_time = dt .utcnow ()
123129
124130 if data .params is not None :
125131 self .__update_params (data .params )
0 commit comments