Доработка _call_service

This commit is contained in:
2026-07-29 19:02:03 +03:00
parent 0599933a51
commit 1f6cdcae01
+12 -25
View File
@@ -1,25 +1,12 @@
def _request(self, method: str, path: str, **kwargs) -> requests.Response: def _call_service(self, domain: str, service: str, data: Dict[str, Any]) -> bool:
"""HTTP-запрос с ретраями и логированием.""" """Вызов сервиса HA. Возвращает True если выполнено, False если dry-run."""
url = self.valves.ha_url + path logger.info(
last_exc: Optional[Exception] = None "%s -> %s.%s %s",
# Прокидываем verify_ssl если не передан явно "[DRY] " if self.valves.dry_run else "",
kwargs.setdefault("verify", self.valves.verify_ssl) domain, service, data,
for attempt in range(1, self.valves.max_retries + 2): )
try: if self.valves.dry_run:
resp = requests.request( return False
method, url, # verify_ssl уже передаётся в _request через kwargs
headers=self._headers(), self._request("POST", "/api/services/" + domain + "/" + service, json=data)
timeout=self.valves.request_timeout, return True
**kwargs,
)
resp.raise_for_status()
return resp
except requests.RequestException as e:
last_exc = e
logger.warning(
"HA %s %s failed (attempt %d): %s",
method, path, attempt, e,
)
if attempt <= self.valves.max_retries:
time.sleep(0.5 * attempt)
raise RuntimeError("Home Assistant недоступен: " + str(last_exc))