@@ -74,15 +74,15 @@ async def stop(self) -> None:
7474 self ._stick = None
7575 _LOGGER .debug ("queue stopped" )
7676
77- async def submit (self , request : PlugwiseRequest ) -> PlugwiseResponse :
77+ async def submit (self , request : PlugwiseRequest ) -> PlugwiseResponse | None :
7878 """Add request to queue and return the response of node. Raises an error when something fails."""
7979 if request .waiting_for_response :
8080 raise MessageError (
8181 f"Cannot send message { request } which is currently waiting for response."
8282 )
8383
8484 while request .resend and not request .waiting_for_response :
85- _LOGGER .warning ("submit | start (%s) %s" , request .retries_left , request )
85+ _LOGGER .debug ("submit | start (%s) %s" , request .retries_left , request )
8686 if not self ._running or self ._stick is None :
8787 raise StickError (
8888 f"Cannot send message { request .__class__ .__name__ } for"
@@ -91,6 +91,7 @@ async def submit(self, request: PlugwiseRequest) -> PlugwiseResponse:
9191 await self ._add_request_to_queue (request )
9292 try :
9393 response : PlugwiseResponse = await request .response_future ()
94+ return response
9495 except (NodeTimeout , StickTimeout ) as e :
9596 if isinstance (request , NodePingRequest ):
9697 # For ping requests it is expected to receive timeouts, so lower log level
@@ -103,17 +104,19 @@ async def submit(self, request: PlugwiseRequest) -> PlugwiseResponse:
103104 _LOGGER .warning ("%s, cancel request" , e ) # type: ignore[unreachable]
104105 except StickError as exception :
105106 _LOGGER .error (exception )
107+ self ._stick .correct_received_messages (1 )
106108 raise StickError (
107109 f"No response received for { request .__class__ .__name__ } "
108110 + f"to { request .mac_decoded } "
109111 ) from exception
110112 except BaseException as exception :
113+ self ._stick .correct_received_messages (1 )
111114 raise StickError (
112115 f"No response received for { request .__class__ .__name__ } "
113116 + f"to { request .mac_decoded } "
114117 ) from exception
115118
116- return response
119+ return None
117120
118121 async def _add_request_to_queue (self , request : PlugwiseRequest ) -> None :
119122 """Add request to send queue."""
@@ -133,8 +136,13 @@ async def _send_queue_worker(self) -> None:
133136 if request .priority == Priority .CANCEL :
134137 self ._submit_queue .task_done ()
135138 return
139+
140+ while self ._stick .queue_depth > 3 :
141+ _LOGGER .info ("Awaiting plugwise responses %d" , self ._stick .queue_depth )
142+ await sleep (0.125 )
143+
136144 await self ._stick .write_to_stick (request )
137145 self ._submit_queue .task_done ()
138- await sleep ( 0.001 )
146+
139147 _LOGGER .debug ("Sent from queue %s" , request )
140148 _LOGGER .debug ("Send_queue_worker stopped" )
0 commit comments