Only persist MeterValues for ongoing transactions
All checks were successful
ci/woodpecker/push/docker Pipeline was successful
All checks were successful
ci/woodpecker/push/docker Pipeline was successful
This commit is contained in:
parent
f48a9d71ef
commit
b6207a18c7
|
@ -180,47 +180,50 @@ class ChargePoint(cp):
|
|||
db.add(transaction)
|
||||
elif event_type == str(TransactionEventType.updated):
|
||||
transaction = db.get(DbTransaction, transaction_info["transaction_id"])
|
||||
if "meter_value" in kwargs.keys():
|
||||
for meter_value_entry in kwargs['meter_value']:
|
||||
timestamp = datetime.fromisoformat(meter_value_entry['timestamp'])
|
||||
for sampled_value in meter_value_entry['sampled_value']:
|
||||
db_meter_value = DbMeterValue()
|
||||
db_meter_value.transaction_id = transaction.id
|
||||
db_meter_value.timestamp = timestamp
|
||||
if "measurand" in sampled_value.keys():
|
||||
db_meter_value.measurand = Measurand(sampled_value['measurand'])
|
||||
else:
|
||||
db_meter_value.measurand = Measurand.ENERGY_ACTIVE_IMPORT_REGISTER
|
||||
if "phase" in sampled_value.keys():
|
||||
db_meter_value.phase_type = PhaseType(sampled_value['phase'])
|
||||
if "unit_of_measure" in sampled_value.keys():
|
||||
if "unit" in sampled_value['unit_of_measure']:
|
||||
db_meter_value.unit = sampled_value['unit_of_measure']['unit']
|
||||
else:
|
||||
db_meter_value.unit = "Wh"
|
||||
db_meter_value.value = sampled_value['value']
|
||||
db.add(db_meter_value)
|
||||
if "id_token" in kwargs.keys():
|
||||
if id_token_info.status == AuthorizationStatusType.accepted:
|
||||
transaction.user_id = token_owner_id
|
||||
if transaction != None:
|
||||
if transaction.status == TransactionStatus.ONGOING:
|
||||
if "meter_value" in kwargs.keys():
|
||||
for meter_value_entry in kwargs['meter_value']:
|
||||
timestamp = datetime.fromisoformat(meter_value_entry['timestamp'])
|
||||
for sampled_value in meter_value_entry['sampled_value']:
|
||||
db_meter_value = DbMeterValue()
|
||||
db_meter_value.transaction_id = transaction.id
|
||||
db_meter_value.timestamp = timestamp
|
||||
if "measurand" in sampled_value.keys():
|
||||
db_meter_value.measurand = Measurand(sampled_value['measurand'])
|
||||
else:
|
||||
db_meter_value.measurand = Measurand.ENERGY_ACTIVE_IMPORT_REGISTER
|
||||
if "phase" in sampled_value.keys():
|
||||
db_meter_value.phase_type = PhaseType(sampled_value['phase'])
|
||||
if "unit_of_measure" in sampled_value.keys():
|
||||
if "unit" in sampled_value['unit_of_measure']:
|
||||
db_meter_value.unit = sampled_value['unit_of_measure']['unit']
|
||||
else:
|
||||
db_meter_value.unit = "Wh"
|
||||
db_meter_value.value = sampled_value['value']
|
||||
db.add(db_meter_value)
|
||||
if "id_token" in kwargs.keys():
|
||||
if id_token_info.status == AuthorizationStatusType.accepted:
|
||||
transaction.user_id = token_owner_id
|
||||
elif event_type == str(TransactionEventType.ended):
|
||||
transaction = db.get(DbTransaction, transaction_info["transaction_id"])
|
||||
transaction.status = TransactionStatus.ENDED
|
||||
transaction.ended_at = datetime.fromisoformat(timestamp)
|
||||
transaction.end_reason = TransactionEventTriggerReason(trigger_reason)
|
||||
meter_end=0
|
||||
if "meter_value" in kwargs.keys():
|
||||
for meter_value_entry in kwargs['meter_value']:
|
||||
for sampled_value in meter_value_entry['sampled_value']:
|
||||
if "measurand" in sampled_value.keys():
|
||||
if sampled_value['measurand'] == str(Measurand.ENERGY_ACTIVE_IMPORT_REGISTER):
|
||||
if transaction != None:
|
||||
transaction.status = TransactionStatus.ENDED
|
||||
transaction.ended_at = datetime.fromisoformat(timestamp)
|
||||
transaction.end_reason = TransactionEventTriggerReason(trigger_reason)
|
||||
meter_end=0
|
||||
if "meter_value" in kwargs.keys():
|
||||
for meter_value_entry in kwargs['meter_value']:
|
||||
for sampled_value in meter_value_entry['sampled_value']:
|
||||
if "measurand" in sampled_value.keys():
|
||||
if sampled_value['measurand'] == str(Measurand.ENERGY_ACTIVE_IMPORT_REGISTER):
|
||||
meter_end = sampled_value['value']
|
||||
else:
|
||||
meter_end = sampled_value['value']
|
||||
else:
|
||||
meter_end = sampled_value['value']
|
||||
transaction.meter_end = meter_end
|
||||
if "id_token" in kwargs.keys():
|
||||
if id_token_info.status == AuthorizationStatusType.accepted:
|
||||
transaction.user_id = token_owner_id
|
||||
transaction.meter_end = meter_end
|
||||
if "id_token" in kwargs.keys():
|
||||
if id_token_info.status == AuthorizationStatusType.accepted:
|
||||
transaction.user_id = token_owner_id
|
||||
db.commit()
|
||||
|
||||
if "id_token" in kwargs.keys():
|
||||
|
|
Loading…
Reference in a new issue