report_service.py 5.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. from . import api, handler, VTNService
  2. # ╔══════════════════════════════════════════════════════════════════════════╗
  3. # ║ REPORT SERVICE ║
  4. # ╚══════════════════════════════════════════════════════════════════════════╝
  5. # ┌──────────────────────────────────────────────────────────────────────────┐
  6. # │ The VEN can register its reporting capabilities. │
  7. # │ │
  8. # │ ┌────┐ ┌────┐ │
  9. # │ │VEN │ │VTN │ │
  10. # │ └─┬──┘ └─┬──┘ │
  11. # │ │───────────────oadrRegisterReport(METADATA Report)──────────────▶│ │
  12. # │ │ │ │
  13. # │ │◀ ─ ─ ─ ─oadrRegisteredReport(optional oadrReportRequest) ─ ─ ─ ─│ │
  14. # │ │ │ │
  15. # │ │ │ │
  16. # │ │─────────────oadrCreatedReport(if report requested)─────────────▶│ │
  17. # │ │ │ │
  18. # │ │◀ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ oadrResponse()─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─│ │
  19. # │ │ │ │
  20. # │ │
  21. # └──────────────────────────────────────────────────────────────────────────┘
  22. # ┌──────────────────────────────────────────────────────────────────────────┐
  23. # │ A report can also be canceled │
  24. # │ │
  25. # │ ┌────┐ ┌────┐ │
  26. # │ │VEN │ │VTN │ │
  27. # │ └─┬──┘ └─┬──┘ │
  28. # │ │───────────────oadrRegisterReport(METADATA Report)──────────────▶│ │
  29. # │ │ │ │
  30. # │ │◀ ─ ─ ─ ─oadrRegisteredReport(optional oadrReportRequest) ─ ─ ─ ─│ │
  31. # │ │ │ │
  32. # │ │ │ │
  33. # │ │─────────────oadrCreatedReport(if report requested)─────────────▶│ │
  34. # │ │ │ │
  35. # │ │◀ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ oadrResponse()─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─│ │
  36. # │ │ │ │
  37. # │ │
  38. # └──────────────────────────────────────────────────────────────────────────┘
  39. @api.route('/OpenADR2/Simple/2.0b/EiReport')
  40. class ReportService(VTNService):
  41. @handler('oadrRegisterReport')
  42. async def register_report(self, payload):
  43. """
  44. Register a reporting type.
  45. """
  46. print("Called Registered Report")
  47. response_type = 'oadrRegisteredReport'
  48. response_payload = {"response": {"response_code": 200,
  49. "response_description": "OK",
  50. "request_id": payload['request_id']},
  51. "ven_id": '123'}
  52. return response_type, response_payload
  53. @handler('oadrRequestReport')
  54. async def request_report(self, payload):
  55. """
  56. Provide the VEN with the latest report.
  57. """
  58. print("Called Request Report")
  59. @handler('oadrUpdateReport')
  60. async def update_report(self, payload):
  61. """
  62. Updates an existing report from this VEN in our database.
  63. """
  64. print("Called Update Report")
  65. @handler('oadrCancelReport')
  66. async def cancel_report(self, payload):
  67. """
  68. Cancels a previously received report from this VEN.
  69. """
  70. print("Called Cancel Report")