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
This commit is contained in:
Jan Bouwhuis 2023-03-05 17:06:48 +01:00 committed by GitHub
parent 2fc2c2efbe
commit a9becd8e0e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 10 additions and 1 deletions

View File

@ -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
)

View File

@ -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),
],
)