@@ -315,6 +315,13 @@ async def test_laundry_wash_scenario(
315315 check_sensor_state (hass , "sensor.washing_machine_remaining_time" , "unknown" , step )
316316 # OFF -> elapsed forced to unknown (some devices continue reporting last value of last cycle)
317317 check_sensor_state (hass , "sensor.washing_machine_elapsed_time" , "unknown" , step )
318+ # consumption sensors have to report "unknown" when the device is not working
319+ check_sensor_state (
320+ hass , "sensor.washing_machine_energy_consumption" , "unknown" , step
321+ )
322+ check_sensor_state (
323+ hass , "sensor.washing_machine_water_consumption" , "unknown" , step
324+ )
318325
319326 # Simulate program started
320327 device_fixture ["DummyWasher" ]["state" ]["status" ]["value_raw" ] = 5
@@ -337,10 +344,41 @@ async def test_laundry_wash_scenario(
337344 device_fixture ["DummyWasher" ]["state" ]["elapsedTime" ][1 ] = 12
338345 device_fixture ["DummyWasher" ]["state" ]["spinningSpeed" ]["value_raw" ] = 1200
339346 device_fixture ["DummyWasher" ]["state" ]["spinningSpeed" ]["value_localized" ] = "1200"
347+ device_fixture ["DummyWasher" ]["state" ]["ecoFeedback" ] = {
348+ "currentEnergyConsumption" : {
349+ "value" : 0.9 ,
350+ "unit" : "kWh" ,
351+ },
352+ "currentWaterConsumption" : {
353+ "value" : 52 ,
354+ "unit" : "l" ,
355+ },
356+ }
340357
341358 freezer .tick (timedelta (seconds = 130 ))
342359 async_fire_time_changed (hass )
343360 await hass .async_block_till_done ()
361+
362+ # at this point, appliance is working, but it started reporting a value from last cycle, so it is forced to 0
363+ check_sensor_state (hass , "sensor.washing_machine_energy_consumption" , "0" , step )
364+ check_sensor_state (hass , "sensor.washing_machine_water_consumption" , "0" , step )
365+
366+ # intermediate step, only to report new consumption values
367+ device_fixture ["DummyWasher" ]["state" ]["ecoFeedback" ] = {
368+ "currentEnergyConsumption" : {
369+ "value" : 0.0 ,
370+ "unit" : "kWh" ,
371+ },
372+ "currentWaterConsumption" : {
373+ "value" : 0 ,
374+ "unit" : "l" ,
375+ },
376+ }
377+
378+ freezer .tick (timedelta (seconds = 130 ))
379+ async_fire_time_changed (hass )
380+ await hass .async_block_till_done ()
381+
344382 step += 1
345383
346384 check_sensor_state (hass , "sensor.washing_machine" , "in_use" , step )
@@ -351,6 +389,28 @@ async def test_laundry_wash_scenario(
351389 # IN_USE -> elapsed, remaining time from API (normal case)
352390 check_sensor_state (hass , "sensor.washing_machine_remaining_time" , "105" , step )
353391 check_sensor_state (hass , "sensor.washing_machine_elapsed_time" , "12" , step )
392+ check_sensor_state (hass , "sensor.washing_machine_energy_consumption" , "0.0" , step )
393+ check_sensor_state (hass , "sensor.washing_machine_water_consumption" , "0" , step )
394+
395+ # intermediate step, only to report new consumption values
396+ device_fixture ["DummyWasher" ]["state" ]["ecoFeedback" ] = {
397+ "currentEnergyConsumption" : {
398+ "value" : 0.1 ,
399+ "unit" : "kWh" ,
400+ },
401+ "currentWaterConsumption" : {
402+ "value" : 7 ,
403+ "unit" : "l" ,
404+ },
405+ }
406+
407+ freezer .tick (timedelta (seconds = 130 ))
408+ async_fire_time_changed (hass )
409+ await hass .async_block_till_done ()
410+
411+ # at this point, it starts reporting value from API
412+ check_sensor_state (hass , "sensor.washing_machine_energy_consumption" , "0.1" , step )
413+ check_sensor_state (hass , "sensor.washing_machine_water_consumption" , "7" , step )
354414
355415 # Simulate rinse hold phase
356416 device_fixture ["DummyWasher" ]["state" ]["status" ]["value_raw" ] = 11
@@ -389,6 +449,7 @@ async def test_laundry_wash_scenario(
389449 device_fixture ["DummyWasher" ]["state" ]["remainingTime" ][1 ] = 0
390450 device_fixture ["DummyWasher" ]["state" ]["elapsedTime" ][0 ] = 0
391451 device_fixture ["DummyWasher" ]["state" ]["elapsedTime" ][1 ] = 0
452+ device_fixture ["DummyWasher" ]["state" ]["ecoFeedback" ] = None
392453
393454 freezer .tick (timedelta (seconds = 130 ))
394455 async_fire_time_changed (hass )
@@ -406,6 +467,9 @@ async def test_laundry_wash_scenario(
406467 check_sensor_state (hass , "sensor.washing_machine_remaining_time" , "0" , step )
407468 # PROGRAM_ENDED -> elapsed time kept from last program (some devices immediately go to 0)
408469 check_sensor_state (hass , "sensor.washing_machine_elapsed_time" , "109" , step )
470+ # consumption values now are reporting last known value, API might start reporting null object
471+ check_sensor_state (hass , "sensor.washing_machine_energy_consumption" , "0.1" , step )
472+ check_sensor_state (hass , "sensor.washing_machine_water_consumption" , "7" , step )
409473
410474 # Simulate when door is opened after program ended
411475 device_fixture ["DummyWasher" ]["state" ]["status" ]["value_raw" ] = 3
0 commit comments