|
@@ -291,8 +291,7 @@ namespace EVCB_OCPP.WSServer.Message
|
|
|
case Actions.MeterValues:
|
|
|
{
|
|
|
|
|
|
- MeterValuesRequest _request = request as MeterValuesRequest;
|
|
|
- decimal energy_kwh = 0;
|
|
|
+ MeterValuesRequest _request = request as MeterValuesRequest;
|
|
|
|
|
|
if (_request.meterValue.Count > 0)
|
|
|
{
|
|
@@ -302,36 +301,42 @@ namespace EVCB_OCPP.WSServer.Message
|
|
|
{
|
|
|
foreach (var item in _request.meterValue)
|
|
|
{
|
|
|
-
|
|
|
- decimal meterStart = 0;
|
|
|
- var energy_Register = item.sampledValue.Where(x => x.measurand == Measurand.Energy_Active_Import_Register).FirstOrDefault();
|
|
|
-
|
|
|
- if (energy_Register != null)
|
|
|
+ if (_request.transactionId.HasValue)
|
|
|
{
|
|
|
- decimal energyRegister = decimal.Parse(energy_Register.value);
|
|
|
- energyRegister = energy_Register.unit.Value == UnitOfMeasure.kWh ? decimal.Multiply(energyRegister, 1000) : energyRegister;
|
|
|
+ decimal meterStart = 0;
|
|
|
+ var energy_Register = item.sampledValue.Where(x => x.measurand == Measurand.Energy_Active_Import_Register).FirstOrDefault();
|
|
|
|
|
|
- using (var maindb = new MainDBContext())
|
|
|
+ if (energy_Register != null)
|
|
|
{
|
|
|
- meterStart = maindb.TransactionRecord.Where(x => x.Id == _request.transactionId.Value).Select(x => x.MeterStart).FirstOrDefault();
|
|
|
+ decimal energyRegister = decimal.Parse(energy_Register.value);
|
|
|
+ energyRegister = energy_Register.unit.Value == UnitOfMeasure.kWh ? decimal.Multiply(energyRegister, 1000) : energyRegister;
|
|
|
+
|
|
|
+
|
|
|
+ using (var maindb = new MainDBContext())
|
|
|
+ {
|
|
|
+ meterStart = maindb.TransactionRecord.Where(x => x.Id == _request.transactionId.Value).Select(x => x.MeterStart).FirstOrDefault();
|
|
|
+ }
|
|
|
+
|
|
|
+ logger.Debug(string.Format("TxId:{0} MeterStart:{1} Register:{2} => {3}", _request.transactionId.Value, meterStart, energyRegister, decimal.Subtract(energyRegister, meterStart)));
|
|
|
+
|
|
|
+ item.sampledValue.Add(new SampledValue()
|
|
|
+ {
|
|
|
+ context = ReadingContext.Sample_Periodic,
|
|
|
+ format = ValueFormat.Raw,
|
|
|
+ location = Location.Outlet,
|
|
|
+ phase = item.sampledValue.Where(x => x.measurand == Measurand.Energy_Active_Import_Register).Select(x => x.phase).FirstOrDefault(),
|
|
|
+ unit = UnitOfMeasure.Wh,
|
|
|
+ measurand = Measurand.TotalEnergy,
|
|
|
+ value = decimal.Subtract(energyRegister, meterStart).ToString()
|
|
|
+ });
|
|
|
}
|
|
|
-
|
|
|
- item.sampledValue.Add(new SampledValue()
|
|
|
- {
|
|
|
- context = ReadingContext.Sample_Periodic,
|
|
|
- format = ValueFormat.Raw,
|
|
|
- location = Location.Outlet,
|
|
|
- phase = item.sampledValue.Where(x => x.measurand == Measurand.Energy_Active_Import_Register).Select(x => x.phase).FirstOrDefault(),
|
|
|
- unit = UnitOfMeasure.Wh,
|
|
|
- measurand = Measurand.TotalEnergy,
|
|
|
- value = decimal.Subtract(energyRegister, meterStart).ToString()
|
|
|
- });
|
|
|
+
|
|
|
}
|
|
|
|
|
|
foreach (var sampleVaule in item.sampledValue)
|
|
|
{
|
|
|
|
|
|
- decimal value = Convert.ToDecimal(sampleVaule.value);
|
|
|
+ decimal value = Convert.ToDecimal(sampleVaule.value);
|
|
|
|
|
|
string sp = "[dbo].[uspInsertMeterValueRecord] @ChargeBoxId," +
|
|
|
"@ConnectorId,@Value,@CreatedOn,@ContextId,@FormatId,@MeasurandId,@PhaseId,@LocationId,@UnitId,@TransactionId";
|
|
@@ -598,6 +603,20 @@ namespace EVCB_OCPP.WSServer.Message
|
|
|
transaction.Receipt = string.Empty;
|
|
|
transaction.Cost = session.IsBilling ? -1 : 0;
|
|
|
|
|
|
+ if (_request.transactionData != null && _request.transactionData.Count > 0)
|
|
|
+ {
|
|
|
+ _request.transactionData[0].sampledValue.Add(new SampledValue()
|
|
|
+ {
|
|
|
+ context = ReadingContext.Transaction_End,
|
|
|
+ format = ValueFormat.Raw,
|
|
|
+ location = Location.Outlet,
|
|
|
+ phase = _request.transactionData[0].sampledValue.Where(x => x.context.HasValue).Select(x => x.phase).FirstOrDefault(),
|
|
|
+ unit = UnitOfMeasure.Wh,
|
|
|
+ measurand = Measurand.TotalEnergy,
|
|
|
+ value = decimal.Subtract(transaction.MeterStop, transaction.MeterStart).ToString()
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
await db.SaveChangesAsync();
|
|
|
|
|
@@ -651,6 +670,7 @@ namespace EVCB_OCPP.WSServer.Message
|
|
|
{
|
|
|
decimal value = Convert.ToDecimal(sampleVaule.value);
|
|
|
|
|
|
+
|
|
|
string sp = "[dbo].[uspInsertMeterValueRecord] @ChargeBoxId," +
|
|
|
"@ConnectorId,@Value,@CreatedOn,@ContextId,@FormatId,@MeasurandId,@PhaseId,@LocationId,@UnitId,@TransactionId";
|
|
|
|