Add base entity to Garages Amsterdam (#98172)
This commit is contained in:
parent
3499ba3a9e
commit
e6ba6c295c
4 changed files with 36 additions and 25 deletions
|
@ -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/*
|
||||
|
|
|
@ -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
|
||||
|
|
24
homeassistant/components/garages_amsterdam/entity.py
Normal file
24
homeassistant/components/garages_amsterdam/entity.py
Normal 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
|
|
@ -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]
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue