본문으로 건너뛰기

Report Components

본 문서는 충전기가 리포트 알림(NotifyReport)을 통해 CSMS에 보고하는 인벤토리 및 상태 컴포넌트-변수 규격을 정의합니다.

Custom Variables가 CSMS와 충전기 간에 GetVariables / SetVariables로 주고받는 운영 설정값이라면, 본 문서의 항목은 충전기가 자신의 하드웨어 및 소프트웨어 구성을 CSMS에 보고하는 기준 데이터입니다. 따라서 사용되는 메시지가 구분되며, CSMS는 수신된 값을 충전기 자산·구성 정보의 마스터 데이터로 관리합니다.

컴포넌트보고 내용
공통 변수컴포넌트별 펌웨어 버전
Connector커넥터별 커넥터 타입
CustomSystemInfo제어 PC의 운영체제·메인보드 정보
CustomNetworkInterface제어 PC의 네트워크 어댑터 정보
CustomStorage제어 PC의 저장 장치 정보

보고 규약​

이 부록의 모든 항목은 같은 메시지와 같은 규칙으로 보고합니다.

보고 절차​

CSMS가 리포트 조회(GetReport)로 대상을 지정하면, 충전기는 먼저 status 로 수용 여부를 응답하고 이어서 NotifyReport 로 실제 데이터를 전송합니다.

  • OCPP v1.6: DataTransfer:com.skelectlink:GetReport / DataTransfer:com.skelectlink:NotifyReport 로 payload를 래핑합니다.
  • OCPP v2.1: 표준 GetReport / NotifyReport 메시지 본문에 동일한 payload를 직접 담습니다.
GetReport 수신 경로는 필수입니다

requestId 는 보고를 유발한 GetReport 의 값을 그대로 되돌려주는 상관(correlation) 값입니다. OCPP 표준에는 자발 보고를 위한 예약 requestId 가 없으므로, 충전기는 GetReport 를 수신했을 때 그 requestId 로 응답하는 경로를 반드시 구현해야 합니다.

CSMS는 하위 호환을 위해 대응되는 GetReport 가 없는 보고도 거부하지 않고 수신하지만, 상관 관계를 추적할 수 없는 보조 경로이므로 신규 연동에서는 사용하지 않습니다.

보고 시점​

CSMS는 필요한 시점에 GetReport 를 발행합니다. 충전기가 접속할 때마다 자동으로 발행하지는 않습니다.

이 부록의 값은 대부분 자주 바뀌지 않는 준정적(quasi-static) 데이터입니다. 부팅할 때마다 전체를 다시 보내지 말고 다음 시점에만 전송합니다.

  • CSMS가 GetReport 를 발행했을 때 (필수)
  • 보고 대상 값이 실제로 변경되었을 때 (권장)

대상 식별​

CSMS는 아래 네 값의 조합을 하나의 변수로 취급합니다.

필드설명
component.name컴포넌트 이름
component.instance같은 컴포넌트가 여러 개일 때 이를 구분하는 인스턴스 이름
component.evseEVSE 번호(id)와 커넥터 번호(connectorId)
variable.name변수 이름
variableAttribute[].type속성 종류. 이 부록의 변수는 모두 Actual 입니다

컴포넌트 이름은 OCPP 2.x 표준 컴포넌트 명칭을 우선 사용하고, 표준 목록에 없는 컴포넌트는 사전에 협의된 이름을 사용합니다.

같은 컴포넌트가 여러 개면 instance 를 반드시 채웁니다

네트워크 어댑터가 두 장인데 둘 다 component.instance 없이 같은 컴포넌트 이름으로 보고하면, CSMS는 두 보고를 같은 변수로 보고 나중에 도착한 값이 앞의 값을 덮어씁니다. 커넥터 단위 항목도 마찬가지로 component.evse.connectorId 로 구분해야 합니다.

값 제약​

  • 변수 값(variableAttribute[].value)은 최대 1,000자입니다. 이를 넘는 값은 저장 시 잘립니다.
  • 한 변수에는 값 하나만 담습니다. 여러 항목을 JSON 문자열로 직렬화해 한 변수에 몰아 담지 않습니다. 항목마다 변수를 나누어 보고해야 CSMS에서 항목별 조회와 변경 추적이 가능합니다.
  • 이 부록의 변수는 모두 mutability: "ReadOnly" 로 보고합니다. CSMS가 SetVariables 로 쓰지 않습니다.
  • 부품을 교체하지 않는 한 바뀌지 않는 식별자는 constant: true 로 보고합니다.
  • attributeType 을 생략하면 OCPP 기본값인 Actual 로 해석합니다.

