From bfae8992a931e50103473924ce4fb2f3af2fab6d Mon Sep 17 00:00:00 2001 From: Matthias Alphart Date: Wed, 8 Mar 2023 10:42:07 -1100 Subject: [PATCH] Better log message for KNX expose conversion error (#89400) --- homeassistant/components/knx/expose.py | 10 ++++++++-- tests/components/knx/test_expose.py | 9 +++++++-- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/knx/expose.py b/homeassistant/components/knx/expose.py index 05e367faeec..308fc4eacd1 100644 --- a/homeassistant/components/knx/expose.py +++ b/homeassistant/components/knx/expose.py @@ -161,8 +161,14 @@ class KNXExposeSensor: """Set new value on xknx ExposeSensor.""" try: await self.device.set(value) - except ConversionError: - _LOGGER.exception("Error during sending of expose sensor value") + except ConversionError as err: + _LOGGER.warning( + 'Could not expose %s %s value "%s" to KNX: %s', + self.entity_id, + self.expose_attribute or "state", + value, + err, + ) class KNXExposeTime: diff --git a/tests/components/knx/test_expose.py b/tests/components/knx/test_expose.py index 1fca793b8ca..9bb6f22470a 100644 --- a/tests/components/knx/test_expose.py +++ b/tests/components/knx/test_expose.py @@ -3,6 +3,8 @@ from datetime import timedelta import time from unittest.mock import patch +import pytest + from homeassistant.components.knx import CONF_KNX_EXPOSE, DOMAIN, KNX_ADDRESS from homeassistant.components.knx.schema import ExposeSchema from homeassistant.const import CONF_ATTRIBUTE, CONF_ENTITY_ID, CONF_TYPE @@ -201,7 +203,7 @@ async def test_expose_cooldown(hass: HomeAssistant, knx: KNXTestKit) -> None: async def test_expose_conversion_exception( - hass: HomeAssistant, knx: KNXTestKit + hass: HomeAssistant, caplog: pytest.LogCaptureFixture, knx: KNXTestKit ) -> None: """Test expose throws exception.""" @@ -230,8 +232,11 @@ async def test_expose_conversion_exception( "on", {attribute: 101}, ) - await knx.assert_no_telegram() + assert ( + 'Could not expose fake.entity fake_attribute value "101.0" to KNX:' + in caplog.text + ) @patch("time.localtime")