NotifyReport

Configuration CS->CSMS OCPP 2.0.1

Sent by the Charging Station to deliver the results of a GetBaseReport or GetReport request. May be split across multiple messages for large reports.

Quick Reference

Required Fields

requestId integer

The requestId from the original GetBaseReport or GetReport request

generatedAt string (date-time)

Timestamp when the report was generated

seqNo integer

Sequence number (0-based) for ordering multi-message reports

Optional Fields

tbc boolean

To Be Continued - true if more NotifyReport messages will follow (default: false)

reportData array[ReportDataType]

The actual variable data being reported

Example Payload

{
  "requestId": 1,
  "generatedAt": "2024-01-15T10:00:00Z",
  "seqNo": 0,
  "tbc": false,
  "reportData": [
    {
      "component": {
        "name": "HeartbeatCtrlr"
      },
      "variable": {
        "name": "HeartbeatInterval"
      },
      "variableAttribute": [
        {
          "type": "Actual",
          "value": "60",
          "mutability": "ReadWrite"
        }
      ]
    }
  ]
}

Example Full Frame

[
  2,
  "msg-001",
  "NotifyReport",
  {
    "requestId": 1,
    "generatedAt": "2024-01-15T10:00:00Z",
    "seqNo": 0,
    "tbc": false,
    "reportData": [
      {
        "component": {
          "name": "HeartbeatCtrlr"
        },
        "variable": {
          "name": "HeartbeatInterval"
        },
        "variableAttribute": [
          {
            "type": "Actual",
            "value": "60",
            "mutability": "ReadWrite"
          }
        ]
      }
    ]
  }
]

Format: [MessageType, MessageId, Action, Payload]

Overview

NotifyReport delivers variable data in response to GetBaseReport or GetReport. For large stations with many variables, the report is paginated across multiple NotifyReport messages using seqNo and tbc.

When to Send

  • In response to GetBaseReport
  • In response to GetReport
  • Always as an unsolicited response (no separate CALL, it’s a response to the CSMS’s request ID)

Expected Response

Empty response {} — the CSMS acknowledges each NotifyReport message.

Usage Notes

  • tbc: true means more messages are coming for the same requestId
  • tbc: false (or absent) signals the last message in the sequence
  • The CSMS should collect all messages with the same requestId and reassemble the full report
  • reportData can be absent in the final message if there are no more items

Testing Tips

  • Verify the CSMS correctly reconstructs a multi-message report
  • Verify seqNo increments correctly across messages
  • Test with an empty final reportData (last chunk may be empty)

Common Errors

TypeConstraintViolation

Cause: seqNo does not start at 0

Solution: seqNo must start at 0 and increment by 1 for each subsequent message in the same report