Add base entity to Garages Amsterdam (#98172)

This commit is contained in:
Joost Lekkerkerker 2023-08-11 13:55:38 +02:00 committed by GitHub
parent 3499ba3a9e
commit e6ba6c295c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 36 additions and 25 deletions

View File

@ -421,6 +421,7 @@ omit =
homeassistant/components/garadget/cover.py homeassistant/components/garadget/cover.py
homeassistant/components/garages_amsterdam/__init__.py homeassistant/components/garages_amsterdam/__init__.py
homeassistant/components/garages_amsterdam/binary_sensor.py homeassistant/components/garages_amsterdam/binary_sensor.py
homeassistant/components/garages_amsterdam/entity.py
homeassistant/components/garages_amsterdam/sensor.py homeassistant/components/garages_amsterdam/sensor.py
homeassistant/components/gc100/* homeassistant/components/gc100/*
homeassistant/components/geniushub/* homeassistant/components/geniushub/*

View File

@ -8,13 +8,10 @@ from homeassistant.components.binary_sensor import (
from homeassistant.config_entries import ConfigEntry from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.entity_platform import AddEntitiesCallback
from homeassistant.helpers.update_coordinator import ( from homeassistant.helpers.update_coordinator import DataUpdateCoordinator
CoordinatorEntity,
DataUpdateCoordinator,
)
from . import get_coordinator from . import get_coordinator
from .const import ATTRIBUTION from .entity import GaragesAmsterdamEntity
BINARY_SENSORS = { BINARY_SENSORS = {
"state", "state",
@ -30,27 +27,23 @@ async def async_setup_entry(
coordinator = await get_coordinator(hass) coordinator = await get_coordinator(hass)
async_add_entities( async_add_entities(
GaragesamsterdamBinarySensor( GaragesAmsterdamBinarySensor(
coordinator, config_entry.data["garage_name"], info_type coordinator, config_entry.data["garage_name"], info_type
) )
for info_type in BINARY_SENSORS for info_type in BINARY_SENSORS
) )
class GaragesamsterdamBinarySensor(CoordinatorEntity, BinarySensorEntity): class GaragesAmsterdamBinarySensor(GaragesAmsterdamEntity, BinarySensorEntity):
"""Binary Sensor representing garages amsterdam data.""" """Binary Sensor representing garages amsterdam data."""
_attr_attribution = ATTRIBUTION
_attr_device_class = BinarySensorDeviceClass.PROBLEM _attr_device_class = BinarySensorDeviceClass.PROBLEM
def __init__( def __init__(
self, coordinator: DataUpdateCoordinator, garage_name: str, info_type: str self, coordinator: DataUpdateCoordinator, garage_name: str, info_type: str
) -> None: ) -> None:
"""Initialize garages amsterdam binary sensor.""" """Initialize garages amsterdam binary sensor."""
super().__init__(coordinator) super().__init__(coordinator, garage_name, info_type)
self._attr_unique_id = f"{garage_name}-{info_type}"
self._garage_name = garage_name
self._info_type = info_type
self._attr_name = garage_name self._attr_name = garage_name
@property @property

View File

@ -0,0 +1,24 @@
"""Generic entity for Garages Amsterdam."""
from __future__ import annotations
from homeassistant.helpers.update_coordinator import (
CoordinatorEntity,
DataUpdateCoordinator,
)
from .const import ATTRIBUTION
class GaragesAmsterdamEntity(CoordinatorEntity):
"""Base Entity for garages amsterdam data."""
_attr_attribution = ATTRIBUTION
def __init__(
self, coordinator: DataUpdateCoordinator, garage_name: str, info_type: str
) -> None:
"""Initialize garages amsterdam entity."""
super().__init__(coordinator)
self._attr_unique_id = f"{garage_name}-{info_type}"
self._garage_name = garage_name
self._info_type = info_type

View File

@ -5,13 +5,10 @@ from homeassistant.components.sensor import SensorEntity
from homeassistant.config_entries import ConfigEntry from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.entity_platform import AddEntitiesCallback
from homeassistant.helpers.update_coordinator import ( from homeassistant.helpers.update_coordinator import DataUpdateCoordinator
CoordinatorEntity,
DataUpdateCoordinator,
)
from . import get_coordinator from . import get_coordinator
from .const import ATTRIBUTION from .entity import GaragesAmsterdamEntity
SENSORS = { SENSORS = {
"free_space_short": "mdi:car", "free_space_short": "mdi:car",
@ -29,12 +26,12 @@ async def async_setup_entry(
"""Defer sensor setup to the shared sensor module.""" """Defer sensor setup to the shared sensor module."""
coordinator = await get_coordinator(hass) coordinator = await get_coordinator(hass)
entities: list[GaragesamsterdamSensor] = [] entities: list[GaragesAmsterdamSensor] = []
for info_type in SENSORS: for info_type in SENSORS:
if getattr(coordinator.data[config_entry.data["garage_name"]], info_type) != "": if getattr(coordinator.data[config_entry.data["garage_name"]], info_type) != "":
entities.append( entities.append(
GaragesamsterdamSensor( GaragesAmsterdamSensor(
coordinator, config_entry.data["garage_name"], info_type coordinator, config_entry.data["garage_name"], info_type
) )
) )
@ -42,20 +39,16 @@ async def async_setup_entry(
async_add_entities(entities) async_add_entities(entities)
class GaragesamsterdamSensor(CoordinatorEntity, SensorEntity): class GaragesAmsterdamSensor(GaragesAmsterdamEntity, SensorEntity):
"""Sensor representing garages amsterdam data.""" """Sensor representing garages amsterdam data."""
_attr_attribution = ATTRIBUTION
_attr_native_unit_of_measurement = "cars" _attr_native_unit_of_measurement = "cars"
def __init__( def __init__(
self, coordinator: DataUpdateCoordinator, garage_name: str, info_type: str self, coordinator: DataUpdateCoordinator, garage_name: str, info_type: str
) -> None: ) -> None:
"""Initialize garages amsterdam sensor.""" """Initialize garages amsterdam sensor."""
super().__init__(coordinator) super().__init__(coordinator, garage_name, info_type)
self._attr_unique_id = f"{garage_name}-{info_type}"
self._garage_name = garage_name
self._info_type = info_type
self._attr_name = f"{garage_name} - {info_type}".replace("_", " ") self._attr_name = f"{garage_name} - {info_type}".replace("_", " ")
self._attr_icon = SENSORS[info_type] self._attr_icon = SENSORS[info_type]