55from __future__ import annotations
66
77import datetime as dt
8+ from typing import Any
89
910from plugwise .constants import (
1011 APPLIANCES ,
2324 PlugwiseData ,
2425 ThermoLoc ,
2526)
26- from plugwise .exceptions import PlugwiseError
27+ from plugwise .exceptions import ConnectionFailedError , PlugwiseError
2728from plugwise .helper import SmileComm
2829from plugwise .legacy .data import SmileLegacyData
2930
@@ -180,7 +181,7 @@ async def set_preset(self, _: str, preset: str) -> None:
180181 rule = self ._domain_objects .find (locator )
181182 data = f'<rules><rule id="{ rule .attrib ["id" ]} "><active>true</active></rule></rules>'
182183
183- await self ._request (RULES , method = "put" , data = data )
184+ await self .call_request (RULES , method = "put" , data = data )
184185
185186 async def set_regulation_mode (self , mode : str ) -> None :
186187 """Set-function placeholder for legacy devices."""
@@ -226,7 +227,7 @@ async def set_schedule_state(self, _: str, state: str | None, name: str | None)
226227 f' id="{ template_id } " /><active>{ new_state } </active></rule></rules>'
227228 )
228229
229- await self ._request (uri , method = "put" , data = data )
230+ await self .call_request (uri , method = "put" , data = data )
230231
231232 async def set_switch_state (
232233 self , appl_id : str , members : list [str ] | None , model : str , state : str
@@ -254,7 +255,7 @@ async def set_switch_state(
254255 if self ._appliances .find (locator ).text == "true" :
255256 raise PlugwiseError ("Plugwise: the locked Relay was not switched." )
256257
257- await self ._request (uri , method = "put" , data = data )
258+ await self .call_request (uri , method = "put" , data = data )
258259
259260 async def _set_groupswitch_member_state (
260261 self , members : list [str ], state : str , switch : Munch
@@ -267,7 +268,7 @@ async def _set_groupswitch_member_state(
267268 uri = f"{ APPLIANCES } ;id={ member } /{ switch .func_type } "
268269 data = f"<{ switch .func_type } ><{ switch .func } >{ state } </{ switch .func } ></{ switch .func_type } >"
269270
270- await self ._request (uri , method = "put" , data = data )
271+ await self .call_request (uri , method = "put" , data = data )
271272
272273 async def set_temperature (self , _ : str , items : dict [str , float ]) -> None :
273274 """Set the given Temperature on the relevant Thermostat."""
@@ -287,4 +288,13 @@ async def set_temperature(self, _: str, items: dict[str, float]) -> None:
287288 f"{ temperature } </setpoint></thermostat_functionality>"
288289 )
289290
290- await self ._request (uri , method = "put" , data = data )
291+ await self .call_request (uri , method = "put" , data = data )
292+
293+ async def call_request (self , uri : str , ** kwargs : Any ) -> None :
294+ """ConnectionFailedError wrapper for calling _request()."""
295+ method : str = kwargs ["method" ]
296+ data : str | None = kwargs .get ("data" )
297+ try :
298+ await self ._request (uri , method = method , data = data )
299+ except ConnectionFailedError as exc :
300+ raise ConnectionFailedError from exc
0 commit comments