diff --git a/homeassistant/components/google_assistant/report_state.py b/homeassistant/components/google_assistant/report_state.py index 869bc61d7a3624f948709b60cfb4f955c6a63cfc..b842a552714ef76c9e5651e6967bc5c3d2117e44 100644 --- a/homeassistant/components/google_assistant/report_state.py +++ b/homeassistant/components/google_assistant/report_state.py @@ -1,15 +1,21 @@ """Google Report State implementation.""" +import logging + from homeassistant.core import HomeAssistant, callback from homeassistant.const import MATCH_ALL from homeassistant.helpers.event import async_call_later from .helpers import AbstractConfig, GoogleEntity, async_get_entities +from .error import SmartHomeError # Time to wait until the homegraph updates # https://github.com/actions-on-google/smart-home-nodejs/issues/196#issuecomment-439156639 INITIAL_REPORT_DELAY = 60 +_LOGGER = logging.getLogger(__name__) + + @callback def async_enable_report_state(hass: HomeAssistant, google_config: AbstractConfig): """Enable state reporting.""" @@ -26,7 +32,11 @@ def async_enable_report_state(hass: HomeAssistant, google_config: AbstractConfig if not entity.is_supported(): return - entity_data = entity.query_serialize() + try: + entity_data = entity.query_serialize() + except SmartHomeError as err: + _LOGGER.debug("Not reporting state for %s: %s", changed_entity, err.code) + return if old_state: old_entity = GoogleEntity(hass, google_config, old_state) diff --git a/tests/components/google_assistant/test_report_state.py b/tests/components/google_assistant/test_report_state.py index 734d9ec7fc83af98996c55865ff23be077c5db6b..6ab88286a6959345e7fb91d3bc2c7c513948b7c6 100644 --- a/tests/components/google_assistant/test_report_state.py +++ b/tests/components/google_assistant/test_report_state.py @@ -1,7 +1,7 @@ """Test Google report state.""" from unittest.mock import patch -from homeassistant.components.google_assistant import report_state +from homeassistant.components.google_assistant import report_state, error from homeassistant.util.dt import utcnow from . import BASIC_CONFIG @@ -10,7 +10,7 @@ from . import BASIC_CONFIG from tests.common import mock_coro, async_fire_time_changed -async def test_report_state(hass): +async def test_report_state(hass, caplog): """Test report state works.""" hass.states.async_set("light.ceiling", "off") hass.states.async_set("switch.ac", "on") @@ -57,6 +57,19 @@ async def test_report_state(hass): assert len(mock_report.mock_calls) == 0 + # Test that entities that we can't query don't report a state + with patch.object( + BASIC_CONFIG, "async_report_state", side_effect=mock_coro + ) as mock_report, patch( + "homeassistant.components.google_assistant.report_state.GoogleEntity.query_serialize", + side_effect=error.SmartHomeError("mock-error", "mock-msg"), + ): + hass.states.async_set("light.kitchen", "off") + await hass.async_block_till_done() + + assert "Not reporting state for light.kitchen: mock-error" + assert len(mock_report.mock_calls) == 0 + unsub() with patch.object(