diff --git a/homeassistant/components/sensor/dsmr.py b/homeassistant/components/sensor/dsmr.py index 1bb7b44cab6..8a24793a157 100644 --- a/homeassistant/components/sensor/dsmr.py +++ b/homeassistant/components/sensor/dsmr.py @@ -350,7 +350,8 @@ class DerivativeDSMREntity(DSMREntity): else: # Recalculate the rate diff = current_reading - self._previous_reading - self._state = diff + timediff = timestamp - self._previous_timestamp + self._state = diff / timediff * 3600 self._previous_reading = current_reading self._previous_timestamp = timestamp diff --git a/tests/components/sensor/test_dsmr.py b/tests/components/sensor/test_dsmr.py index dbf1e1fe7dd..69e05df1d92 100644 --- a/tests/components/sensor/test_dsmr.py +++ b/tests/components/sensor/test_dsmr.py @@ -104,8 +104,8 @@ def test_derivative(): entity.telegram = { '1.0.0': MBusObject([ - {'value': 1}, - {'value': 1, 'unit': 'm3'}, + {'value': 1551642213}, + {'value': 745.695, 'unit': 'm3'}, ]) } yield from entity.async_update() @@ -115,14 +115,14 @@ def test_derivative(): entity.telegram = { '1.0.0': MBusObject([ - {'value': 2}, - {'value': 2, 'unit': 'm3'}, + {'value': 1551642543}, + {'value': 745.698, 'unit': 'm3'}, ]) } yield from entity.async_update() - assert entity.state == 1, \ - 'state should be difference between first and second update' + assert abs(entity.state - 0.03272) < 0.00001, \ + 'state should be hourly usage calculated from first and second update' assert entity.unit_of_measurement == 'm3/h'