RemoteTriggerHandler.cs 3.3 KB

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