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/garages_amsterdam/__init__.py
homeassistant/components/garages_amsterdam/binary_sensor.py
homeassistant/components/garages_amsterdam/entity.py
homeassistant/components/garages_amsterdam/sensor.py
homeassistant/components/gc100/*
homeassistant/components/geniushub/*

View file

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