Robert 11 сар өмнө
parent
commit
8ca2932cd2

+ 8 - 8
EVCB_OCPP.WSServer/HostedProtalServer.cs

@@ -131,14 +131,14 @@ namespace EVCB_OCPP.WSServer
                         .RepeatForever())
                 );
 
-                q.ScheduleJob<StationConfigPollingJob>(trigger =>
-                    trigger
-                    .WithIdentity("StationConfigPollingJobTrigger")
-                    .StartNow()
-                    .WithSimpleSchedule(x => x
-                        .WithIntervalInSeconds(30)
-                        .RepeatForever())
-                );
+                //q.ScheduleJob<StationConfigPollingJob>(trigger =>
+                //    trigger
+                //    .WithIdentity("StationConfigPollingJobTrigger")
+                //    .StartNow()
+                //    .WithSimpleSchedule(x => x
+                //        .WithIntervalInSeconds(30)
+                //        .RepeatForever())
+                //);
 
                 //q.ScheduleJob<GoogleCheckJob>(trigger =>
                 //    trigger

+ 24 - 20
EVCB_OCPP.WSServer/Message/CoreProfileHandler.cs

@@ -233,27 +233,23 @@ internal partial class ProfileHandler
 						BootNotificationRequest _request = request as BootNotificationRequest;
 						int heartbeat_interval = GlobalConfig.GetHEARTBEAT_INTERVAL();
 						//var _machine = db.Machine.FirstOrDefault(x => x.ChargeBoxId == session.ChargeBoxId);
-						Machine _machine = new();
-						_machine.ChargeBoxSerialNumber = string.IsNullOrEmpty(_request.chargeBoxSerialNumber) ? string.Empty : _request.chargeBoxSerialNumber;
-						_machine.ChargePointSerialNumber = string.IsNullOrEmpty(_request.chargePointSerialNumber) ? string.Empty : _request.chargePointSerialNumber;
-						_machine.ChargePointModel = string.IsNullOrEmpty(_request.chargePointModel) ? string.Empty : _request.chargePointModel;
-						_machine.ChargePointVendor = string.IsNullOrEmpty(_request.chargePointVendor) ? string.Empty : _request.chargePointVendor;
-						_machine.FwCurrentVersion = string.IsNullOrEmpty(_request.firmwareVersion) ? string.Empty : _request.firmwareVersion;
-						_machine.Iccid = string.IsNullOrEmpty(_request.iccid) ? string.Empty : _request.iccid;
-						//_machine.Iccid = DateTime.UtcNow.ToString("yy-MM-dd HH:mm");
-						_machine.Imsi = string.IsNullOrEmpty(_request.imsi) ? string.Empty : _request.imsi;
-						_machine.MeterSerialNumber = string.IsNullOrEmpty(_request.meterSerialNumber) ? string.Empty : _request.meterSerialNumber;
-						_machine.MeterType = string.IsNullOrEmpty(_request.meterType) ? string.Empty : _request.meterType;
-
-						await mainDbService.UpdateMachineBasicInfo(session.ChargeBoxId, _machine);
-
-						var configValue = await mainDbService.GetMachineHeartbeatInterval(session.ChargeBoxId);
-
-						if (configValue != null)
+
+						if (session.BootStatus == BootStatus.Startup)
 						{
-							int.TryParse(configValue, out heartbeat_interval);
-							heartbeat_interval = heartbeat_interval == 0 ? GlobalConfig.GetHEARTBEAT_INTERVAL() : heartbeat_interval;
-						}
+                            Machine _machine = new();
+                            _machine.ChargeBoxSerialNumber = string.IsNullOrEmpty(_request.chargeBoxSerialNumber) ? string.Empty : _request.chargeBoxSerialNumber;
+                            _machine.ChargePointSerialNumber = string.IsNullOrEmpty(_request.chargePointSerialNumber) ? string.Empty : _request.chargePointSerialNumber;
+                            _machine.ChargePointModel = string.IsNullOrEmpty(_request.chargePointModel) ? string.Empty : _request.chargePointModel;
+                            _machine.ChargePointVendor = string.IsNullOrEmpty(_request.chargePointVendor) ? string.Empty : _request.chargePointVendor;
+                            _machine.FwCurrentVersion = string.IsNullOrEmpty(_request.firmwareVersion) ? string.Empty : _request.firmwareVersion;
+                            _machine.Iccid = string.IsNullOrEmpty(_request.iccid) ? string.Empty : _request.iccid;
+                            //_machine.Iccid = DateTime.UtcNow.ToString("yy-MM-dd HH:mm");
+                            _machine.Imsi = string.IsNullOrEmpty(_request.imsi) ? string.Empty : _request.imsi;
+                            _machine.MeterSerialNumber = string.IsNullOrEmpty(_request.meterSerialNumber) ? string.Empty : _request.meterSerialNumber;
+                            _machine.MeterType = string.IsNullOrEmpty(_request.meterType) ? string.Empty : _request.meterType;
+
+                            await mainDbService.UpdateMachineBasicInfo(session.ChargeBoxId, _machine);
+                        }
 
 						int toReturnInterval = 5;
 						RegistrationStatus toReturnRegistrationStatus = RegistrationStatus.Rejected ;
