OCPP 2.0.1 NotifyReport 메시지

 

NotifyReport 개요

NotifyReport는 충전소가 중앙 시스템(CSMS)에게 GetReport 요청에 대한 응답으로 설정값, 상태 정보, 변수 데이터 등의 보고서를 전송하는 메시지입니다. 이 메시지를 통해 충전소의 세부 구성 정보, 운영 상태, 설정 변수들을 중앙에서 모니터링하고 관리할 수 있어 원격 관리 시스템의 핵심 역할을 합니다.

메시지 구조

Request (충전소 → CSMS)

{
  "requestId": 12345,
  "generatedAt": "2024-08-14T10:30:00.000Z",
  "reportData": [
    {
      "component": {
        "name": "ChargingStation"
      },
      "variable": {
        "name": "AvailabilityState"
      },
      "variableAttribute": [
        {
          "type": "Actual",
          "value": "Available",
          "mutability": "ReadOnly"
        }
      ]
    },
    {
      "component": {
        "name": "EVSE",
        "instance": "1"
      },
      "variable": {
        "name": "Power"
      },
      "variableAttribute": [
        {
          "type": "Actual",
          "value": "7400",
          "unit": "W",
          "mutability": "ReadOnly"
        }
      ]
    }
  ],
  "tbc": false,
  "seqNo": 0
}

Response (CSMS → 충전소)

{}

주요 필드 설명

Request 필드들

필드명 필수여부 타입 설명
requestId 필수 Integer 원본 GetReport 요청의 식별자
generatedAt 필수 DateTime 보고서 생성 시간 (ISO 8601 형식)
reportData 선택사항 Array 보고서 데이터 배열
tbc 선택사항 Boolean 추가 보고서가 이어질지 여부 (To Be Continued)
seqNo 선택사항 Integer 연속된 보고서의 순서 번호

reportData 객체 필드들

필드명 필수여부 타입 설명
component 필수 Object 컴포넌트 정보
variable 필수 Object 변수 정보
variableAttribute 선택사항 Array 변수 속성 배열

component 객체 필드들

필드명 필수여부 타입 설명
name 필수 String 컴포넌트 이름
instance 선택사항 String 컴포넌트 인스턴스 (예: EVSE 번호)
evse 선택사항 Object EVSE 정보

variable 객체 필드들

필드명 필수여부 타입 설명
name 필수 String 변수 이름
instance 선택사항 String 변수 인스턴스

variableAttribute 객체 필드들

필드명 필수여부 타입 설명
type 선택사항 Enum 속성 타입
value 선택사항 String 속성 값
mutability 선택사항 Enum 변경 가능성
persistent 선택사항 Boolean 재부팅 후 유지 여부
constant 선택사항 Boolean 상수 값 여부

type 필드 값

설명
Actual 현재 실제 값
Target 목표 설정값
MinSet 최소 설정 가능값
MaxSet 최대 설정 가능값

mutability 필드 값

설명
ReadOnly 읽기 전용
WriteOnly 쓰기 전용
ReadWrite 읽기/쓰기 가능

실제 사용 예제

예제 1: 충전소 기본 상태 보고서

// Request
{
  "requestId": 100001,
  "generatedAt": "2024-08-14T10:30:00.000Z",
  "reportData": [
    {
      "component": {
        "name": "ChargingStation"
      },
      "variable": {
        "name": "AvailabilityState"
      },
      "variableAttribute": [
        {
          "type": "Actual",
          "value": "Available",
          "mutability": "ReadOnly"
        }
      ]
    }
  ],
  "tbc": false,
  "seqNo": 0
}

// Response
{}

예제 2: EVSE 전력 설정 정보

// Request
{
  "requestId": 100002,
  "generatedAt": "2024-08-14T10:35:00.000Z",
  "reportData": [
    {
      "component": {
        "name": "EVSE",
        "instance": "1"
      },
      "variable": {
        "name": "MaxCurrentOffered"
      },
      "variableAttribute": [
        {
          "type": "Actual",
          "value": "32",
          "unit": "A",
          "mutability": "ReadWrite"
        },
        {
          "type": "MaxSet",
          "value": "32",
          "unit": "A",
          "mutability": "ReadOnly"
        }
      ]
    }
  ],
  "tbc": false,
  "seqNo": 0
}

// Response
{}

예제 3: 분할된 대용량 보고서 (첫 번째 부분)

// Request
{
  "requestId": 100003,
  "generatedAt": "2024-08-14T10:40:00.000Z",
  "reportData": [
    {
      "component": {
        "name": "ChargingStation"
      },
      "variable": {
        "name": "Interval"
      },
      "variableAttribute": [
        {
          "type": "Actual",
          "value": "300",
          "unit": "s",
          "mutability": "ReadWrite",
          "persistent": true
        }
      ]
    }
  ],
  "tbc": true,
  "seqNo": 0
}

// Response
{}

예제 4: 네트워크 설정 보고서

// Request
{
  "requestId": 100004,
  "generatedAt": "2024-08-14T11:00:00.000Z",
  "reportData": [
    {
      "component": {
        "name": "OCPPCommCtrlr"
      },
      "variable": {
        "name": "NetworkConfigurationPriority"
      },
      "variableAttribute": [
        {
          "type": "Actual",
          "value": "0,1,2,3",
          "mutability": "ReadWrite",
          "persistent": true
        }
      ]
    }
  ],
  "tbc": false,
  "seqNo": 0
}

// Response
{}

처리 흐름

  1. 보고서 요청: CSMS가 GetReport 메시지로 특정 정보 요청
  2. 데이터 수집: 충전소가 요청된 컴포넌트/변수 정보 수집
  3. 보고서 생성: 수집된 데이터를 NotifyReport 형식으로 구성
  4. 분할 판단: 데이터 크기에 따라 여러 메시지로 분할 여부 결정
  5. 순차 전송:
    • tbc: true: 추가 보고서가 이어짐
    • tbc: false: 마지막 보고서
  6. CSMS 처리: 중앙 시스템이 보고서 데이터 저장 및 분석
  7. 확인 응답: CSMS가 빈 객체로 수신 확인

중요 포인트

  • 이 메시지는 충전소에서 CSMS로 보내는 보고서 전송 메시지입니다
  • requestId는 원본 GetReport 요청과 매칭하여 어떤 요청에 대한 응답인지 식별합니다
  • 대용량 보고서는 tbcseqNo를 활용하여 여러 메시지로 분할 전송됩니다
  • variableAttribute 배열을 통해 하나의 변수에 대한 다양한 속성을 전달할 수 있습니다
  • mutability 필드로 해당 변수의 변경 가능 여부를 확인할 수 있습니다
  • persistent 필드는 재부팅 후에도 값이 유지되는지를 나타냅니다
  • 실시간 모니터링, 원격 설정, 문제 진단 등 다양한 목적으로 활용됩니다
  • 보고서 생성 시간(generatedAt)을 통해 데이터의 신선도를 확인할 수 있습니다
  • 컴포넌트와 변수의 조합으로 충전소의 모든 설정과 상태를 체계적으로 관리할 수 있습니다

관련 메시지와의 연관성

  • GetReport: 보고서 요청 메시지로 이 알림의 시작점
  • SetVariables: 보고서에서 확인한 변수값 변경에 사용
  • GetVariables: 특정 변수값만 조회할 때 사용

이 메시지를 통해 중앙 시스템은 충전소의 상세한 운영 정보를 수집하고 분석하여 최적화된 충전 서비스를 제공하고, 예방적 유지보수와 효율적인 원격 관리를 실현할 수 있습니다.