생략한 필드의 처리​

갱신 보고 — CSMS에 이미 그 변수가 있으면 value, mutability, dataType, persistent, constant 를 생략해도 저장된 기존 값을 그대로 유지합니다. 보고에서 빠졌다는 이유로 기본값으로 되돌리지 않습니다.

첫 보고 — CSMS에 그 변수가 아직 없으면 유지할 기존 값이 없으므로 아래 기본값이 적용됩니다.

필드생략 시 저장되는 값
mutabilityReadWrite
dataTypestring
persistenttrue
constantfalse
첫 보고에서는 생략하지 마십시오

이 부록의 컴포넌트를 처음 연동할 때는 모든 변수가 첫 보고에 해당합니다. mutability 를 생략하면 ReadWrite 로 저장되어 읽기 전용이라는 정의와 어긋나고, dataType 을 생략하면 MemorySize 같은 정수 값이 string 으로 저장됩니다. 첫 보고에서는 mutability 와 variableCharacteristics 를 반드시 채워서 보냅니다.

variableCharacteristics​

variableCharacteristics 는 변수의 완전한 명세로 취급합니다. 이 객체를 보내면 아래와 같이 통째로 반영되므로 일부 필드만 갱신할 수는 없습니다. 보낼 때는 항상 완전한 형태로 채워서 보냅니다.

필드필수생략 시
dataType필수거부되지 않고 잘못 저장됩니다 (아래 참고)
unit, minLimit, maxLimit, valuesList선택저장된 값이 지워집니다
supportsMonitoring선택false 로 덮어씁니다
dataType 누락은 거부되지 않습니다 — 그래서 더 위험합니다

dataType 은 OCPP 스펙상 필수지만, CSMS는 이 필드가 빠졌다고 항목이나 프레임을 거부하지 않습니다. 첫 보고라면 string 으로 조용히 저장되고, 갱신 보고라면 기존 dataType 이 그대로 유지됩니다. 따라서 정수 변수를 string 으로 잘못 등록해 놓고도 오류를 한 줄도 받지 못합니다. variableCharacteristics 를 보낼 때는 dataType 을 반드시 채우고, 채우지 않을 항목은 필드를 비우지 말고 객체 자체를 생략하십시오.

한 항목의 오류는 그 항목에만 격리됩니다

CSMS는 reportData 배열을 항목 단위로 해석하고 적재합니다. 따라서 한 항목의 형태 위반(필수 필드 누락, enum 값 오기 등)이나 적재 실패는 같은 프레임의 나머지 항목을 되돌리지 않습니다. 실패한 항목만 수신 이력의 실패 건수로 남습니다.

다만 이 격리는 사후 추적을 위한 것이지 검증을 대신하지 않습니다. 실패 항목은 응답으로 통보되지 않으므로, 충전기는 성공 응답만 보고 보고가 전부 반영되었다고 판단하면 안 됩니다.

분할 전송과 변경 이력​

보고할 항목이 많아 한 번에 담을 수 없으면 tbc 와 seqNo 로 분할 전송합니다. seqNo 는 0부터 시작하고, 후속 프레임이 이어지면 tbc 를 true 로 둡니다. 분할된 모든 프레임은 같은 requestId 를 사용합니다.

CSMS는 보고된 값을 컴포넌트-변수 단위로 저장하고, 값이 바뀌면 변경 이력을 남깁니다. 따라서 부품 교체나 펌웨어 업데이트 같은 구성 변경이 이력으로 추적됩니다. 값이 바뀌지 않았다면 같은 값을 다시 보고해도 새 이력이 쌓이지 않습니다.

공통 변수​

특정 컴포넌트에 종속되지 않고 여러 컴포넌트에 공통으로 쓰이는 변수입니다.

Field NameTypeEVSE 권한CSMS 권한Description
FirmwareVersionStringReadOnlyReadOnly해당 컴포넌트의 설치 펌웨어 버전

FirmwareVersion​

충전기 대표(메인) 펌웨어 버전은 부팅 알림의 firmwareVersion 으로 이미 관리됩니다. 따라서 이 변수는 대표 버전 외의 개별 컴포넌트(HMI, ISO 15118 모듈 등) 버전 보고에 사용하며, 대표 버전을 이 경로로 중복 보고하지 않습니다.

