@@ -455,35 +455,35 @@ def extra_state_attributes(self) -> dict[str, Any]:
455
455
sessions = self .coordinator .data .get ("sessions" , [])
456
456
smart_point = self .coordinator .data .get ("point" , {})
457
457
session = {}
458
- consumption_24h = 0
459
- meter_start = None
460
- meter_stop = None
461
458
consumption = 0
459
+ consumption_24h = 0
462
460
463
461
if sessions :
464
462
for session in sessions :
465
- try :
466
- meter_start = float (session .get ("meter_start" , 0 )) / 1000.0
467
- except (ValueError , TypeError ):
468
- pass
469
- try :
470
- if session .get ("meter_stop" , None ) is None :
463
+ meter_start = session .get ("meter_start" , None )
464
+ meter_stop = session .get ("meter_stop" , None )
465
+
466
+ if meter_start is not None :
467
+ if meter_stop is None :
471
468
meter_stop = smart_point .get ("Energy.Active.Import.Register" , meter_start )
472
- else :
473
- meter_stop = session .get ("meter_stop" , None )
469
+
470
+ try :
471
+ meter_start = float (meter_start ) / 1000.0
474
472
meter_stop = float (meter_stop ) / 1000.0
475
473
except (ValueError , TypeError ):
476
474
pass
477
- consumption = float (meter_stop ) - float (meter_start )
478
- consumption_24h += consumption
475
+
476
+ if isinstance (meter_start , float ) and isinstance (meter_stop , float ):
477
+ consumption = float (meter_stop ) - float (meter_start )
478
+ consumption_24h += consumption
479
479
480
480
return {
481
481
"started_by" : session .get ("started_by" , None ),
482
- "meter_start" : meter_start ,
483
482
"started_at" : session .get ("started_at" , None ),
483
+ "meter_start" : session .get ("meter_start" , None ),
484
484
"stopped_by" : session .get ("stopped_by" , None ),
485
- "meter_stop" : meter_stop ,
486
485
"stopped_at" : session .get ("stopped_at" , None ),
486
+ "meter_stop" : session .get ("meter_stop" , None ),
487
487
"stop_reason" : session .get ("stop_reason" , None ),
488
488
"consumption" : consumption ,
489
489
"consumption_24h" : consumption_24h ,
@@ -507,31 +507,33 @@ def native_value(self) -> float | datetime | None:
507
507
elif self .coordinator .type == "evc_device" :
508
508
evc_device = self .coordinator .data .get ("evc_device" , {})
509
509
smart_point = self .coordinator .data .get ("point" , {})
510
+
510
511
if key == 'status' :
511
512
value = evc_device .get ("status" , None )
512
513
elif key == 'last_session' :
513
514
sessions = self .coordinator .data .get ("sessions" , [])
514
- smart_point = self .coordinator .data .get ("point" , {})
515
515
session = {}
516
516
consumption = 0
517
517
meter_start = None
518
518
meter_stop = None
519
519
if sessions :
520
520
session = sessions [- 1 ]
521
- try :
522
- meter_start = float (session .get ("meter_start" , 0 )) / 1000.0
523
- except (ValueError , TypeError ):
524
- pass
525
- try :
526
- if session .get ("meter_stop" , None ) is None :
521
+ meter_start = session .get ("meter_start" , None )
522
+ meter_stop = session .get ("meter_stop" , None )
523
+
524
+ if meter_start is not None :
525
+ if meter_stop is None :
527
526
meter_stop = smart_point .get ("Energy.Active.Import.Register" , meter_start )
528
- else :
529
- meter_stop = session .get ("meter_stop" , None )
527
+
528
+ try :
529
+ meter_start = float (meter_start ) / 1000.0
530
530
meter_stop = float (meter_stop ) / 1000.0
531
531
except (ValueError , TypeError ):
532
532
pass
533
- if meter_start and meter_stop :
533
+
534
+ if isinstance (meter_start , float ) and isinstance (meter_stop , float ):
534
535
consumption = round (float (meter_stop ) - float (meter_start ), 2 )
536
+
535
537
value = consumption
536
538
elif key == "voltage" :
537
539
value = smart_point .get ("Voltage" , None )
0 commit comments