Change Assist satellite state names (#126926)

* Change state names

* Update homeassistant/components/assist_satellite/strings.json

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
pull/126933/head
Michael Hansen 2024-09-27 10:11:23 -05:00 committed by GitHub
parent 6373347d65
commit bd4f3b0553
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 31 additions and 31 deletions

View File

@ -41,10 +41,10 @@ _LOGGER = logging.getLogger(__name__)
class AssistSatelliteState(StrEnum):
"""Valid states of an Assist satellite entity."""
LISTENING_WAKE_WORD = "listening_wake_word"
"""Device is streaming audio for wake word detection to Home Assistant."""
IDLE = "idle"
"""Device is waiting for user input, such as a wake word or a button press."""
LISTENING_COMMAND = "listening_command"
LISTENING = "listening"
"""Device is streaming audio with the voice command to Home Assistant."""
PROCESSING = "processing"
@ -117,7 +117,7 @@ class AssistSatelliteEntity(entity.Entity):
_attr_tts_options: dict[str, Any] | None = None
_pipeline_task: asyncio.Task | None = None
__assist_satellite_state = AssistSatelliteState.LISTENING_WAKE_WORD
__assist_satellite_state = AssistSatelliteState.IDLE
@final
@property
@ -242,7 +242,7 @@ class AssistSatelliteEntity(entity.Entity):
)
finally:
self._is_announcing = False
self._set_state(AssistSatelliteState.LISTENING_WAKE_WORD)
self._set_state(AssistSatelliteState.IDLE)
async def async_announce(self, announcement: AssistSatelliteAnnouncement) -> None:
"""Announce media on the satellite.
@ -363,9 +363,9 @@ class AssistSatelliteEntity(entity.Entity):
def _internal_on_pipeline_event(self, event: PipelineEvent) -> None:
"""Set state based on pipeline stage."""
if event.type is PipelineEventType.WAKE_WORD_START:
self._set_state(AssistSatelliteState.LISTENING_WAKE_WORD)
self._set_state(AssistSatelliteState.IDLE)
elif event.type is PipelineEventType.STT_START:
self._set_state(AssistSatelliteState.LISTENING_COMMAND)
self._set_state(AssistSatelliteState.LISTENING)
elif event.type is PipelineEventType.INTENT_START:
self._set_state(AssistSatelliteState.PROCESSING)
elif event.type is PipelineEventType.INTENT_END:
@ -379,7 +379,7 @@ class AssistSatelliteEntity(entity.Entity):
self._set_state(AssistSatelliteState.RESPONDING)
elif event.type is PipelineEventType.RUN_END:
if not self._run_has_tts:
self._set_state(AssistSatelliteState.LISTENING_WAKE_WORD)
self._set_state(AssistSatelliteState.IDLE)
self.on_pipeline_event(event)
@ -392,7 +392,7 @@ class AssistSatelliteEntity(entity.Entity):
@callback
def tts_response_finished(self) -> None:
"""Tell entity that the text-to-speech response has finished playing."""
self._set_state(AssistSatelliteState.LISTENING_WAKE_WORD)
self._set_state(AssistSatelliteState.IDLE)
@callback
def _resolve_pipeline(self) -> str | None:

View File

@ -4,8 +4,8 @@
"_": {
"name": "Assist satellite",
"state": {
"listening_wake_word": "Wake word",
"listening_command": "Voice command",
"idle": "[%key:common::state::idle%]",
"listening": "Listening",
"responding": "Responding",
"processing": "Processing"
}

View File

@ -37,7 +37,7 @@ async def test_entity_state(
state = hass.states.get(ENTITY_ID)
assert state is not None
assert state.state == AssistSatelliteState.LISTENING_WAKE_WORD
assert state.state == AssistSatelliteState.IDLE
context = Context()
audio_stream = object()
@ -73,18 +73,18 @@ async def test_entity_state(
assert kwargs["end_stage"] == PipelineStage.TTS
for event_type, event_data, expected_state in (
(PipelineEventType.RUN_START, {}, AssistSatelliteState.LISTENING_WAKE_WORD),
(PipelineEventType.RUN_END, {}, AssistSatelliteState.LISTENING_WAKE_WORD),
(PipelineEventType.RUN_START, {}, AssistSatelliteState.IDLE),
(PipelineEventType.RUN_END, {}, AssistSatelliteState.IDLE),
(
PipelineEventType.WAKE_WORD_START,
{},
AssistSatelliteState.LISTENING_WAKE_WORD,
AssistSatelliteState.IDLE,
),
(PipelineEventType.WAKE_WORD_END, {}, AssistSatelliteState.LISTENING_WAKE_WORD),
(PipelineEventType.STT_START, {}, AssistSatelliteState.LISTENING_COMMAND),
(PipelineEventType.STT_VAD_START, {}, AssistSatelliteState.LISTENING_COMMAND),
(PipelineEventType.STT_VAD_END, {}, AssistSatelliteState.LISTENING_COMMAND),
(PipelineEventType.STT_END, {}, AssistSatelliteState.LISTENING_COMMAND),
(PipelineEventType.WAKE_WORD_END, {}, AssistSatelliteState.IDLE),
(PipelineEventType.STT_START, {}, AssistSatelliteState.LISTENING),
(PipelineEventType.STT_VAD_START, {}, AssistSatelliteState.LISTENING),
(PipelineEventType.STT_VAD_END, {}, AssistSatelliteState.LISTENING),
(PipelineEventType.STT_END, {}, AssistSatelliteState.LISTENING),
(PipelineEventType.INTENT_START, {}, AssistSatelliteState.PROCESSING),
(
PipelineEventType.INTENT_END,
@ -105,7 +105,7 @@ async def test_entity_state(
entity.tts_response_finished()
state = hass.states.get(ENTITY_ID)
assert state.state == AssistSatelliteState.LISTENING_WAKE_WORD
assert state.state == AssistSatelliteState.IDLE
async def test_new_pipeline_cancels_pipeline(
@ -241,7 +241,7 @@ async def test_announce(
target={"entity_id": "assist_satellite.test_entity"},
blocking=True,
)
assert entity.state == AssistSatelliteState.LISTENING_WAKE_WORD
assert entity.state == AssistSatelliteState.IDLE
assert entity.announcements[0] == expected_params

View File

@ -187,7 +187,7 @@ async def test_pipeline_api_audio(
)
# Wake word
assert satellite.state == AssistSatelliteState.LISTENING_WAKE_WORD
assert satellite.state == AssistSatelliteState.IDLE
event_callback(
PipelineEvent(
@ -242,7 +242,7 @@ async def test_pipeline_api_audio(
VoiceAssistantEventType.VOICE_ASSISTANT_STT_START,
{},
)
assert satellite.state == AssistSatelliteState.LISTENING_COMMAND
assert satellite.state == AssistSatelliteState.LISTENING
event_callback(
PipelineEvent(
@ -761,7 +761,7 @@ async def test_pipeline_media_player(
)
await tts_finished.wait()
assert satellite.state == AssistSatelliteState.LISTENING_WAKE_WORD
assert satellite.state == AssistSatelliteState.IDLE
async def test_timer_events(
@ -1214,7 +1214,7 @@ async def test_announce_message(
blocking=True,
)
await done.wait()
assert satellite.state == AssistSatelliteState.LISTENING_WAKE_WORD
assert satellite.state == AssistSatelliteState.IDLE
async def test_announce_media_id(
@ -1297,7 +1297,7 @@ async def test_announce_media_id(
blocking=True,
)
await done.wait()
assert satellite.state == AssistSatelliteState.LISTENING_WAKE_WORD
assert satellite.state == AssistSatelliteState.IDLE
mock_async_create_proxy_url.assert_called_once_with(
hass,

View File

@ -199,7 +199,7 @@ async def test_pipeline(
assert voip_user_id
# Satellite is muted until a call begins
assert satellite.state == AssistSatelliteState.LISTENING_WAKE_WORD
assert satellite.state == AssistSatelliteState.IDLE
done = asyncio.Event()
@ -251,7 +251,7 @@ async def test_pipeline(
)
)
assert satellite.state == AssistSatelliteState.LISTENING_COMMAND
assert satellite.state == AssistSatelliteState.LISTENING
# Fake STT result
event_callback(
@ -345,7 +345,7 @@ async def test_pipeline(
satellite.transport = Mock()
satellite.connection_made(satellite.transport)
assert satellite.state == AssistSatelliteState.LISTENING_WAKE_WORD
assert satellite.state == AssistSatelliteState.IDLE
# Ensure audio queue is cleared before pipeline starts
satellite._audio_queue.put_nowait(bad_chunk)
@ -370,7 +370,7 @@ async def test_pipeline(
await done.wait()
# Finished speaking
assert satellite.state == AssistSatelliteState.LISTENING_WAKE_WORD
assert satellite.state == AssistSatelliteState.IDLE
async def test_stt_stream_timeout(