FirmwareVersion 은 OCPP 2.x 의 generic 변수라 특정 컴포넌트에 매이지 않습니다. 펌웨어가 따로 올라가는 컴포넌트라면 어디에든 붙일 수 있으며, CSMS는 아래 이름을 표준으로 취급합니다.

컴포넌트대상비고
Controller메인 제어보드OCPP 1.6 단일 펌웨어는 이 이름으로 관리합니다
HmiCtrlr화면·버튼 등 사용자 인터페이스
PowerCtrlr전력 변환·출력 제어 로직
AcDcConverter파워모듈(뱅크)DC 충전기 전용. 여러 개면 instance 필수
FiscalMetering과금 근거 전력량계제어용 계량은 ControlMetering 입니다
ISO15118CtrlrPlug & Charge 모듈ISO 는 대문자입니다
SecurityCtrlr인증서·키 관리
ModemLTE/5G 통신 모뎀
DataLink내부·외부 통신 링크

위 이름은 모두 OCPP 2.0.1 및 2.1 표준 컴포넌트 명칭이므로, v2.1 네이티브 전환 시에도 그대로 사용합니다. 표준 목록에 없는 제조사 고유 컴포넌트는 사전에 협의된 이름을 사용합니다.

같은 종류의 컴포넌트가 여러 개인 경우(예: EVSE마다 별도 HMI, 파워모듈 뱅크 다중)에는 component.instance 또는 component.evse 로 대상을 구분해야 합니다. 구분하지 않으면 나중에 도착한 값이 앞의 값을 덮어씁니다.

컴포넌트 이름은 표기 그대로 보고합니다

CSMS는 컴포넌트 이름을 표준 목록과 대조해 거부하지 않습니다. 그래서 ISO15118Ctrlr 을 Iso15118Ctrlr 로 보내도 오류가 나지 않고 그대로 적재되며, 화면에는 최초로 도착한 표기가 남습니다. 위 표의 표기를 그대로 사용하십시오.

예시 (OCPP v1.6)
[
2,
"b914adcc-d113-46de-ad4b-edb168b96045",
"DataTransfer",
{
"vendorId": "com.skelectlink",
"messageId": "NotifyReport",
"data": {
"requestId": 1001,
"generatedAt": "2026-07-30T12:00:00Z",
"reportData": [
{
"component": {
"name": "HmiCtrlr"
},
"variable": {
"name": "FirmwareVersion"
},
"variableAttribute": [
{
"type": "Actual",
"value": "1.4.2",
"mutability": "ReadOnly"
}
]
},
{
"component": {
"name": "ISO15118Ctrlr"
},
"variable": {
"name": "FirmwareVersion"
},
"variableAttribute": [
{
"type": "Actual",
"value": "2.0.1",
"mutability": "ReadOnly"
}
]
}
]
}
}
]
예시 (OCPP v2.1)
[
2,
"b914adcc-d113-46de-ad4b-edb168b96045",
"NotifyReport",
{
"requestId": 1001,
"generatedAt": "2026-07-30T12:00:00Z",
"reportData": [
{
"component": {
"name": "HmiCtrlr"
},
"variable": {
"name": "FirmwareVersion"
},
"variableAttribute": [
{
"type": "Actual",
"value": "1.4.2",
"mutability": "ReadOnly"
}
]
},
{
"component": {
"name": "ISO15118Ctrlr"
},
"variable": {
"name": "FirmwareVersion"
},
"variableAttribute": [
{
"type": "Actual",
"value": "2.0.1",
"mutability": "ReadOnly"
}
]
},
{
"component": {
"name": "AcDcConverter",
"instance": "bank1",
"evse": {
"id": 1
}
},
"variable": {
"name": "FirmwareVersion"
},
"variableAttribute": [
{
"type": "Actual",
"value": "3.2.0",
"mutability": "ReadOnly"
}
]
},
{
"component": {
"name": "FiscalMetering",
"evse": {
"id": 1
}
},
"variable": {
"name": "FirmwareVersion"
},
"variableAttribute": [
{
"type": "Actual",
"value": "1.0.7",
"mutability": "ReadOnly"
}
]
}
]
}
]

Connector​

Component

OCPP 표준 컴포넌트입니다

