소스 검색

Fix Energy 累積讀數參數欄位 改用 MeasurandId=52 TotalEnergy

Before 2022/06/07: 後台使用 Energy_Active_Import_Interval 當作當次充電Energy 累積讀數,實際上其參數為 兩次Meter 間隔 EX: M2-M1
Solution: Energy_Active_Import_Register - meterstop
Jessica Tseng 2 년 전
부모
커밋
28264a845b

+ 6 - 5
EVCB_OCPP.WEBAPI/Controllers/Version1/CPOController.cs

@@ -1121,7 +1121,7 @@ namespace EVCB_OCPP.WEBAPI.Controllers.Version1
                    Measurand.Current_Import,
                    Measurand.SoC,
                    Measurand.Power_Active_Import,
-                   Measurand.Energy_Active_Import_Interval,
+                   Measurand.TotalEnergy,
                    Measurand.ChargingCost
                 }, SessionId, IdTag);
 
@@ -1139,7 +1139,7 @@ namespace EVCB_OCPP.WEBAPI.Controllers.Version1
                     {
 
 
-                        string currencyText = string.IsNullOrEmpty(transactionData.Fee) ? "TWD" : transactionData.Fee.Split('|')[1];
+                        string currencyText = string.IsNullOrEmpty(transactionData.Fee) ? "TWD" : transactionData.Fee.Remove(0, transactionData.Fee.Length - 3); 
 
                         _innerData.Add(new ActiveSession()
                         {
@@ -1153,8 +1153,8 @@ namespace EVCB_OCPP.WEBAPI.Controllers.Version1
                             Power_Format = transactionData.MeterValues == null ? UnitOfMeasure.W.ToString() : transactionData.MeterValues.Where(x => x.Measurand == Packet.Messages.SubTypes.Measurand.Power_Active_Import).Select(x => x.Unit.ToString()).FirstOrDefault(),
                             Current = transactionData.MeterValues == null ? "0" : transactionData.MeterValues.Where(x => x.Measurand == Packet.Messages.SubTypes.Measurand.Current_Import).Select(x => x.Value).FirstOrDefault(),
                             Current_Format = transactionData.MeterValues == null ? UnitOfMeasure.A.ToString() : transactionData.MeterValues.Where(x => x.Measurand == Packet.Messages.SubTypes.Measurand.Current_Import).Select(x => x.Unit.ToString()).FirstOrDefault(),
-                            Energy = transactionData.MeterValues == null ? "0" : transactionData.MeterValues.Where(x => x.Measurand == Packet.Messages.SubTypes.Measurand.Energy_Active_Import_Interval).Select(x => x.Value).FirstOrDefault(),
-                            Energy_Format = transactionData.MeterValues == null ? UnitOfMeasure.Wh.ToString() : transactionData.MeterValues.Where(x => x.Measurand == Packet.Messages.SubTypes.Measurand.Energy_Active_Import_Interval).Select(x => x.Unit.ToString()).FirstOrDefault(),
+                            Energy = transactionData.MeterValues == null ? "0" : transactionData.MeterValues.Where(x => x.Measurand == Packet.Messages.SubTypes.Measurand.TotalEnergy).Select(x => x.Value).FirstOrDefault(),
+                            Energy_Format = transactionData.MeterValues == null ? UnitOfMeasure.Wh.ToString() : transactionData.MeterValues.Where(x => x.Measurand == Packet.Messages.SubTypes.Measurand.TotalEnergy).Select(x => x.Unit.ToString()).FirstOrDefault(),
                             Voltage = transactionData.MeterValues == null ? "0" : transactionData.MeterValues.Where(x => x.Measurand == Packet.Messages.SubTypes.Measurand.Voltage).Select(x => x.Value).FirstOrDefault(),
                             Voltage_Format = transactionData.MeterValues == null ? UnitOfMeasure.V.ToString() : transactionData.MeterValues.Where(x => x.Measurand == Packet.Messages.SubTypes.Measurand.Voltage).Select(x => x.Unit.ToString()).FirstOrDefault(),
                             SOC = transactionData.MeterValues == null ? "0" : transactionData.MeterValues.Where(x => x.Measurand == Packet.Messages.SubTypes.Measurand.SoC).Select(x => x.Unit.ToString()).FirstOrDefault() == null ? null : transactionData.MeterValues.Where(x => x.Measurand == Packet.Messages.SubTypes.Measurand.SoC).Select(x => x.Value).FirstOrDefault(),
@@ -1164,7 +1164,8 @@ namespace EVCB_OCPP.WEBAPI.Controllers.Version1
                         });
                         decimal energy = decimal.Parse(_innerData[_innerData.Count - 1].Energy);
                         energy = _innerData[_innerData.Count - 1].Energy_Format == UnitOfMeasure.Wh.ToString() ? Decimal.Divide(energy, 1000) : energy;
-
+                        _innerData[_innerData.Count - 1].Energy = energy.ToString("0.000");
+                        _innerData[_innerData.Count - 1].Energy_Format = UnitOfMeasure.kWh.ToString();
                     }
                     var _innerResponse = new { Sessions = _innerData };
                     result.Data = JsonConvert.SerializeObject(_innerResponse, EVCBConfiguration.JSONSERIALIZER_FORMAT);

