1 """Class to manage satellite devices."""
3 from __future__
import annotations
5 from collections.abc
import Callable
6 from dataclasses
import dataclass
12 from .const
import DOMAIN
17 """Class to store device."""
21 is_active: bool =
False
22 is_muted: bool =
False
23 pipeline_name: str |
None =
None
24 noise_suppression_level: int = 0
26 volume_multiplier: float = 1.0
27 vad_sensitivity: VadSensitivity = VadSensitivity.DEFAULT
29 _is_active_listener: Callable[[],
None] |
None =
None
30 _is_muted_listener: Callable[[],
None] |
None =
None
31 _pipeline_listener: Callable[[],
None] |
None =
None
32 _audio_settings_listener: Callable[[],
None] |
None =
None
36 """Set active state."""
44 """Set muted state."""
52 """Inform listeners that pipeline selection has changed."""
60 """Set noise suppression level."""
68 """Set auto gain amount."""
76 """Set auto gain amount."""
84 """Set VAD sensitivity."""
92 """Listen for updates to is_active."""
97 """Listen for updates to muted status."""
102 """Listen for updates to pipeline."""
107 self, audio_settings_listener: Callable[[],
None]
109 """Listen for updates to audio settings."""
113 """Return entity id for assist in progress binary sensor."""
114 ent_reg = er.async_get(hass)
115 return ent_reg.async_get_entity_id(
116 "binary_sensor", DOMAIN, f
"{self.satellite_id}-assist_in_progress"
120 """Return entity id for satellite muted switch."""
121 ent_reg = er.async_get(hass)
122 return ent_reg.async_get_entity_id(
123 "switch", DOMAIN, f
"{self.satellite_id}-mute"
127 """Return entity id for pipeline select."""
128 ent_reg = er.async_get(hass)
129 return ent_reg.async_get_entity_id(
130 "select", DOMAIN, f
"{self.satellite_id}-pipeline"
134 """Return entity id for noise suppression select."""
135 ent_reg = er.async_get(hass)
136 return ent_reg.async_get_entity_id(
137 "select", DOMAIN, f
"{self.satellite_id}-noise_suppression_level"
141 """Return entity id for auto gain amount."""
142 ent_reg = er.async_get(hass)
143 return ent_reg.async_get_entity_id(
144 "number", DOMAIN, f
"{self.satellite_id}-auto_gain"
148 """Return entity id for microphone volume multiplier."""
149 ent_reg = er.async_get(hass)
150 return ent_reg.async_get_entity_id(
151 "number", DOMAIN, f
"{self.satellite_id}-volume_multiplier"
155 """Return entity id for VAD sensitivity."""
156 ent_reg = er.async_get(hass)
157 return ent_reg.async_get_entity_id(
158 "select", DOMAIN, f
"{self.satellite_id}-vad_sensitivity"
None set_noise_suppression_level(self, int noise_suppression_level)
None set_pipeline_name(self, str pipeline_name)
str|None get_assist_in_progress_entity_id(self, HomeAssistant hass)
str|None get_noise_suppression_level_entity_id(self, HomeAssistant hass)
str|None get_muted_entity_id(self, HomeAssistant hass)
None set_is_active(self, bool active)
str|None get_vad_sensitivity_entity_id(self, HomeAssistant hass)
None set_is_muted_listener(self, Callable[[], None] is_muted_listener)
str|None get_auto_gain_entity_id(self, HomeAssistant hass)
None set_volume_multiplier(self, float volume_multiplier)
None set_audio_settings_listener(self, Callable[[], None] audio_settings_listener)
None set_is_muted(self, bool muted)
None set_vad_sensitivity(self, VadSensitivity vad_sensitivity)
str|None get_pipeline_entity_id(self, HomeAssistant hass)
None set_is_active_listener(self, Callable[[], None] is_active_listener)
None set_pipeline_listener(self, Callable[[], None] pipeline_listener)
None set_auto_gain(self, int auto_gain)
str|None get_volume_multiplier_entity_id(self, HomeAssistant hass)