Connector 는 CSMS의 커스텀 컴포넌트가 아니라 OCPP 2.x 디바이스 모델의 표준 컴포넌트입니다. 커스텀 항목이 아니므로 변수명·값은 임의로 정하지 않고 OCPP 표준 정의를 그대로 사용합니다. 이 절은 CSMS가 보고를 요구하는 항목을 명시하기 위해 수록합니다.

커넥터 단위 정보를 담는 컴포넌트입니다. component.evse.id(EVSE 번호)와 component.evse.connectorId(커넥터 번호)로 대상 커넥터를 식별합니다.

EVSE 번호는 1 을 사용합니다

CSMS는 한 충전기(OCPP charge point)를 EVSE 하나로 보고 커넥터 번호로만 커넥터를 구분합니다. 따라서 커넥터가 여러 개인 충전기도 component.evse.id 는 1 로 두고 component.evse.connectorId 를 1..N 으로 늘려 보고해야 합니다. 1 이 아닌 EVSE 번호로 보고된 값은 어느 커넥터를 말하는지 확정할 수 없어 반영되지 않습니다. 거래·상태 메시지의 EVSE 식별 모델도 동일한 규약을 따릅니다.

Variables​

Field NameTypeEVSE 권한CSMS 권한Description
ConnectorTypeStringReadOnlyReadOnly커넥터의 물리 커넥터 타입

ConnectorType​

본체(모델) 단위로 등록된 커넥터 구성만으로는 그 본체에 어떤 커넥터가 달려 있는지까지만 알 수 있고, 어떤 커넥터 아이디가 어떤 커넥터 타입인지는 알 수 없습니다. 따라서 충전기는 커넥터마다 자신의 커넥터 타입을 보고해야 합니다. CSMS는 이 값을 커넥터 단위 커넥터 타입의 기준 데이터로 관리합니다.

값은 OCPP 표준 ConnectorEnumType 을 사용합니다. 국내에서 사용되는 값은 다음과 같습니다.

ConnectorType커넥터CSMS 표기
cCCS1DC 콤보 (CCS1)DC 콤보
cCCS2DC 콤보 (CCS2)DC 콤보
cG105차데모 (CHAdeMO)차데모
cTesla테슬라 (NACS)테슬라
cType1AC 단상 5핀 (Type 1)AC 단상 5핀
cType2AC 3상 7핀 (Type 2)AC 3상 7핀
sType2AC 3상 7핀 소켓 (Type 2)AC 3상 7핀

타입을 확정할 수 없는 경우에만 Undetermined 또는 Unknown 을 사용합니다. 이 두 값은 커넥터 타입으로 확정되지 않으며, CSMS는 미보고와 동일하게 취급합니다.

위 표에 없는 표준값(s309-*, sBS1361, sCEE-7-7, sType3, Other1PhMax16A, Other1PhOver16A, Other3Ph, Pan, wInductive, wResonant)도 전송할 수 있으나, 국내 충전기에서는 사용하지 않습니다. 사용이 필요하면 사전에 협의합니다.

예시 (OCPP v1.6, 2채널)
[
2,
"6f1a2b3c-4d5e-6f70-8192-a3b4c5d6e7f8",
"DataTransfer",
{
"vendorId": "com.skelectlink",
"messageId": "NotifyReport",
"data": {
"requestId": 1001,
"generatedAt": "2026-07-30T12:00:00Z",
"reportData": [
{
"component": {
"name": "Connector",
"evse": {
"id": 1,
"connectorId": 1
}
},
"variable": {
"name": "ConnectorType"
},
"variableAttribute": [
{
"type": "Actual",
"value": "cCCS1",
"mutability": "ReadOnly"
}
]
},
{
"component": {
"name": "Connector",
"evse": {
"id": 1,
"connectorId": 2
}
},
"variable": {
"name": "ConnectorType"
},
"variableAttribute": [
{
"type": "Actual",
"value": "cG105",
"mutability": "ReadOnly"
}
]
}
]
}
}
]
예시 (OCPP v2.1, 2채널)
[
2,
"6f1a2b3c-4d5e-6f70-8192-a3b4c5d6e7f8",
"NotifyReport",
{
"requestId": 1001,
"generatedAt": "2026-07-30T12:00:00Z",
"reportData": [
{
"component": {
"name": "Connector",
"evse": {
"id": 1,
"connectorId": 1
}
},
"variable": {
"name": "ConnectorType"
},
"variableAttribute": [
{
"type": "Actual",
"value": "cCCS1",
"mutability": "ReadOnly"
}
]
},
{
"component": {
"name": "Connector",
"evse": {
"id": 1,
"connectorId": 2
}
},
"variable": {
"name": "ConnectorType"
},
"variableAttribute": [
{
"type": "Actual",
"value": "cG105",
"mutability": "ReadOnly"
}
]
}
]
}
]

