Skip to content

Commit e55b9d2

Browse files
committed
Switch to InvalidByteValueError
1 parent 22c6b02 commit e55b9d2

File tree

1 file changed

+11
-8
lines changed

1 file changed

+11
-8
lines changed

custom_components/cometblue/coordinator.py

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@
66
from typing import Any
77

88
from bleak import BleakError
9-
from cometblue import AsyncCometBlue
9+
from cometblue import AsyncCometBlue, InvalidByteValueError
1010

1111
from homeassistant.components import bluetooth
1212
from homeassistant.core import HomeAssistant
13-
from homeassistant.exceptions import ConfigEntryNotReady, HomeAssistantError
13+
from homeassistant.exceptions import ConfigEntryNotReady, HomeAssistantError, ServiceValidationError
1414
from homeassistant.helpers.device_registry import DeviceInfo
1515
from homeassistant.helpers.update_coordinator import (
1616
CoordinatorEntity,
@@ -65,7 +65,7 @@ async def send_command(
6565
)
6666
return await getattr(self.device, function)(**payload)
6767
except ValueError as err:
68-
raise HomeAssistantError(
68+
raise ServiceValidationError(
6969
f"Invalid payload '{payload}' for '{caller_entity_id}': {err}"
7070
) from err
7171
except BleakError as err:
@@ -94,11 +94,14 @@ async def _async_update_data(self) -> dict[str, bytes]:
9494
in CONF_ALL_TEMPERATURES
9595
},
9696
}
97-
# Increase failure counter if not all values were retrieved
98-
if CONF_ALL_TEMPERATURES == set(retrieved_temperatures):
99-
self.failed_update_count = 0
100-
else:
101-
self.failed_update_count = 1
97+
# Reset failed update count if all values were retrieved correctly
98+
self.failed_update_count = 0
99+
except InvalidByteValueError as ex:
100+
self.failed_update_count += 1
101+
# allow invalid bytes once, but fail on the second invalid byte
102+
if self.failed_update_count < 1:
103+
return self.data
104+
raise UpdateFailed(f"Invalid byte value: {ex}") from ex
102105
except Exception as ex:
103106
self.failed_update_count += 1
104107
raise UpdateFailed(f"({type(ex).__name__}) {ex}") from ex

0 commit comments

Comments
 (0)