From 02e15a4ce78ecf6b4734a998734b655ee60c8f68 Mon Sep 17 00:00:00 2001 From: Michael Hansen Date: Fri, 27 Sep 2024 10:11:23 -0500 Subject: [PATCH] Change Assist satellite state names (#126926) * Change state names * Update homeassistant/components/assist_satellite/strings.json --------- Co-authored-by: Joost Lekkerkerker --- .../components/assist_satellite/entity.py | 18 +++++++-------- .../components/assist_satellite/strings.json | 4 ++-- .../assist_satellite/test_entity.py | 22 +++++++++---------- .../esphome/test_assist_satellite.py | 10 ++++----- tests/components/voip/test_voip.py | 8 +++---- 5 files changed, 31 insertions(+), 31 deletions(-) diff --git a/homeassistant/components/assist_satellite/entity.py b/homeassistant/components/assist_satellite/entity.py index 23b588b569e..ba8b54f7da2 100644 --- a/homeassistant/components/assist_satellite/entity.py +++ b/homeassistant/components/assist_satellite/entity.py @@ -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: diff --git a/homeassistant/components/assist_satellite/strings.json b/homeassistant/components/assist_satellite/strings.json index 1d07882daae..7f1426ef529 100644 --- a/homeassistant/components/assist_satellite/strings.json +++ b/homeassistant/components/assist_satellite/strings.json @@ -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" } diff --git a/tests/components/assist_satellite/test_entity.py b/tests/components/assist_satellite/test_entity.py index b2347184bec..884ba36782c 100644 --- a/tests/components/assist_satellite/test_entity.py +++ b/tests/components/assist_satellite/test_entity.py @@ -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 diff --git a/tests/components/esphome/test_assist_satellite.py b/tests/components/esphome/test_assist_satellite.py index 43ca3c0a341..b2c44af2cf9 100644 --- a/tests/components/esphome/test_assist_satellite.py +++ b/tests/components/esphome/test_assist_satellite.py @@ -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, diff --git a/tests/components/voip/test_voip.py b/tests/components/voip/test_voip.py index a0e032b65cb..17af2748c1c 100644 --- a/tests/components/voip/test_voip.py +++ b/tests/components/voip/test_voip.py @@ -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(