CustomSystemInfo​

Component

충전기 제어 PC의 시스템·메인보드 정보를 담는 컴포넌트입니다. 충전기당 하나만 존재하므로 component.instance 를 사용하지 않습니다.

Variables​

Field NameTypeEVSE 권한CSMS 권한Description
OSNameStringReadOnlyReadOnly운영체제 이름 (예: Windows 10 IoT Enterprise)
OSVersionStringReadOnlyReadOnly운영체제 버전 또는 빌드 번호
MachineIdStringReadOnlyReadOnly제어 PC를 식별하는 고유 ID (UUID 등)
BoardVendorStringReadOnlyReadOnly메인보드 제조사
BoardModelStringReadOnlyReadOnly메인보드 모델명
BoardSerialNumberStringReadOnlyReadOnly메인보드 시리얼 번호
BiosVersionStringReadOnlyReadOnlyBIOS/UEFI 버전
CpuModelStringReadOnlyReadOnlyCPU 모델명
MemorySizeIntegerReadOnlyReadOnly전체 메모리 크기 (단위 MB)

MachineId, BoardSerialNumber 는 부품을 교체하지 않는 한 바뀌지 않으므로 constant: true 로 보고합니다.

CustomNetworkInterface​

Component

제어 PC의 네트워크 어댑터 정보를 담는 컴포넌트입니다.

어댑터가 여러 개이므로 component.instance 에 운영체제가 인식하는 인터페이스 이름 (예: eth0, wlan0, lte0)을 반드시 채워 어댑터를 구분합니다. instance 없이 보고하면 CSMS가 모든 어댑터를 같은 변수로 취급해 값이 서로 덮어써집니다.

Variables​

Field NameTypeEVSE 권한CSMS 권한Description
MacAddressStringReadOnlyReadOnlyMAC 주소 (00:1A:2B:3C:4D:5E 형식)
VendorStringReadOnlyReadOnly어댑터 제조사
ModelStringReadOnlyReadOnly어댑터 모델명
SerialNumberStringReadOnlyReadOnly어댑터 시리얼 번호
InterfaceTypeStringReadOnlyReadOnly인터페이스 종류 — Ethernet, WiFi, Cellular 중 하나
IpAddressStringReadOnlyReadOnly보고 시점의 IP 주소
LinkSpeedIntegerReadOnlyReadOnly링크 속도 (단위 Mbps)

MacAddress, SerialNumber 는 constant: true 로 보고합니다. IpAddress 는 접속 환경에 따라 바뀌므로 constant 를 설정하지 않습니다.

CustomStorage​

Component

제어 PC의 저장 장치 정보를 담는 컴포넌트입니다.

저장 장치가 여러 개일 수 있으므로 component.instance 에 장치 식별자 (예: disk0, disk1)를 반드시 채워 장치를 구분합니다.

Variables​

Field NameTypeEVSE 권한CSMS 권한Description
ModelStringReadOnlyReadOnly저장 장치 모델명
SerialNumberStringReadOnlyReadOnly저장 장치 시리얼 번호
StorageTypeStringReadOnlyReadOnly장치 종류 — SSD, HDD, eMMC 중 하나
CapacityIntegerReadOnlyReadOnly전체 용량 (단위 GB)
HealthStatusStringReadOnlyReadOnly장치가 보고하는 건강 상태 (예: Healthy, Warning)
PowerOnHoursIntegerReadOnlyReadOnly누적 전원 인가 시간 (단위 h)

SerialNumber 는 constant: true 로 보고합니다. HealthStatus, PowerOnHours 는 운영 중 변하므로 constant 를 설정하지 않습니다.

하드웨어 인벤토리 보고 예시​

CustomSystemInfo, CustomNetworkInterface, CustomStorage 는 한 번의 리포트로 함께 보고합니다. 항목 수가 많아 한 프레임에 담기 어려우면 tbc 와 seqNo 로 분할 전송합니다.

단위가 있는 값(MemorySize, LinkSpeed, Capacity, PowerOnHours)은 variableCharacteristics.unit 으로 단위를 명시합니다.

조회 요청 예시

