Address Starlink code quality and add update sensor (#86066)

* Use dt.now

* Bring back update binary sensor

* Don't patch coordinator

* Add silver quality scale
This commit is contained in:
Jack Boswell 2023-01-17 21:10:40 +13:00 committed by GitHub
parent 4aba3fdad6
commit ec1b4d5651
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 14 additions and 13 deletions

View File

@ -58,6 +58,12 @@ class StarlinkBinarySensorEntity(StarlinkEntity, BinarySensorEntity):
BINARY_SENSORS = [ BINARY_SENSORS = [
StarlinkBinarySensorEntityDescription(
key="update",
name="Update available",
device_class=BinarySensorDeviceClass.UPDATE,
value_fn=lambda data: data.alert["alert_install_pending"],
),
StarlinkBinarySensorEntityDescription( StarlinkBinarySensorEntityDescription(
key="roaming", key="roaming",
name="Roaming mode", name="Roaming mode",

View File

@ -5,5 +5,6 @@
"documentation": "https://www.home-assistant.io/integrations/starlink", "documentation": "https://www.home-assistant.io/integrations/starlink",
"requirements": ["starlink-grpc-core==1.1.1"], "requirements": ["starlink-grpc-core==1.1.1"],
"codeowners": ["@boswelja"], "codeowners": ["@boswelja"],
"iot_class": "local_polling" "iot_class": "local_polling",
"quality_scale": "silver"
} }

View File

@ -17,6 +17,7 @@ from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity import EntityCategory from homeassistant.helpers.entity import EntityCategory
from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.entity_platform import AddEntitiesCallback
from homeassistant.helpers.typing import StateType from homeassistant.helpers.typing import StateType
from homeassistant.util.dt import now
from .const import DOMAIN from .const import DOMAIN
from .coordinator import StarlinkData from .coordinator import StarlinkData
@ -108,7 +109,6 @@ SENSORS: tuple[StarlinkSensorEntityDescription, ...] = (
icon="mdi:clock", icon="mdi:clock",
device_class=SensorDeviceClass.TIMESTAMP, device_class=SensorDeviceClass.TIMESTAMP,
entity_category=EntityCategory.DIAGNOSTIC, entity_category=EntityCategory.DIAGNOSTIC,
value_fn=lambda data: datetime.now().astimezone() value_fn=lambda data: now() - timedelta(seconds=data.status["uptime"]),
- timedelta(seconds=data.status["uptime"]),
), ),
) )

View File

@ -3,23 +3,17 @@ from unittest.mock import patch
from starlink_grpc import StatusDict from starlink_grpc import StatusDict
from homeassistant.components.starlink.coordinator import (
StarlinkData,
StarlinkUpdateCoordinator,
)
SETUP_ENTRY_PATCHER = patch( SETUP_ENTRY_PATCHER = patch(
"homeassistant.components.starlink.async_setup_entry", return_value=True "homeassistant.components.starlink.async_setup_entry", return_value=True
) )
COORDINATOR_SUCCESS_PATCHER = patch.object( COORDINATOR_SUCCESS_PATCHER = patch(
StarlinkUpdateCoordinator, "homeassistant.components.starlink.coordinator.status_data",
"_async_update_data", return_value=[
return_value=StarlinkData(
StatusDict(id="1", software_version="1", hardware_version="1"), StatusDict(id="1", software_version="1", hardware_version="1"),
{}, {},
{}, {},
), ],
) )
DEVICE_FOUND_PATCHER = patch( DEVICE_FOUND_PATCHER = patch(