+ 7 - 7
EVCB_OCPP.WEBAPI/Controllers/Version2/V2_CPOController.cs

@@ -291,9 +291,9 @@ namespace EVCB_OCPP.WEBAPI.Controllers.Version2
                     _service = new ChargePoint201Service();
                 }
 
-                if (!string.IsNullOrEmpty(request.ChargeBoxId) && request.ChargeBoxId.Length <= 25
-                   && _service.GetNumberofConnectors(request.ChargeBoxId) <= request.ConnectorId && request.ConnectorId > 0
-                    && !string.IsNullOrEmpty(request.Token) && request.Token.Length <= 20)
+                if (!string.IsNullOrEmpty(request.ChargeBoxId) && request.ChargeBoxId.Length <= 25 && (!request.ConnectorId.HasValue
+               || (_service.GetNumberofConnectors(request.ChargeBoxId) >= request.ConnectorId && request.ConnectorId > 0))
+                && !string.IsNullOrEmpty(request.Token) && request.Token.Length <= 20)
                 {
 
                     InternalHttpClient _client = new InternalHttpClient();
@@ -972,7 +972,7 @@ namespace EVCB_OCPP.WEBAPI.Controllers.Version2
                    Measurand.Current_Import,
                    Measurand.SoC,
                    Measurand.Power_Active_Import,
-                   Measurand.Energy_Active_Import_Interval,
+                   Measurand.TotalEnergy,
                    Measurand.ChargingCost
                 }, SessionId, IdTag);
 
