mirror of
https://github.com/home-assistant/core.git
synced 2025-07-19 11:17:21 +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
|
from .const import DOMAIN, EMPTY_MAC
|
||||||
|
|
||||||
|
type MotionMountConfigEntry = ConfigEntry[motionmount.MotionMount]
|
||||||
|
|
||||||
PLATFORMS: list[Platform] = [
|
PLATFORMS: list[Platform] = [
|
||||||
Platform.BINARY_SENSOR,
|
Platform.BINARY_SENSOR,
|
||||||
Platform.NUMBER,
|
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."""
|
"""Set up Vogel's MotionMount from a config entry."""
|
||||||
|
|
||||||
host = entry.data[CONF_HOST]
|
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
|
# 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)
|
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
|
||||||
|
|
||||||
return True
|
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."""
|
"""Unload a config entry."""
|
||||||
if unload_ok := await hass.config_entries.async_unload_platforms(entry, PLATFORMS):
|
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()
|
await mm.disconnect()
|
||||||
|
|
||||||
return unload_ok
|
return unload_ok
|
||||||
|
@ -6,19 +6,20 @@ from homeassistant.components.binary_sensor import (
|
|||||||
BinarySensorDeviceClass,
|
BinarySensorDeviceClass,
|
||||||
BinarySensorEntity,
|
BinarySensorEntity,
|
||||||
)
|
)
|
||||||
from homeassistant.config_entries import ConfigEntry
|
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||||
|
|
||||||
from .const import DOMAIN
|
from . import MotionMountConfigEntry
|
||||||
from .entity import MotionMountEntity
|
from .entity import MotionMountEntity
|
||||||
|
|
||||||
|
|
||||||
async def async_setup_entry(
|
async def async_setup_entry(
|
||||||
hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
|
hass: HomeAssistant,
|
||||||
|
entry: MotionMountConfigEntry,
|
||||||
|
async_add_entities: AddEntitiesCallback,
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Set up Vogel's MotionMount from a config entry."""
|
"""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)])
|
async_add_entities([MotionMountMovingSensor(mm, entry)])
|
||||||
|
|
||||||
@ -29,7 +30,9 @@ class MotionMountMovingSensor(MotionMountEntity, BinarySensorEntity):
|
|||||||
_attr_device_class = BinarySensorDeviceClass.MOVING
|
_attr_device_class = BinarySensorDeviceClass.MOVING
|
||||||
_attr_translation_key = "motionmount_is_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."""
|
"""Initialize moving binary sensor entity."""
|
||||||
super().__init__(mm, config_entry)
|
super().__init__(mm, config_entry)
|
||||||
self._attr_unique_id = f"{self._base_unique_id}-moving"
|
self._attr_unique_id = f"{self._base_unique_id}-moving"
|
||||||
|
@ -5,12 +5,12 @@ from typing import TYPE_CHECKING
|
|||||||
|
|
||||||
import motionmount
|
import motionmount
|
||||||
|
|
||||||
from homeassistant.config_entries import ConfigEntry
|
|
||||||
from homeassistant.const import ATTR_CONNECTIONS, ATTR_IDENTIFIERS, CONF_PIN
|
from homeassistant.const import ATTR_CONNECTIONS, ATTR_IDENTIFIERS, CONF_PIN
|
||||||
from homeassistant.helpers import device_registry as dr
|
from homeassistant.helpers import device_registry as dr
|
||||||
from homeassistant.helpers.device_registry import DeviceInfo, format_mac
|
from homeassistant.helpers.device_registry import DeviceInfo, format_mac
|
||||||
from homeassistant.helpers.entity import Entity
|
from homeassistant.helpers.entity import Entity
|
||||||
|
|
||||||
|
from . import MotionMountConfigEntry
|
||||||
from .const import DOMAIN, EMPTY_MAC
|
from .const import DOMAIN, EMPTY_MAC
|
||||||
|
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
@ -22,7 +22,9 @@ class MotionMountEntity(Entity):
|
|||||||
_attr_should_poll = False
|
_attr_should_poll = False
|
||||||
_attr_has_entity_name = True
|
_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."""
|
"""Initialize general MotionMount entity."""
|
||||||
self.mm = mm
|
self.mm = mm
|
||||||
self.config_entry = config_entry
|
self.config_entry = config_entry
|
||||||
|
@ -5,21 +5,23 @@ import socket
|
|||||||
import motionmount
|
import motionmount
|
||||||
|
|
||||||
from homeassistant.components.number import NumberEntity
|
from homeassistant.components.number import NumberEntity
|
||||||
from homeassistant.config_entries import ConfigEntry
|
|
||||||
from homeassistant.const import PERCENTAGE
|
from homeassistant.const import PERCENTAGE
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
from homeassistant.exceptions import HomeAssistantError
|
from homeassistant.exceptions import HomeAssistantError
|
||||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||||
|
|
||||||
|
from . import MotionMountConfigEntry
|
||||||
from .const import DOMAIN
|
from .const import DOMAIN
|
||||||
from .entity import MotionMountEntity
|
from .entity import MotionMountEntity
|
||||||
|
|
||||||
|
|
||||||
async def async_setup_entry(
|
async def async_setup_entry(
|
||||||
hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
|
hass: HomeAssistant,
|
||||||
|
entry: MotionMountConfigEntry,
|
||||||
|
async_add_entities: AddEntitiesCallback,
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Set up Vogel's MotionMount from a config entry."""
|
"""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(
|
async_add_entities(
|
||||||
(
|
(
|
||||||
@ -37,7 +39,9 @@ class MotionMountExtension(MotionMountEntity, NumberEntity):
|
|||||||
_attr_native_unit_of_measurement = PERCENTAGE
|
_attr_native_unit_of_measurement = PERCENTAGE
|
||||||
_attr_translation_key = "motionmount_extension"
|
_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."""
|
"""Initialize Extension number."""
|
||||||
super().__init__(mm, config_entry)
|
super().__init__(mm, config_entry)
|
||||||
self._attr_unique_id = f"{self._base_unique_id}-extension"
|
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_native_unit_of_measurement = PERCENTAGE
|
||||||
_attr_translation_key = "motionmount_turn"
|
_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."""
|
"""Initialize Turn number."""
|
||||||
super().__init__(mm, config_entry)
|
super().__init__(mm, config_entry)
|
||||||
self._attr_unique_id = f"{self._base_unique_id}-turn"
|
self._attr_unique_id = f"{self._base_unique_id}-turn"
|
||||||
|
@ -7,11 +7,11 @@ import socket
|
|||||||
import motionmount
|
import motionmount
|
||||||
|
|
||||||
from homeassistant.components.select import SelectEntity
|
from homeassistant.components.select import SelectEntity
|
||||||
from homeassistant.config_entries import ConfigEntry
|
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
from homeassistant.exceptions import HomeAssistantError
|
from homeassistant.exceptions import HomeAssistantError
|
||||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||||
|
|
||||||
|
from . import MotionMountConfigEntry
|
||||||
from .const import DOMAIN, WALL_PRESET_NAME
|
from .const import DOMAIN, WALL_PRESET_NAME
|
||||||
from .entity import MotionMountEntity
|
from .entity import MotionMountEntity
|
||||||
|
|
||||||
@ -20,10 +20,12 @@ SCAN_INTERVAL = timedelta(seconds=60)
|
|||||||
|
|
||||||
|
|
||||||
async def async_setup_entry(
|
async def async_setup_entry(
|
||||||
hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
|
hass: HomeAssistant,
|
||||||
|
entry: MotionMountConfigEntry,
|
||||||
|
async_add_entities: AddEntitiesCallback,
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Set up Vogel's MotionMount from a config entry."""
|
"""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)
|
async_add_entities([MotionMountPresets(mm, entry)], True)
|
||||||
|
|
||||||
@ -37,7 +39,7 @@ class MotionMountPresets(MotionMountEntity, SelectEntity):
|
|||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
mm: motionmount.MotionMount,
|
mm: motionmount.MotionMount,
|
||||||
config_entry: ConfigEntry,
|
config_entry: MotionMountConfigEntry,
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Initialize Preset selector."""
|
"""Initialize Preset selector."""
|
||||||
super().__init__(mm, config_entry)
|
super().__init__(mm, config_entry)
|
||||||
|
@ -3,19 +3,20 @@
|
|||||||
import motionmount
|
import motionmount
|
||||||
|
|
||||||
from homeassistant.components.sensor import SensorDeviceClass, SensorEntity
|
from homeassistant.components.sensor import SensorDeviceClass, SensorEntity
|
||||||
from homeassistant.config_entries import ConfigEntry
|
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||||
|
|
||||||
from .const import DOMAIN
|
from . import MotionMountConfigEntry
|
||||||
from .entity import MotionMountEntity
|
from .entity import MotionMountEntity
|
||||||
|
|
||||||
|
|
||||||
async def async_setup_entry(
|
async def async_setup_entry(
|
||||||
hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
|
hass: HomeAssistant,
|
||||||
|
entry: MotionMountConfigEntry,
|
||||||
|
async_add_entities: AddEntitiesCallback,
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Set up Vogel's MotionMount from a config entry."""
|
"""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),))
|
async_add_entities((MotionMountErrorStatusSensor(mm, entry),))
|
||||||
|
|
||||||
@ -27,7 +28,9 @@ class MotionMountErrorStatusSensor(MotionMountEntity, SensorEntity):
|
|||||||
_attr_options = ["none", "motor", "internal"]
|
_attr_options = ["none", "motor", "internal"]
|
||||||
_attr_translation_key = "motionmount_error_status"
|
_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."""
|
"""Initialize sensor entiry."""
|
||||||
super().__init__(mm, config_entry)
|
super().__init__(mm, config_entry)
|
||||||
self._attr_unique_id = f"{self._base_unique_id}-error-status"
|
self._attr_unique_id = f"{self._base_unique_id}-error-status"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user