Skip to content

Commit ead0c03

Browse files
committed
Implement call_request for legacy set-functions
1 parent 0e06a93 commit ead0c03

File tree

1 file changed

+16
-6
lines changed

1 file changed

+16
-6
lines changed

plugwise/legacy/smile.py

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from __future__ import annotations
66

77
import datetime as dt
8+
from typing import Any
89

910
from plugwise.constants import (
1011
APPLIANCES,
@@ -23,7 +24,7 @@
2324
PlugwiseData,
2425
ThermoLoc,
2526
)
26-
from plugwise.exceptions import PlugwiseError
27+
from plugwise.exceptions import ConnectionFailedError, PlugwiseError
2728
from plugwise.helper import SmileComm
2829
from 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

Comments
 (0)