Fix surepetcare sensor error (#143286)

* fix: changed boolean to map to 'online' attribute.

* fix: added catch in case of future changes to prevent complete sensor failure.

* fix: surepetcare - added additional catches in case rssi values aren't included in online status.

* fix: remove hub_rssi when not defined.

* fix: proper code spacing

* fix: use .get for clarity instead of try.

* fix: now written in Python.

* fix: renamed variables for clarity.

* Update homeassistant/components/surepetcare/binary_sensor.py

* fix: update surepetcare test __init__.py mock_feeder with online status.

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
This commit is contained in:
Dan 2025-04-25 18:29:29 +01:00 committed by GitHub
parent a783b6a0ab
commit 94b0800989
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 18 additions and 10 deletions

View File

@ -133,12 +133,15 @@ class DeviceConnectivity(SurePetcareBinarySensor):
@callback
def _update_attr(self, surepy_entity: SurepyEntity) -> None:
state = surepy_entity.raw_data()["status"]
self._attr_is_on = bool(state)
if state:
self._attr_extra_state_attributes = {
"device_rssi": f"{state['signal']['device_rssi']:.2f}",
"hub_rssi": f"{state['signal']['hub_rssi']:.2f}",
}
else:
self._attr_extra_state_attributes = {}
state = surepy_entity.raw_data().get("status", {})
online = bool(state.get("online", False))
self._attr_is_on = online
self._attr_extra_state_attributes = {}
if online:
device_rssi = state.get("signal", {}).get("device_rssi")
self._attr_extra_state_attributes["device_rssi"] = (
f"{device_rssi:.2f}" if device_rssi else "Unknown"
)
hub_rssi = state.get("signal", {}).get("hub_rssi")
if hub_rssi is not None:
self._attr_extra_state_attributes["hub_rssi"] = f"{hub_rssi:.2f}"

View File

@ -8,7 +8,11 @@ MOCK_HUB = {
"product_id": 1,
"household_id": HOUSEHOLD_ID,
"name": "Hub",
"status": {"online": True, "led_mode": 0, "pairing_mode": 0},
"status": {
"led_mode": 0,
"pairing_mode": 0,
"online": True,
},
}
MOCK_FEEDER = {
@ -22,6 +26,7 @@ MOCK_FEEDER = {
"locking": {"mode": 0},
"learn_mode": 0,
"signal": {"device_rssi": 60, "hub_rssi": 65},
"online": True,
},
}