hass-core/homeassistant/components/homeassistant_sky_connect/const.py
puddly 380f192c93
Expose the SkyConnect integration with a firmware config/options flow (#115363)
Co-authored-by: Stefan Agner <stefan@agner.ch>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Erik <erik@montnemery.com>
2024-04-24 17:06:24 +02:00

52 lines
1.4 KiB
Python

"""Constants for the Home Assistant SkyConnect integration."""
import dataclasses
import enum
from typing import Self
DOMAIN = "homeassistant_sky_connect"
ZHA_DOMAIN = "zha"
DOCS_WEB_FLASHER_URL = "https://skyconnect.home-assistant.io/firmware-update/"
OTBR_ADDON_NAME = "OpenThread Border Router"
OTBR_ADDON_MANAGER_DATA = "openthread_border_router"
OTBR_ADDON_SLUG = "core_openthread_border_router"
ZIGBEE_FLASHER_ADDON_NAME = "Silicon Labs Flasher"
ZIGBEE_FLASHER_ADDON_MANAGER_DATA = "silabs_flasher"
ZIGBEE_FLASHER_ADDON_SLUG = "core_silabs_flasher"
@dataclasses.dataclass(frozen=True)
class VariantInfo:
"""Hardware variant information."""
usb_product_name: str
short_name: str
full_name: str
class HardwareVariant(VariantInfo, enum.Enum):
"""Hardware variants."""
SKYCONNECT = (
"SkyConnect v1.0",
"SkyConnect",
"Home Assistant SkyConnect",
)
CONNECT_ZBT1 = (
"Home Assistant Connect ZBT-1",
"Connect ZBT-1",
"Home Assistant Connect ZBT-1",
)
@classmethod
def from_usb_product_name(cls, usb_product_name: str) -> Self:
"""Get the hardware variant from the USB product name."""
for variant in cls:
if variant.value.usb_product_name == usb_product_name:
return variant
raise ValueError(f"Unknown SkyConnect product name: {usb_product_name}")