From a9becd8e0ed9926fd2ef50bbb7d8a1f06e349e2b Mon Sep 17 00:00:00 2001 From: Jan Bouwhuis Date: Sun, 5 Mar 2023 17:06:48 +0100 Subject: [PATCH] Raise ValueError on date parsing of MQTT sensor with invalid date format (#89036) * Suppress ValueError on date parsing of MQTT sensor * Simplify, but not update state on invalid payload * Still raise an an invalid date * Make datetime state unknown on invalid format * remove unrelated added new line --- homeassistant/components/mqtt/sensor.py | 5 ++++- tests/components/mqtt/test_sensor.py | 6 ++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/homeassistant/components/mqtt/sensor.py b/homeassistant/components/mqtt/sensor.py index df51dd60a15..934f7369580 100644 --- a/homeassistant/components/mqtt/sensor.py +++ b/homeassistant/components/mqtt/sensor.py @@ -284,7 +284,10 @@ class MqttSensor(MqttEntity, RestoreSensor): if self.device_class is None: self._attr_native_value = new_value return - if (payload_datetime := dt_util.parse_datetime(new_value)) is None: + try: + if (payload_datetime := dt_util.parse_datetime(new_value)) is None: + raise ValueError + except ValueError: _LOGGER.warning( "Invalid state message '%s' from '%s'", msg.payload, msg.topic ) diff --git a/tests/components/mqtt/test_sensor.py b/tests/components/mqtt/test_sensor.py index 09944b56c04..66836a16ee1 100644 --- a/tests/components/mqtt/test_sensor.py +++ b/tests/components/mqtt/test_sensor.py @@ -134,6 +134,12 @@ async def test_setting_sensor_value_via_mqtt_message( "2021-11-18T19:25:00+00:00", False, ), + ( + sensor.SensorDeviceClass.TIMESTAMP, + "2021-13-18T35:25:00+00:00", + STATE_UNKNOWN, + True, + ), (sensor.SensorDeviceClass.TIMESTAMP, "invalid", STATE_UNKNOWN, True), ], )