Use runtime_data in motionmount integration (#136999)

This commit is contained in:
RJPoelstra 2025-01-31 13:17:22 +01:00 committed by GitHub
parent 66f048f49f
commit b702d88ab7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 45 additions and 25 deletions

View File

@ -14,6 +14,8 @@ from homeassistant.helpers.device_registry import format_mac
from .const import DOMAIN, EMPTY_MAC
type MotionMountConfigEntry = ConfigEntry[motionmount.MotionMount]
PLATFORMS: list[Platform] = [
Platform.BINARY_SENSOR,
Platform.NUMBER,
@ -22,7 +24,7 @@ PLATFORMS: list[Platform] = [
]
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
async def async_setup_entry(hass: HomeAssistant, entry: MotionMountConfigEntry) -> bool:
"""Set up Vogel's MotionMount from a config entry."""
host = entry.data[CONF_HOST]
@ -65,17 +67,19 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
)
# Store an API object for your platforms to access
hass.data.setdefault(DOMAIN, {})[entry.entry_id] = mm
entry.runtime_data = mm
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
return True
async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
async def async_unload_entry(
hass: HomeAssistant, entry: MotionMountConfigEntry
) -> bool:
"""Unload a config entry."""
if unload_ok := await hass.config_entries.async_unload_platforms(entry, PLATFORMS):
mm: motionmount.MotionMount = hass.data[DOMAIN].pop(entry.entry_id)
mm = entry.runtime_data
await mm.disconnect()
return unload_ok

View File

@ -6,19 +6,20 @@ from homeassistant.components.binary_sensor import (
BinarySensorDeviceClass,
BinarySensorEntity,
)
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from .const import DOMAIN
from . import MotionMountConfigEntry
from .entity import MotionMountEntity
async def async_setup_entry(
hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
hass: HomeAssistant,
entry: MotionMountConfigEntry,
async_add_entities: AddEntitiesCallback,
) -> None:
"""Set up Vogel's MotionMount from a config entry."""
mm = hass.data[DOMAIN][entry.entry_id]
mm = entry.runtime_data
async_add_entities([MotionMountMovingSensor(mm, entry)])
@ -29,7 +30,9 @@ class MotionMountMovingSensor(MotionMountEntity, BinarySensorEntity):
_attr_device_class = BinarySensorDeviceClass.MOVING
_attr_translation_key = "motionmount_is_moving"
def __init__(self, mm: motionmount.MotionMount, config_entry: ConfigEntry) -> None:
def __init__(
self, mm: motionmount.MotionMount, config_entry: MotionMountConfigEntry
) -> None:
"""Initialize moving binary sensor entity."""
super().__init__(mm, config_entry)
self._attr_unique_id = f"{self._base_unique_id}-moving"

View File

@ -5,12 +5,12 @@ from typing import TYPE_CHECKING
import motionmount
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import ATTR_CONNECTIONS, ATTR_IDENTIFIERS, CONF_PIN
from homeassistant.helpers import device_registry as dr
from homeassistant.helpers.device_registry import DeviceInfo, format_mac
from homeassistant.helpers.entity import Entity
from . import MotionMountConfigEntry
from .const import DOMAIN, EMPTY_MAC
_LOGGER = logging.getLogger(__name__)
@ -22,7 +22,9 @@ class MotionMountEntity(Entity):
_attr_should_poll = False
_attr_has_entity_name = True
def __init__(self, mm: motionmount.MotionMount, config_entry: ConfigEntry) -> None:
def __init__(
self, mm: motionmount.MotionMount, config_entry: MotionMountConfigEntry
) -> None:
"""Initialize general MotionMount entity."""
self.mm = mm
self.config_entry = config_entry

View File

@ -5,21 +5,23 @@ import socket
import motionmount
from homeassistant.components.number import NumberEntity
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import PERCENTAGE
from homeassistant.core import HomeAssistant
from homeassistant.exceptions import HomeAssistantError
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from . import MotionMountConfigEntry
from .const import DOMAIN
from .entity import MotionMountEntity
async def async_setup_entry(
hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
hass: HomeAssistant,
entry: MotionMountConfigEntry,
async_add_entities: AddEntitiesCallback,
) -> None:
"""Set up Vogel's MotionMount from a config entry."""
mm: motionmount.MotionMount = hass.data[DOMAIN][entry.entry_id]
mm = entry.runtime_data
async_add_entities(
(
@ -37,7 +39,9 @@ class MotionMountExtension(MotionMountEntity, NumberEntity):
_attr_native_unit_of_measurement = PERCENTAGE
_attr_translation_key = "motionmount_extension"
def __init__(self, mm: motionmount.MotionMount, config_entry: ConfigEntry) -> None:
def __init__(
self, mm: motionmount.MotionMount, config_entry: MotionMountConfigEntry
) -> None:
"""Initialize Extension number."""
super().__init__(mm, config_entry)
self._attr_unique_id = f"{self._base_unique_id}-extension"
@ -66,7 +70,9 @@ class MotionMountTurn(MotionMountEntity, NumberEntity):
_attr_native_unit_of_measurement = PERCENTAGE
_attr_translation_key = "motionmount_turn"
def __init__(self, mm: motionmount.MotionMount, config_entry: ConfigEntry) -> None:
def __init__(
self, mm: motionmount.MotionMount, config_entry: MotionMountConfigEntry
) -> None:
"""Initialize Turn number."""
super().__init__(mm, config_entry)
self._attr_unique_id = f"{self._base_unique_id}-turn"

View File

@ -7,11 +7,11 @@ import socket
import motionmount
from homeassistant.components.select import SelectEntity
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant
from homeassistant.exceptions import HomeAssistantError
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from . import MotionMountConfigEntry
from .const import DOMAIN, WALL_PRESET_NAME
from .entity import MotionMountEntity
@ -20,10 +20,12 @@ SCAN_INTERVAL = timedelta(seconds=60)
async def async_setup_entry(
hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
hass: HomeAssistant,
entry: MotionMountConfigEntry,
async_add_entities: AddEntitiesCallback,
) -> None:
"""Set up Vogel's MotionMount from a config entry."""
mm = hass.data[DOMAIN][entry.entry_id]
mm = entry.runtime_data
async_add_entities([MotionMountPresets(mm, entry)], True)
@ -37,7 +39,7 @@ class MotionMountPresets(MotionMountEntity, SelectEntity):
def __init__(
self,
mm: motionmount.MotionMount,
config_entry: ConfigEntry,
config_entry: MotionMountConfigEntry,
) -> None:
"""Initialize Preset selector."""
super().__init__(mm, config_entry)

View File

@ -3,19 +3,20 @@
import motionmount
from homeassistant.components.sensor import SensorDeviceClass, SensorEntity
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from .const import DOMAIN
from . import MotionMountConfigEntry
from .entity import MotionMountEntity
async def async_setup_entry(
hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
hass: HomeAssistant,
entry: MotionMountConfigEntry,
async_add_entities: AddEntitiesCallback,
) -> None:
"""Set up Vogel's MotionMount from a config entry."""
mm = hass.data[DOMAIN][entry.entry_id]
mm = entry.runtime_data
async_add_entities((MotionMountErrorStatusSensor(mm, entry),))
@ -27,7 +28,9 @@ class MotionMountErrorStatusSensor(MotionMountEntity, SensorEntity):
_attr_options = ["none", "motor", "internal"]
_attr_translation_key = "motionmount_error_status"
def __init__(self, mm: motionmount.MotionMount, config_entry: ConfigEntry) -> None:
def __init__(
self, mm: motionmount.MotionMount, config_entry: MotionMountConfigEntry
) -> None:
"""Initialize sensor entiry."""
super().__init__(mm, config_entry)
self._attr_unique_id = f"{self._base_unique_id}-error-status"