1 """Utility functions for the Reolink component."""
3 from __future__
import annotations
5 from dataclasses
import dataclass
7 from homeassistant
import config_entries
12 from .const
import DOMAIN
13 from .host
import ReolinkHost
20 """Data for the Reolink integration."""
23 device_coordinator: DataUpdateCoordinator[
None]
24 firmware_coordinator: DataUpdateCoordinator[
None]
28 """Check if an existing entry has a proper connection."""
30 hasattr(config_entry,
"runtime_data")
31 and config_entry.state == config_entries.ConfigEntryState.LOADED
32 and config_entry.runtime_data.device_coordinator.last_update_success
37 device: dr.DeviceEntry, host: ReolinkHost
38 ) -> tuple[list[str], int |
None, bool]:
39 """Get the channel and the split device_uid from a reolink DeviceEntry."""
41 dev_id[1].split(
"_")
for dev_id
in device.identifiers
if dev_id[0] == DOMAIN
45 if len(device_uid) < 2:
48 elif device_uid[1].startswith(
"ch")
and len(device_uid[1]) <= 5:
49 ch =
int(device_uid[1][2:])
50 elif device_uid[1].startswith(
"chime"):
51 ch =
int(device_uid[1][5:])
54 ch = host.api.channel_for_uid(device_uid[1])
55 return (device_uid, ch, is_chime)
tuple[list[str], int|None, bool] get_device_uid_and_ch(dr.DeviceEntry device, ReolinkHost host)
bool is_connected(HomeAssistant hass, config_entries.ConfigEntry config_entry)