42 lines
1.3 KiB
Python
42 lines
1.3 KiB
Python
"""Spook - Your homie."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from typing import TYPE_CHECKING
|
|
|
|
from homeassistant.components.cloud.const import DOMAIN as CLOUD_DOMAIN
|
|
from homeassistant.helpers.device_registry import DeviceInfo
|
|
|
|
from ...const import DOMAIN
|
|
from ...entity import SpookEntity, SpookEntityDescription
|
|
|
|
if TYPE_CHECKING:
|
|
from hass_nabucasa import Cloud
|
|
|
|
from homeassistant.components.cloud.client import CloudClient
|
|
|
|
|
|
class HomeAssistantCloudSpookEntity(SpookEntity):
|
|
"""Defines an base Spook entity for Home Assistant Cloud related entities."""
|
|
|
|
def __init__(
|
|
self, cloud: Cloud[CloudClient], description: SpookEntityDescription
|
|
) -> None:
|
|
"""Initialize the entity."""
|
|
super().__init__(description=description)
|
|
self._cloud = cloud
|
|
self._attr_device_info = DeviceInfo(
|
|
identifiers={(DOMAIN, CLOUD_DOMAIN)},
|
|
manufacturer="Nabu Casa Inc.",
|
|
name="Home Assistant Cloud",
|
|
configuration_url="https://account.nabucasa.com/",
|
|
)
|
|
self._attr_unique_id = f"{CLOUD_DOMAIN}_{description.key}"
|
|
|
|
@property
|
|
def available(self) -> bool:
|
|
"""Return if cloud services are available."""
|
|
return (
|
|
super().available and self._cloud.is_logged_in and self._cloud.is_connected
|
|
)
|