|
6 | 6 | from typing import Any
|
7 | 7 |
|
8 | 8 | from aiohttp import ClientConnectionError
|
9 |
| -from aiosomecomfort import SomeComfortError, UnauthorizedError, UnexpectedResponse |
| 9 | +from aiosomecomfort import ( |
| 10 | + AuthError, |
| 11 | + SomeComfortError, |
| 12 | + UnauthorizedError, |
| 13 | + UnexpectedResponse, |
| 14 | +) |
10 | 15 | from aiosomecomfort.device import Device as SomeComfortDevice
|
11 | 16 |
|
12 | 17 | from homeassistant.components.climate import (
|
@@ -492,31 +497,38 @@ async def async_turn_aux_heat_off(self) -> None:
|
492 | 497 |
|
493 | 498 | async def async_update(self) -> None:
|
494 | 499 | """Get the latest state from the service."""
|
495 |
| - try: |
496 |
| - await self._device.refresh() |
497 |
| - self._attr_available = True |
498 |
| - self._retry = 0 |
499 | 500 |
|
500 |
| - except UnauthorizedError: |
| 501 | + async def _login() -> None: |
501 | 502 | try:
|
502 | 503 | await self._data.client.login()
|
503 | 504 | await self._device.refresh()
|
504 |
| - self._attr_available = True |
505 |
| - self._retry = 0 |
506 | 505 |
|
507 | 506 | except (
|
508 |
| - SomeComfortError, |
| 507 | + AuthError, |
509 | 508 | ClientConnectionError,
|
510 | 509 | asyncio.TimeoutError,
|
511 | 510 | ):
|
512 | 511 | self._retry += 1
|
513 |
| - if self._retry > RETRY: |
514 |
| - self._attr_available = False |
| 512 | + self._attr_available = self._retry <= RETRY |
| 513 | + return |
| 514 | + |
| 515 | + self._attr_available = True |
| 516 | + self._retry = 0 |
| 517 | + |
| 518 | + try: |
| 519 | + await self._device.refresh() |
| 520 | + |
| 521 | + except UnauthorizedError: |
| 522 | + await _login() |
| 523 | + return |
515 | 524 |
|
516 | 525 | except (ClientConnectionError, asyncio.TimeoutError):
|
517 | 526 | self._retry += 1
|
518 |
| - if self._retry > RETRY: |
519 |
| - self._attr_available = False |
| 527 | + self._attr_available = self._retry <= RETRY |
| 528 | + return |
520 | 529 |
|
521 | 530 | except UnexpectedResponse:
|
522 |
| - pass |
| 531 | + return |
| 532 | + |
| 533 | + self._attr_available = True |
| 534 | + self._retry = 0 |
0 commit comments