mirror of
https://github.com/home-assistant/core.git
synced 2025-07-18 18:57:06 +00:00
Use runtime_data in motionmount integration (#136999)
This commit is contained in:
parent
66f048f49f
commit
b702d88ab7
@ -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
|
||||
|
@ -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"
|
||||
|
@ -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
|
||||
|
@ -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"
|
||||
|
@ -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)
|
||||
|
@ -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"
|
||||
|
Loading…
x
Reference in New Issue
Block a user