RemoteTriggerHandler.cs 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. using EVCB_OCPP.Domain;
  2. using EVCB_OCPP.Packet.Features;
  3. using EVCB_OCPP.Packet.Messages;
  4. using EVCB_OCPP.Packet.Messages.RemoteTrigger;
  5. using OCPPServer.Protocol;
  6. using System;
  7. using System.Linq;
  8. using System.Threading.Tasks;
  9. namespace EVCB_OCPP.WSServer.Message
  10. {
  11. internal partial class ProfileHandler
  12. {
  13. internal async Task<MessageResult> ExecuteRemoteTriggerConfirm(Actions action, ClientData session, IConfirmation confirm, string requestId)
  14. {
  15. MessageResult result = new MessageResult() { Success = true };
  16. switch (action)
  17. {
  18. case Actions.TriggerMessage:
  19. {
  20. TriggerMessageConfirmation _confirm = confirm as TriggerMessageConfirmation;
  21. TriggerMessageRequest _request = _confirm.GetRequest() as TriggerMessageRequest;
  22. using (var db = await maindbContextFactory.CreateDbContextAsync())
  23. {
  24. var operation = db.MachineOperateRecord.Where(x => x.SerialNo == requestId &&
  25. x.ChargeBoxId == session.ChargeBoxId && x.Status == 0).FirstOrDefault();
  26. if (operation != null)
  27. {
  28. operation.FinishedOn = DateTime.UtcNow;
  29. operation.Status = 1;//電樁有回覆
  30. operation.EVSE_Status = (int)_confirm.status;//OK
  31. operation.EVSE_Value = _confirm.status.ToString();
  32. await db.SaveChangesAsync();
  33. }
  34. }
  35. }
  36. break;
  37. default:
  38. {
  39. Console.WriteLine(string.Format("Not Implement {0} Logic", confirm.GetType().ToString().Replace("OCPPPackage.Messages.RemoteTrigger.", "")));
  40. }
  41. break;
  42. }
  43. return result;
  44. }
  45. internal async Task<MessageResult> ReceivedRemoteTriggerError(Actions action, string errorMsg, ClientData session, string requestId)
  46. {
  47. MessageResult result = new MessageResult() { Success = true };
  48. switch (action)
  49. {
  50. case Actions.TriggerMessage:
  51. {
  52. using (var db = await maindbContextFactory.CreateDbContextAsync())
  53. {
  54. var operation = db.MachineOperateRecord.Where(x => x.SerialNo == requestId &&
  55. x.ChargeBoxId == session.ChargeBoxId && x.Status == 0).FirstOrDefault();
  56. if (operation != null)
  57. {
  58. operation.FinishedOn = DateTime.UtcNow;
  59. operation.Status = 1;//電樁有回覆
  60. operation.EVSE_Status = (int)255;//錯誤
  61. operation.EVSE_Value = errorMsg;
  62. await db.SaveChangesAsync();
  63. }
  64. }
  65. }
  66. break;
  67. default:
  68. {
  69. Console.WriteLine(string.Format("Not Implement {0} Logic", action));
  70. }
  71. break;
  72. }
  73. return result;
  74. }
  75. }
  76. }