diff --git a/.coveragerc b/.coveragerc index 6aa0c8cce06..347e5527ee4 100644 --- a/.coveragerc +++ b/.coveragerc @@ -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/* diff --git a/homeassistant/components/garages_amsterdam/binary_sensor.py b/homeassistant/components/garages_amsterdam/binary_sensor.py index 5b444146624..41237fc7423 100644 --- a/homeassistant/components/garages_amsterdam/binary_sensor.py +++ b/homeassistant/components/garages_amsterdam/binary_sensor.py @@ -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 diff --git a/homeassistant/components/garages_amsterdam/entity.py b/homeassistant/components/garages_amsterdam/entity.py new file mode 100644 index 00000000000..894506f7da9 --- /dev/null +++ b/homeassistant/components/garages_amsterdam/entity.py @@ -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 diff --git a/homeassistant/components/garages_amsterdam/sensor.py b/homeassistant/components/garages_amsterdam/sensor.py index 252f010dfdb..b4acb36691e 100644 --- a/homeassistant/components/garages_amsterdam/sensor.py +++ b/homeassistant/components/garages_amsterdam/sensor.py @@ -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]