Browse Source

Console不顯示未入庫的電樁斷線資訊

Jessica Tseng 2 years ago
parent
commit
7192b69e68

+ 4 - 4
EVCB_OCPP.WSServer/App.config

@@ -7,10 +7,10 @@
     <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
     <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
   </configSections>
   </configSections>
    <connectionStrings>
    <connectionStrings>
-     <add name="ConnectionLogDBContext" connectionString="data source=172.1.2.187\EXPRESS2017_MLOG;initial catalog=StandardOCPP_ConnectionLog;;persist security info=True;user id=sa;password=Ph0930118811;MultipleActiveResultSets=True;App=EntityFramework; Max Pool Size=500" providerName="System.Data.SqlClient" />
-     <add name="MainDBContext" connectionString="data source=172.1.2.187\SQLEXPRESS2017;initial catalog=StandardOCPP_Main;;persist security info=True;user id=sa;password=Ph0930118811;MultipleActiveResultSets=True;App=EntityFramework; Max Pool Size=500" providerName="System.Data.SqlClient" />
-     <add name="MeterValueDBContext" connectionString="data source=172.1.2.187\SQLEXPRESS2017;initial catalog=StandardOCPP_MeterValue;;persist security info=True;user id=sa;password=Ph0930118811;MultipleActiveResultSets=True;App=EntityFramework; Max Pool Size=500" providerName="System.Data.SqlClient" />
-     <add name="WebDBContext" connectionString="data source=172.1.2.187\SQLEXPRESS2017;initial catalog=StandardOCPP_Web;;persist security info=True;user id=sa;password=Ph0930118811;MultipleActiveResultSets=True;App=EntityFramework; Max Pool Size=500" providerName="System.Data.SqlClient" />
+     <add name="ConnectionLogDBContext" connectionString="data source=172.1.2.187;initial catalog=StandardOCPP_ConnectionLog;;persist security info=True;user id=sa;password=Ph0930118811;MultipleActiveResultSets=True;App=EntityFramework; Max Pool Size=500" providerName="System.Data.SqlClient" />
+     <add name="MainDBContext" connectionString="data source=172.1.2.187;initial catalog=StandardOCPP_Main;;persist security info=True;user id=sa;password=Ph0930118811;MultipleActiveResultSets=True;App=EntityFramework; Max Pool Size=500" providerName="System.Data.SqlClient" />
+     <add name="MeterValueDBContext" connectionString="data source=172.1.2.187;initial catalog=StandardOCPP_MeterValue;;persist security info=True;user id=sa;password=Ph0930118811;MultipleActiveResultSets=True;App=EntityFramework; Max Pool Size=500" providerName="System.Data.SqlClient" />
+     <add name="WebDBContext" connectionString="data source=172.1.2.187;initial catalog=StandardOCPP_Web;;persist security info=True;user id=sa;password=Ph0930118811;MultipleActiveResultSets=True;App=EntityFramework; Max Pool Size=500" providerName="System.Data.SqlClient" />
    </connectionStrings>
    </connectionStrings>
   <appSettings>   
   <appSettings>   
     <add key="LocalAuthAPI" value="" />
     <add key="LocalAuthAPI" value="" />

+ 43 - 23
EVCB_OCPP.WSServer/Message/CoreProfileHandler.cs

