core/homeassistant/components/voip/select.py

64 lines
2.0 KiB
Python

"""Select entities for VoIP integration."""
from __future__ import annotations
from typing import TYPE_CHECKING
from homeassistant.components.assist_pipeline.select import (
AssistPipelineSelect,
VadSensitivitySelect,
)
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant, callback
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from .const import DOMAIN
from .devices import VoIPDevice
from .entity import VoIPEntity
if TYPE_CHECKING:
from . import DomainData
async def async_setup_entry(
hass: HomeAssistant,
config_entry: ConfigEntry,
async_add_entities: AddEntitiesCallback,
) -> None:
"""Set up VoIP switch entities."""
domain_data: DomainData = hass.data[DOMAIN]
@callback
def async_add_device(device: VoIPDevice) -> None:
"""Add device."""
async_add_entities(
[VoipPipelineSelect(hass, device), VoipVadSensitivitySelect(hass, device)]
)
domain_data.devices.async_add_new_device_listener(async_add_device)
entities: list[VoIPEntity] = []
for device in domain_data.devices:
entities.append(VoipPipelineSelect(hass, device))
entities.append(VoipVadSensitivitySelect(hass, device))
async_add_entities(entities)
class VoipPipelineSelect(VoIPEntity, AssistPipelineSelect):
"""Pipeline selector for VoIP devices."""
def __init__(self, hass: HomeAssistant, device: VoIPDevice) -> None:
"""Initialize a pipeline selector."""
VoIPEntity.__init__(self, device)
AssistPipelineSelect.__init__(self, hass, DOMAIN, device.voip_id)
class VoipVadSensitivitySelect(VoIPEntity, VadSensitivitySelect):
"""VAD sensitivity selector for VoIP devices."""
def __init__(self, hass: HomeAssistant, device: VoIPDevice) -> None:
"""Initialize a VAD sensitivity selector."""
VoIPEntity.__init__(self, device)
VadSensitivitySelect.__init__(self, hass, device.voip_id)