diff --git a/homeassistant/components/esphome/assist_satellite.py b/homeassistant/components/esphome/assist_satellite.py index 1485d88a7d2..bfe07a24096 100644 --- a/homeassistant/components/esphome/assist_satellite.py +++ b/homeassistant/components/esphome/assist_satellite.py @@ -174,6 +174,9 @@ class EsphomeAssistSatellite( ) _LOGGER.debug("Set active wake words: %s", config.active_wake_words) + # Ensure configuration is updated + await self._update_satellite_config() + async def _update_satellite_config(self) -> None: """Get the latest satellite configuration from the device.""" config = await self.cli.get_voice_assistant_configuration(_CONFIG_TIMEOUT_SEC) diff --git a/tests/components/esphome/test_assist_satellite.py b/tests/components/esphome/test_assist_satellite.py index 71bae989daf..cfa25489013 100644 --- a/tests/components/esphome/test_assist_satellite.py +++ b/tests/components/esphome/test_assist_satellite.py @@ -2,6 +2,7 @@ import asyncio from collections.abc import Awaitable, Callable +from dataclasses import replace import io import socket from unittest.mock import ANY, Mock, patch @@ -1457,11 +1458,16 @@ async def test_get_set_configuration( actual_config = satellite.async_get_configuration() assert actual_config == expected_config - # Change active wake words - actual_config.active_wake_words = ["5678"] - await satellite.async_set_configuration(actual_config) + updated_config = replace(actual_config, active_wake_words=["5678"]) + mock_client.get_voice_assistant_configuration.return_value = updated_config - # Device should have been updated + # Change active wake words + await satellite.async_set_configuration(updated_config) + + # Set config method should be called mock_client.set_voice_assistant_configuration.assert_called_once_with( active_wake_words=["5678"] ) + + # Device should have been updated + assert satellite.async_get_configuration() == updated_config