@@ -988,7 +988,7 @@ namespace EVCB_OCPP.WEBAPI.Controllers.Version2
 
                     foreach (var transactionData in transactionDatas)
                     {
-                        string currencyText = transactionData.Fee.Split('|')[1];
+                        string currencyText = string.IsNullOrEmpty(transactionData.Fee)?"":transactionData.Fee.Split('|')[1];
 
                         _innerData.Add(new ActiveSession()
                         {
@@ -1002,8 +1002,8 @@ namespace EVCB_OCPP.WEBAPI.Controllers.Version2
                             Power_Format = transactionData.MeterValues == null ? UnitOfMeasure.W.ToString() : transactionData.MeterValues.Where(x => x.Measurand == Packet.Messages.SubTypes.Measurand.Power_Active_Import).Select(x => x.Unit.ToString()).FirstOrDefault(),
                             Current = transactionData.MeterValues == null ? "0" : transactionData.MeterValues.Where(x => x.Measurand == Packet.Messages.SubTypes.Measurand.Current_Import).Select(x => x.Value).FirstOrDefault(),
                             Current_Format = transactionData.MeterValues == null ? UnitOfMeasure.A.ToString() : transactionData.MeterValues.Where(x => x.Measurand == Packet.Messages.SubTypes.Measurand.Current_Import).Select(x => x.Unit.ToString()).FirstOrDefault(),
-                            Energy = transactionData.MeterValues == null ? "0" : transactionData.MeterValues.Where(x => x.Measurand == Packet.Messages.SubTypes.Measurand.Energy_Active_Import_Interval).Select(x => x.Value).FirstOrDefault(),
-                            Energy_Format = transactionData.MeterValues == null ? UnitOfMeasure.Wh.ToString() : transactionData.MeterValues.Where(x => x.Measurand == Packet.Messages.SubTypes.Measurand.Energy_Active_Import_Interval).Select(x => x.Unit.ToString()).FirstOrDefault(),
+                            Energy = transactionData.MeterValues == null ? "0" : transactionData.MeterValues.Where(x => x.Measurand == Packet.Messages.SubTypes.Measurand.TotalEnergy).Select(x => x.Value).FirstOrDefault(),
+                            Energy_Format = transactionData.MeterValues == null ? UnitOfMeasure.Wh.ToString() : transactionData.MeterValues.Where(x => x.Measurand == Packet.Messages.SubTypes.Measurand.TotalEnergy).Select(x => x.Unit.ToString()).FirstOrDefault(),
                             Voltage = transactionData.MeterValues == null ? "0" : transactionData.MeterValues.Where(x => x.Measurand == Packet.Messages.SubTypes.Measurand.Voltage).Select(x => x.Value).FirstOrDefault(),
                             Voltage_Format = transactionData.MeterValues == null ? UnitOfMeasure.V.ToString() : transactionData.MeterValues.Where(x => x.Measurand == Packet.Messages.SubTypes.Measurand.Voltage).Select(x => x.Unit.ToString()).FirstOrDefault(),
                             SOC = transactionData.MeterValues == null ? "0" : transactionData.MeterValues.Where(x => x.Measurand == Packet.Messages.SubTypes.Measurand.SoC).Select(x => x.Unit.ToString()).FirstOrDefault() == null ? null : transactionData.MeterValues.Where(x => x.Measurand == Packet.Messages.SubTypes.Measurand.SoC).Select(x => x.Value).FirstOrDefault(),

+ 3 - 3
EVCB_OCPP.WEBAPI/Controllers/Version2/ocpp16/OCPP16_CPOController.cs

@@ -1053,7 +1053,7 @@ namespace EVCB_OCPP.WEBAPI.Controllers.Version2.ocpp16
                     Packet.Messages.SubTypes.Measurand.Current_Import,
                     Packet.Messages.SubTypes.Measurand.SoC,
                     Packet.Messages.SubTypes.Measurand.Power_Active_Import,
-                    Packet.Messages.SubTypes.Measurand.Energy_Active_Import_Interval
+                    Packet.Messages.SubTypes.Measurand.TotalEnergy
                 }, SessionId, IdTag);
 
                 if (transactionDatas == null)
@@ -1081,8 +1081,8 @@ namespace EVCB_OCPP.WEBAPI.Controllers.Version2.ocpp16
                             Power_Format = transactionData.MeterValues == null ? UnitOfMeasure.W.ToString() : transactionData.MeterValues.Where(x => x.Measurand == Packet.Messages.SubTypes.Measurand.Power_Active_Import).Select(x => x.Unit.ToString()).FirstOrDefault(),
                             Current = transactionData.MeterValues == null ? "0" : transactionData.MeterValues.Where(x => x.Measurand == Packet.Messages.SubTypes.Measurand.Current_Import).Select(x => x.Value).FirstOrDefault(),
                             Current_Format = transactionData.MeterValues == null ? UnitOfMeasure.A.ToString() : transactionData.MeterValues.Where(x => x.Measurand == Packet.Messages.SubTypes.Measurand.Current_Import).Select(x => x.Unit.ToString()).FirstOrDefault(),
-                            Energy = transactionData.MeterValues == null ? "0" : transactionData.MeterValues.Where(x => x.Measurand == Packet.Messages.SubTypes.Measurand.Energy_Active_Import_Interval).Select(x => x.Value).FirstOrDefault(),
-                            Energy_Format = transactionData.MeterValues == null ? UnitOfMeasure.Wh.ToString() : transactionData.MeterValues.Where(x => x.Measurand == Packet.Messages.SubTypes.Measurand.Energy_Active_Import_Interval).Select(x => x.Unit.ToString()).FirstOrDefault(),
+                            Energy = transactionData.MeterValues == null ? "0" : transactionData.MeterValues.Where(x => x.Measurand == Packet.Messages.SubTypes.Measurand.TotalEnergy).Select(x => x.Value).FirstOrDefault(),
+                            Energy_Format = transactionData.MeterValues == null ? UnitOfMeasure.Wh.ToString() : transactionData.MeterValues.Where(x => x.Measurand == Packet.Messages.SubTypes.Measurand.TotalEnergy).Select(x => x.Unit.ToString()).FirstOrDefault(),
                             Voltage = transactionData.MeterValues == null ? "0" : transactionData.MeterValues.Where(x => x.Measurand == Packet.Messages.SubTypes.Measurand.Voltage).Select(x => x.Value).FirstOrDefault(),
                             Voltage_Format = transactionData.MeterValues == null ? UnitOfMeasure.V.ToString() : transactionData.MeterValues.Where(x => x.Measurand == Packet.Messages.SubTypes.Measurand.Voltage).Select(x => x.Unit.ToString()).FirstOrDefault(),
                             SOC = transactionData.MeterValues == null ? "0" : transactionData.MeterValues.Where(x => x.Measurand == Packet.Messages.SubTypes.Measurand.SoC).Select(x => x.Unit.ToString()).FirstOrDefault() == null ? null : transactionData.MeterValues.Where(x => x.Measurand == Packet.Messages.SubTypes.Measurand.SoC).Select(x => x.Value).FirstOrDefault(),

BIN
EVCB_OCPP.WEBAPI/Dll/EVCB_OCPP.Packet.dll


+ 3 - 3
EVCB_OCPP.WEBAPI/Properties/AssemblyInfo.cs

@@ -31,6 +31,6 @@ using System.Runtime.InteropServices;
 //
 // 您可以指定所有值或預設修訂和組件數目
 // 指定為預設值:
-[assembly: AssemblyVersion("2.0.0.0")]
-[assembly: AssemblyFileVersion("2.0.0.0")]
-[assembly: AssemblyInformationalVersion("de40cb5")]
+[assembly: AssemblyVersion("2.0.1.0")]
+[assembly: AssemblyFileVersion("2.0.1.0")]
+[assembly: AssemblyInformationalVersion("faa6726")]