@@ -80,6 +80,7 @@ class HassPlugin(PluginBase):
8080
8181 _result_futures : dict [int , asyncio .Future ]
8282 _silent_results : dict [int , bool ]
83+ _request_context : dict [int , dict [str , Any ]]
8384 startup_conditions : list [StartupWaitCondition ]
8485 maintenance_tasks : list [asyncio .Task ]
8586 """List of tasks that run in the background as part of the plugin operation. These are tracked because they might
@@ -98,6 +99,7 @@ def __init__(self, ad: "AppDaemon", name: str, config: HASSConfig):
9899 self .services = {}
99100 self ._result_futures = {}
100101 self ._silent_results = {}
102+ self ._request_context = {}
101103 self .startup_conditions = []
102104 self .maintenance_tasks = []
103105
@@ -270,6 +272,7 @@ async def ping(self, timeout: float = 1.0) -> dict[str, Any] | None:
270272 @utils .warning_decorator (error_text = "Unexpected error during receive_result" )
271273 async def receive_result (self , resp : dict ):
272274 silent = self ._silent_results .pop (resp ["id" ], False ) or self .AD .config .suppress_log_messages
275+ request_context = self ._request_context .pop (resp ["id" ], {})
273276
274277 if (future := self ._result_futures .pop (resp ["id" ], None )) is not None :
275278 if not future .done ():
@@ -286,9 +289,9 @@ async def receive_result(self, resp: dict):
286289 case True :
287290 self .logger .debug (f"Received successful result from ID { resp ['id' ]} " )
288291 case False :
289- self .logger .warning ("Error with websocket result: %s: %s" , resp ["error" ]["code" ], resp ["error" ]["message" ])
292+ self .logger .warning ("Error with websocket result: %s: %s: request=%s " , resp ["error" ]["code" ], resp ["error" ]["message" ], str ( request_context ) )
290293 case None :
291- self .logger .error (f"Invalid response success value: { resp ['success' ]} " )
294+ self .logger .error (f"Invalid response success value: { resp ['success' ]} for request: { str ( request_context ) } " )
292295
293296 @utils .warning_decorator (error_text = "Unexpected error during receive_event" )
294297 async def receive_event (self , event : dict [str , Any ]) -> None :
@@ -416,6 +419,7 @@ async def websocket_send_json(
416419 future = self .AD .loop .create_future ()
417420 self ._result_futures [self .id ] = future
418421 self ._silent_results [self .id ] = silent
422+ self ._request_context [self .id ] = request
419423
420424 try :
421425 timeout = utils .parse_timedelta (self .config .ws_timeout if timeout is None else timeout )
@@ -596,6 +600,7 @@ async def get_updates(self):
596600 fut .cancel ()
597601 self ._result_futures .clear ()
598602 self ._silent_results .clear ()
603+ self ._request_context .clear ()
599604
600605 # remove callback from getting local events
601606 await self .AD .callbacks .clear_callbacks (self .name )
0 commit comments