74
74
"Voltage"
75
75
]
76
76
DEFAULT_MEASURAND = "Energy.Active.Import.Register"
77
+ DEFAULT_ENERGY_UNIT = UnitOfMeasure .wh
78
+ DEFAULT_POWER_UNIT = UnitOfMeasure .w
79
+ HA_ENERGY_UNIT = UnitOfMeasure .kwh
80
+ HA_POWER_UNIT = UnitOfMeasure .kw
77
81
78
82
#Additional conditions/states to monitor
79
83
CONDITIONS = [
@@ -411,8 +415,16 @@ def on_meter_values(self, connector_id: int, meter_value: Dict, **kwargs):
411
415
self ._metrics [sampled_value ["measurand" ]] = sampled_value ["value" ]
412
416
if (len (sampled_value .keys ()) == 1 ): #for backwards compatibility
413
417
self ._metrics [DEFAULT_MEASURAND ] = sampled_value ["value" ]
418
+ self ._units [DEFAULT_MEASURAND ] = DEFAULT_ENERGY_UNIT
414
419
if ("unit" in sampled_value ):
415
420
self ._units [sampled_value ["measurand" ]] = sampled_value ["unit" ]
421
+ if (self ._units [sampled_value ["measurand" ]] == DEFAULT_POWER_UNIT ):
422
+ self ._metrics [sampled_value ["measurand" ]] = float (self ._metrics [sampled_value ["measurand" ]])/ 1000
423
+ self ._units [sampled_value ["measurand" ]] = HA_POWER_UNIT
424
+ if (self ._units [sampled_value ["measurand" ]] == DEFAULT_ENERGY_UNIT ):
425
+ self ._metrics [sampled_value ["measurand" ]] = float (self ._metrics [sampled_value ["measurand" ]])/ 1000
426
+ self ._units [sampled_value ["measurand" ]] = HA_ENERGY_UNIT
427
+ self ._metrics [sampled_value ["measurand" ]] = round (float (self ._metrics [sampled_value ["measurand" ]]),1 )
416
428
if ("Meter.Start" not in self ._metrics ): self ._metrics ["Meter.Start" ] = self ._metrics [DEFAULT_MEASURAND ]
417
429
if ("Transaction.Id" not in self ._metrics ): self ._metrics ["Transaction.Id" ] = kwargs .get ("transaction_id" )
418
430
self ._metrics ["Session.Time" ] = round ((int (time .time ()) - float (self ._metrics ["Transaction.Id" ]))/ 60 )
@@ -435,6 +447,10 @@ def on_boot_notification(self, charge_point_model, charge_point_vendor, **kwargs
435
447
@on (Action .StatusNotification )
436
448
def on_status_notification (self , connector_id , error_code , status , ** kwargs ):
437
449
self ._metrics ["Status" ] = status
450
+ if (status == ChargePointStatus .suspended_ev | | status == ChargePointStatus .suspended_evse ):
451
+ if ("Current.Import" in self ._metrics ): self ._metrics ["Current.Import" ] = 0
452
+ if ("Power.Active.Import" in self ._metrics ): self ._metrics ["Power.Active.Import" ] = 0
453
+ if ("Power.Reactive.Import" in self ._metrics ): self ._metrics ["Power.Reactive.Import" ] = 0
438
454
self ._metrics ["Error.Code" ] = error_code
439
455
return call_result .StatusNotificationPayload ()
440
456
@@ -454,7 +470,7 @@ def on_start_transaction(self, connector_id, id_tag, meter_start, **kwargs):
454
470
self ._transactionId = int (time .time ())
455
471
self ._metrics ["Stop.Reason" ] = ""
456
472
self ._metrics ["Transaction.Id" ] = self ._transactionId
457
- self ._metrics ["Meter.Start" ] = int (meter_start ) / 1000.0
473
+ self ._metrics ["Meter.Start" ] = int (meter_start ) / 1000
458
474
return call_result .StartTransactionPayload (
459
475
id_tag_info = { "status" : AuthorizationStatus .accepted },
460
476
transaction_id = self ._transactionId
@@ -463,7 +479,7 @@ def on_start_transaction(self, connector_id, id_tag, meter_start, **kwargs):
463
479
@on (Action .StopTransaction )
464
480
def on_stop_transaction (self , meter_stop , transaction_id , reason , ** kwargs ):
465
481
self ._metrics ["Stop.Reason" ] = reason
466
- self ._metrics ["Session.Energy" ] = round (int (meter_stop )/ 1000.0 - float (self ._metrics ["Meter.Start" ]), 1 )
482
+ self ._metrics ["Session.Energy" ] = round (int (meter_stop )/ 1000 - float (self ._metrics ["Meter.Start" ]), 1 )
467
483
if ("Current.Import" in self ._metrics ): self ._metrics ["Current.Import" ] = 0
468
484
if ("Power.Active.Import" in self ._metrics ): self ._metrics ["Power.Active.Import" ] = 0
469
485
if ("Power.Reactive.Import" in self ._metrics ): self ._metrics ["Power.Reactive.Import" ] = 0
0 commit comments