@@ -291,8 +291,7 @@ namespace EVCB_OCPP.WSServer.Message
                     case Actions.MeterValues:
                     case Actions.MeterValues:
                         {
                         {
 
 
-                            MeterValuesRequest _request = request as MeterValuesRequest;
-                            decimal energy_kwh = 0;
+                            MeterValuesRequest _request = request as MeterValuesRequest;                          
 
 
                             if (_request.meterValue.Count > 0)
                             if (_request.meterValue.Count > 0)
                             {
                             {
@@ -302,36 +301,42 @@ namespace EVCB_OCPP.WSServer.Message
                                 {
                                 {
                                     foreach (var item in _request.meterValue)
                                     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)
                                         foreach (var sampleVaule in item.sampledValue)
                                         {
                                         {
 
 
-                                            decimal value = Convert.ToDecimal(sampleVaule.value);                                          
+                                            decimal value = Convert.ToDecimal(sampleVaule.value);
 
 
                                             string sp = "[dbo].[uspInsertMeterValueRecord] @ChargeBoxId," +
                                             string sp = "[dbo].[uspInsertMeterValueRecord] @ChargeBoxId," +
                          "@ConnectorId,@Value,@CreatedOn,@ContextId,@FormatId,@MeasurandId,@PhaseId,@LocationId,@UnitId,@TransactionId";
                          "@ConnectorId,@Value,@CreatedOn,@ContextId,@FormatId,@MeasurandId,@PhaseId,@LocationId,@UnitId,@TransactionId";
@@ -598,6 +603,20 @@ namespace EVCB_OCPP.WSServer.Message
                                     transaction.Receipt = string.Empty;
                                     transaction.Receipt = string.Empty;
                                     transaction.Cost = session.IsBilling ? -1 : 0;
                                     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();
                                     await db.SaveChangesAsync();
 
 
@@ -651,6 +670,7 @@ namespace EVCB_OCPP.WSServer.Message
                                             {
                                             {
                                                 decimal value = Convert.ToDecimal(sampleVaule.value);
                                                 decimal value = Convert.ToDecimal(sampleVaule.value);
 
 
+
                                                 string sp = "[dbo].[uspInsertMeterValueRecord] @ChargeBoxId," +
                                                 string sp = "[dbo].[uspInsertMeterValueRecord] @ChargeBoxId," +
                              "@ConnectorId,@Value,@CreatedOn,@ContextId,@FormatId,@MeasurandId,@PhaseId,@LocationId,@UnitId,@TransactionId";
                              "@ConnectorId,@Value,@CreatedOn,@ContextId,@FormatId,@MeasurandId,@PhaseId,@LocationId,@UnitId,@TransactionId";
 
 

+ 9 - 9
EVCB_OCPP.WSServer/NLog.config

@@ -28,23 +28,23 @@
     <target xsi:type="File" name="f" fileName="${basedir}/logs/${shortdate}.log"
     <target xsi:type="File" name="f" fileName="${basedir}/logs/${shortdate}.log"
             layout="${longdate} ${uppercase:${level}} ${message}" />
             layout="${longdate} ${uppercase:${level}} ${message}" />
     -->
     -->
-   <target xsi:type="File" name="f" fileName="${basedir}/logs/${shortdate}.log"
-            layout="${longdate} ${uppercase:${level}} ${message}" />
-    <target xsi:type="Console" name="Console"
-            layout="${longdate} ${uppercase:${level}} ${message}" />
+    <target xsi:type="File" name="ws" fileName="${basedir}/logs/WS_${shortdate}.log" layout="${longdate} ${uppercase:${level}} ${message}" />
+    <target xsi:type="File" name="f" fileName="${basedir}/logs/${shortdate}.log" layout="${longdate} ${uppercase:${level}} ${message}" />
+    <target xsi:type="Console" name="Console" layout="${longdate} ${uppercase:${level}} ${message}" />
     <target xsi:type="File" name="auth" fileName="${basedir}/logs/Auth_${shortdate}.log"
     <target xsi:type="File" name="auth" fileName="${basedir}/logs/Auth_${shortdate}.log"
-              layout="${longdate} ${uppercase:${level}} ${message}" />
- 
+             layout="${longdate} ${callsite} ${uppercase:${level}} ${message}" />
   </targets>
   </targets>
   <rules>
   <rules>
     <!-- add your logging rules here -->
     <!-- add your logging rules here -->
-
     <!--
     <!--
     Write all events with minimal level of Debug (So Debug, Info, Warn, Error and Fatal, but not Trace)  to "f"
     Write all events with minimal level of Debug (So Debug, Info, Warn, Error and Fatal, but not Trace)  to "f"
     <logger name="*" minlevel="Debug" writeTo="f" />
     <logger name="*" minlevel="Debug" writeTo="f" />
     -->
     -->
+    <logger name="OCPPServer.*" minlevel="Info" writeTo="ws" />
+    <logger name="SuperWebSocket.*" minlevel="Info" writeTo="ws" />
     <logger name="EVCB_OCPP.WSServer.Service.OuterBusinessService" level="Info" writeTo="auth" />
     <logger name="EVCB_OCPP.WSServer.Service.OuterBusinessService" level="Info" writeTo="auth" />
-    <logger name="*" minlevel="Debug" writeTo="f" />
-    <logger name="*" minlevel="Trace" writeTo="Console" />
+    <logger name="EVCB_OCPP.*" minlevel="Debug" writeTo="f" />
+    <logger name="EVCB_OCPP.*" minlevel="Trace" writeTo="console" />
+
   </rules>
   </rules>
 </nlog>
 </nlog>

+ 1 - 1
EVCB_OCPP.WSServer/Properties/AssemblyInfo.cs

@@ -35,4 +35,4 @@ using System.Runtime.InteropServices;
 [assembly: AssemblyVersion("1.0.5.0")]
 [assembly: AssemblyVersion("1.0.5.0")]
 [assembly: AssemblyFileVersion("1.0.5.0")]
 [assembly: AssemblyFileVersion("1.0.5.0")]
 
 
-[assembly: AssemblyInformationalVersion("819f126")]
+[assembly: AssemblyInformationalVersion("5382176")]

+ 7 - 4
EVCB_OCPP.WSServer/ProtalServer.cs

@@ -406,7 +406,8 @@ namespace EVCB_OCPP.WSServer
 
 
         private void AppServer_NewSessionConnected(ClientData session)
         private void AppServer_NewSessionConnected(ClientData session)
         {
         {
-            Console.WriteLine("++++++++++++++++");
+            logger.Debug(string.Format("{0} NewSessionConnected", session.Path));
+
             try
             try
             {
             {
                 lock (_lockClientDic)
                 lock (_lockClientDic)
@@ -722,7 +723,7 @@ namespace EVCB_OCPP.WSServer
 
 
                                         CheckVersion(session.ChargeBoxId);
                                         CheckVersion(session.ChargeBoxId);
                                         CheckEVSEConfigure(session.ChargeBoxId);
                                         CheckEVSEConfigure(session.ChargeBoxId);
-                                        if (session.CustomerId == new Guid("298918C0-6BB5-421A-88CC-4922F918E85E")|| session.CustomerId == new Guid("9E6BFDCC-09FB-4DAB-A428-43FE507600A3"))
+                                        if (session.CustomerId == new Guid("298918C0-6BB5-421A-88CC-4922F918E85E") || session.CustomerId == new Guid("9E6BFDCC-09FB-4DAB-A428-43FE507600A3"))
                                         {
                                         {
                                             using (var db = new MainDBContext())
                                             using (var db = new MainDBContext())
                                             {
                                             {
@@ -747,7 +748,7 @@ namespace EVCB_OCPP.WSServer
 
 
 
 
                                                 db.SaveChanges();
                                                 db.SaveChanges();
-                                            }                                              
+                                            }
 
 
                                         }
                                         }
 
 
@@ -2053,7 +2054,9 @@ namespace EVCB_OCPP.WSServer
             if (session != null)
             if (session != null)
             {
             {
 
 
-                logger.Trace("RemoveClient[" + session.ChargeBoxId + "]");
+                if (!string.IsNullOrEmpty(session.MachineId))
+                    logger.Trace("RemoveClient[" + session.ChargeBoxId + "]");
+
                 if (session.Connected)
                 if (session.Connected)
                 {
                 {
                     session.Close(CloseReason.ServerShutdown);
                     session.Close(CloseReason.ServerShutdown);

+ 19 - 17
EVCB_OCPP.WSServer/SuperSocket.Protocol/OCPPWSServer.cs

@@ -95,6 +95,22 @@ namespace OCPPServer.Protocol
                 session.MachineId = machine == null ? String.Empty : machine.Id;
                 session.MachineId = machine == null ? String.Empty : machine.Id;
                 isExistedSN = machine == null ? false : true;
                 isExistedSN = machine == null ? false : true;
 
 
+                if (!isExistedSN)
+                {
+                    StringBuilder responseBuilder = new StringBuilder();
+
+                    responseBuilder.AppendFormatWithCrCf(@"HTTP/{0} {1} {2}", "1.1",
+                    (int)HttpStatusCode.NotFound, @"Not Found");
+                  
+                    responseBuilder.AppendWithCrCf();
+                    string sb = responseBuilder.ToString();
+                    byte[] data = Encoding.UTF8.GetBytes(sb);
+                    ((IWebSocketSession)session).SendRawData(data, 0, data.Length);
+
+                    logger.Info(sb);
+                    return false;
+                }
+
                 var configVaule = db.MachineConfiguration.Where(x => x.ChargeBoxId == session.ChargeBoxId && x.ConfigureName == StandardConfiguration.SecurityProfile)
                 var configVaule = db.MachineConfiguration.Where(x => x.ChargeBoxId == session.ChargeBoxId && x.ConfigureName == StandardConfiguration.SecurityProfile)
                                   .Select(x => x.ConfigureSetting).FirstOrDefault();
                                   .Select(x => x.ConfigureSetting).FirstOrDefault();
                 int.TryParse(configVaule, out securityProfile);
                 int.TryParse(configVaule, out securityProfile);
@@ -117,7 +133,7 @@ namespace OCPPServer.Protocol
                 byte[] data = Encoding.UTF8.GetBytes(sb);
                 byte[] data = Encoding.UTF8.GetBytes(sb);
 
 
                 ((IWebSocketSession)session).SendRawData(data, 0, data.Length);
                 ((IWebSocketSession)session).SendRawData(data, 0, data.Length);
-
+                logger.Info(sb);
                 return false;
                 return false;
             }
             }
 
 
@@ -183,27 +199,13 @@ namespace OCPPServer.Protocol
                     byte[] data = Encoding.UTF8.GetBytes(sb);
                     byte[] data = Encoding.UTF8.GetBytes(sb);
 
 
                     ((IWebSocketSession)session).SendRawData(data, 0, data.Length);
                     ((IWebSocketSession)session).SendRawData(data, 0, data.Length);
-
+                    logger.Info(sb);
                     return false;
                     return false;
                 }
                 }
             }
             }
 
 
 
 
-            if (!isExistedSN)
-            {
-                StringBuilder responseBuilder = new StringBuilder();
-
-                responseBuilder.AppendFormatWithCrCf(@"HTTP/{0} {1} {2}", "1.1",
-                (int)HttpStatusCode.NotFound, @"Not Found");
-
-                responseBuilder.AppendWithCrCf();
-                string sb = responseBuilder.ToString();
-                byte[] data = Encoding.UTF8.GetBytes(sb);
-
-                ((IWebSocketSession)session).SendRawData(data, 0, data.Length);
-
-                return false;
-            }
+