@@ -267,6 +263,14 @@ internal partial class ProfileHandler
                                 break;
                             case BootStatus.Pending:
                             case BootStatus.Accepted:
+                                var configValue = await mainDbService.GetMachineHeartbeatInterval(session.ChargeBoxId);
+
+                                if (configValue != null)
+                                {
+                                    int.TryParse(configValue, out heartbeat_interval);
+                                    heartbeat_interval = heartbeat_interval == 0 ? GlobalConfig.GetHEARTBEAT_INTERVAL() : heartbeat_interval;
+                                }
+
                                 toReturnInterval = heartbeat_interval;
                                 toReturnRegistrationStatus = RegistrationStatus.Accepted;
                                 session.BootStatus = BootStatus.Accepted;

+ 6 - 6
EVCB_OCPP.WSServer/ProtalServer.cs

@@ -723,7 +723,7 @@ namespace EVCB_OCPP.WSServer
                                     session.ChargePointVendor = bootNotificationRequest.chargePointVendor;
 
                                     if (session.BootStatus == BootStatus.Startup
-                                        && bootSemaphore.WaitOne(0)
+                                        //&& bootSemaphore.WaitOne(0)
                                         )
                                     {
                                         session.BootStatus = BootStatus.Initializing;
@@ -1070,11 +1070,11 @@ namespace EVCB_OCPP.WSServer
             }
 
             //foreach (var initFunction in InitActions)
-            for (var index = 0; index < InitActions.Count; index++)
-            {
-                var initFunction = InitActions[index];
-                await initFunction(session, session.DisconnetCancellationToken);
-            }
+            //for (var index = 0; index < InitActions.Count; index++)
+            //{
+            //    var initFunction = InitActions[index];
+            //    await initFunction(session, session.DisconnetCancellationToken);
+            //}
             //await StationConfigService?.CheckAndUpdateEvseConfig(session, session.DisconnetCancellationToken);
         }
 

+ 16 - 7
EVCB_OCPP.WSServer/Service/ConfirmWaitingMessageSerevice.cs

@@ -212,19 +212,28 @@ namespace EVCB_OCPP.WSServer.Service
 
         internal async Task<object> WaitResultAsync(string msgId, int maxWaitSec = 65000, CancellationToken token = default)
         {
-            if (!needConfirmPacketList.Select(x=>x.RequestId).Contains(msgId))
+            //if (!needConfirmPacketList.Select(x=>x.RequestId).Contains(msgId))
+            //{
+            //    var checkResult =  await mainDbService.TryGetResponseFromDb(msgId, token);
+            //    if (checkResult is not null)
+            //    {
+            //        return checkResult;
+            //    }
+            //}
+
+            var waiObj = new MessageResultWaitObject();
+            asyncWaitingTasks.Add(msgId, waiObj);
+            var task = waiObj.Lock.WaitAsync(token);
+            var completedTask = await Task.WhenAny(task, Task.Delay(180_000, token));
+            if (completedTask != task)
             {
-                var checkResult =  await mainDbService.TryGetResponseFromDb(msgId, token);
+                logger.LogWarning("wait {msg} time out", msgId);
+                var checkResult = await mainDbService.TryGetResponseFromDb(msgId, token);
                 if (checkResult is not null)
                 {
                     return checkResult;
                 }
             }
-
-            var waiObj = new MessageResultWaitObject();
-            asyncWaitingTasks.Add(msgId, waiObj);
-            var task = waiObj.Lock.WaitAsync(token);
-            var completedTask = await Task.WhenAny(task, Task.Delay(180_000));
             return waiObj.Result.Message;
         }
 

+ 1 - 1
EVCB_OCPP.WSServer/Service/StationConfigService.cs

@@ -115,7 +115,7 @@ public class StationConfigService
     private async Task UpdateStationChangedEvses()
     {
         List<string> modifiedEvses = new();
-        var connectedEvses = portalServer.GetClientDic().Values.ToList();
+        var connectedEvses = portalServer.GetClientDic().Values.Where(x => x.IsCheckIn).ToList();
         var evseStationPair = await webDbService.GetEvseStationPair(connectedEvses.Select(x => x.ChargeBoxId).ToList());
         foreach (var evse in connectedEvses)
         {