특정 컴포넌트만 조회하려면 componentVariable 로 대상을 좁힙니다. 생략하면 전체 인벤토리가 대상이 됩니다.

[
2,
"3d9e1f20-5a6b-4c7d-8e9f-0a1b2c3d4e5f",
"DataTransfer",
{
"vendorId": "com.skelectlink",
"messageId": "GetReport",
"data": {
"requestId": 2001,
"componentVariable": [
{
"component": {
"name": "CustomSystemInfo"
}
},
{
"component": {
"name": "CustomNetworkInterface"
}
},
{
"component": {
"name": "CustomStorage"
}
}
]
}
}
]
보고 예시 (OCPP v1.6)
[
2,
"3d9e1f20-5a6b-4c7d-8e9f-0a1b2c3d4e5f",
"DataTransfer",
{
"vendorId": "com.skelectlink",
"messageId": "NotifyReport",
"data": {
"requestId": 2001,
"generatedAt": "2026-07-30T12:00:00Z",
"seqNo": 0,
"tbc": false,
"reportData": [
{
"component": {
"name": "CustomSystemInfo"
},
"variable": {
"name": "BoardSerialNumber"
},
"variableAttribute": [
{
"type": "Actual",
"value": "MB-2024-00193847",
"mutability": "ReadOnly",
"constant": true
}
],
"variableCharacteristics": {
"dataType": "string",
"supportsMonitoring": false
}
},
{
"component": {
"name": "CustomSystemInfo"
},
"variable": {
"name": "MemorySize"
},
"variableAttribute": [
{
"type": "Actual",
"value": "8192",
"mutability": "ReadOnly"
}
],
"variableCharacteristics": {
"dataType": "integer",
"unit": "MB",
"supportsMonitoring": false
}
},
{
"component": {
"name": "CustomNetworkInterface",
"instance": "eth0"
},
"variable": {
"name": "MacAddress"
},
"variableAttribute": [
{
"type": "Actual",
"value": "00:1A:2B:3C:4D:5E",
"mutability": "ReadOnly",
"constant": true
}
],
"variableCharacteristics": {
"dataType": "string",
"supportsMonitoring": false
}
},
{
"component": {
"name": "CustomNetworkInterface",
"instance": "lte0"
},
"variable": {
"name": "MacAddress"
},
"variableAttribute": [
{
"type": "Actual",
"value": "00:1A:2B:3C:4D:5F",
"mutability": "ReadOnly",
"constant": true
}
],
"variableCharacteristics": {
"dataType": "string",
"supportsMonitoring": false
}
},
{
"component": {
"name": "CustomStorage",
"instance": "disk0"
},
"variable": {
"name": "SerialNumber"
},
"variableAttribute": [
{
"type": "Actual",
"value": "S4EWNX0N512345",
"mutability": "ReadOnly",
"constant": true
}
],
"variableCharacteristics": {
"dataType": "string",
"supportsMonitoring": false
}
}
]
}
}
]
보고 예시 (OCPP v2.1)
[
2,
"3d9e1f20-5a6b-4c7d-8e9f-0a1b2c3d4e5f",
"NotifyReport",
{
"requestId": 2001,
"generatedAt": "2026-07-30T12:00:00Z",
"seqNo": 0,
"tbc": false,
"reportData": [
{
"component": {
"name": "CustomSystemInfo"
},
"variable": {
"name": "BoardSerialNumber"
},
"variableAttribute": [
{
"type": "Actual",
"value": "MB-2024-00193847",
"mutability": "ReadOnly",
"constant": true
}
],
"variableCharacteristics": {
"dataType": "string",
"supportsMonitoring": false
}
},
{
"component": {
"name": "CustomNetworkInterface",
"instance": "eth0"
},
"variable": {
"name": "MacAddress"
},
"variableAttribute": [
{
"type": "Actual",
"value": "00:1A:2B:3C:4D:5E",
"mutability": "ReadOnly",
"constant": true
}
],
"variableCharacteristics": {
"dataType": "string",
"supportsMonitoring": false
}
},
{
"component": {
"name": "CustomStorage",
"instance": "disk0"
},
"variable": {
"name": "Capacity"
},
"variableAttribute": [
{
"type": "Actual",
"value": "512",
"mutability": "ReadOnly"
}
],
"variableCharacteristics": {
"dataType": "integer",
"unit": "GB",
"supportsMonitoring": false
}
}
]
}
]