mirror of https://github.com/home-assistant/core
36 lines
1.2 KiB
Python
36 lines
1.2 KiB
Python
"""DoorBird integration utils."""
|
|
|
|
from typing import Any, cast
|
|
|
|
from homeassistant.core import HomeAssistant, callback
|
|
|
|
from .const import DOMAIN
|
|
from .device import ConfiguredDoorBird
|
|
from .models import DoorBirdConfigEntry
|
|
|
|
|
|
def get_mac_address_from_door_station_info(door_station_info: dict[str, Any]) -> str:
|
|
"""Get the mac address depending on the device type."""
|
|
return door_station_info.get("PRIMARY_MAC_ADDR", door_station_info["WIFI_MAC_ADDR"]) # type: ignore[no-any-return]
|
|
|
|
|
|
def get_door_station_by_token(
|
|
hass: HomeAssistant, token: str
|
|
) -> ConfiguredDoorBird | None:
|
|
"""Get door station by token."""
|
|
for entry in async_get_entries(hass):
|
|
door_station = entry.runtime_data.door_station
|
|
if door_station.token == token:
|
|
return door_station
|
|
return None
|
|
|
|
|
|
@callback
|
|
def async_get_entries(hass: HomeAssistant) -> list[DoorBirdConfigEntry]:
|
|
"""Get all the doorbird entries."""
|
|
entries = hass.config_entries.async_entries(
|
|
DOMAIN, include_ignore=True, include_disabled=True
|
|
)
|
|
active_entries = [entry for entry in entries if hasattr(entry, "runtime_data")]
|
|
return cast(list[DoorBirdConfigEntry], active_entries)
|