부가 정보를 전송하는 방법

펌웨어가 데이터 원천인 수집 장치에서 데이터를 얻지 못하였을 때 이런 부가 정보를 서버로 전송하는 방법에 대하여 안내합니다.

에러코드 (필수)

펌웨어는 센서나 디지털 컨트롤러(PLC)등 외부에 위치한 데이터 원천에서 데이터를 읽습니다. 이때 노후나 단선과 같은 물리적인 문제, 센서/디바이스 고장과 같이 하드웨어적인 문제 등 펌웨어가 예외를 제어할 수 없는 상황이 발생하여 데이터 원천에서 데이터를 수집하지 못할 수 있습니다.

이럴 때에는 해당 상황을 메시지에 기록하여 서버로 전송해야 됩니다. 데이터 필드와 별도로 errCode 라는 필드를 정의하고 서버로 전송합니다. 수집에 실패한 필드는 null 로 기록합니다.

에러 코드 정의

코드

설명

1

정상 수집

2

수집 장치 단선 의심

(MODBUS 단선)

3

수집 장치 무응답

(PLC 타임아웃)

4

데이터 변환 설정 오류

5

수집 실패

전송 데이터 예

{
    "serviceId": "1000",
    "deviceId": "cutter",
    "timestamp": 1575084995319,
    "contents": {
        "oilGauge": 12.34,
        "oilPressure": 56.78,
        "errCode": 1
    }
}

예제는 오일 게이지와 오일 압력 2가지 데이터를 수집하는 장치입니다. 오일게이지는 12.34 라는 값, 그리고 오일 압력은 56.78 이라는 값을 정상적으로 수집했습니다. 그러므로 에러코드 필드를 1로 하여 서버로 전송합니다.

{
    "serviceId": "1000",
    "deviceId": "cutter",
    "timestamp": 1575084995319,
    "contents": {
        "oilGauge": null,
        "oilPressure": null,
        "errCode": 2
    }
}

위 데이터 예제는 수집 장치와 전면적인 단선이 발생해서 아무런 데이터를 얻지 못한 경우입니다. 에러코드를 2로 하고 수집하지 못한 필드에 null 을 기록하여 서버로 전송합니다.

{
    "serviceId": "1000",
    "deviceId": "cutter",
    "timestamp": 1575084995319,
    "contents": {
        "oilGauge": null,
        "oilPressure": 56.78,
        "errCode": 3
    }
}

예제는 특정 필드만 수집을 실패한 경우입니다. 해당 필드를 null 로 작성하고 에러코드를 3으로 하여 서버로 전송합니다.

센서 상태 (선택)

센서의 현재 상태를 서버로 전송할 수 있습니다. sensorStatus 라는 별개의 필드를 정의하고 필요한 정보를 기록하여 전송합니다. 펌웨어 OTA 를 지원하는 디바이스는 반드시 이 필드를 이용하여 현재 동작하는 펌웨어 정보를 서버로 전송해야 합니다.


{
  ...
  "contents": {
    "temperature": 23.2
    "oilGauge": 123,
    "errCode": 1,
    "sensorStatus": {
      "fwVer": 1.0,
      "diskFree": 50,
      "battery": 90,
      ...
    }
    ...
   }
}

예제는 펌웨어 버전(fwVer), 디스크 여유율(50), 배터리 잔량(90)을 기록하여 서버로 전송하고 있습니다. 이러한 정보들은 보다 효율적으로 관리하는데 도움이 될 수 있을 것입니다.

부가 정보 필드는 기술 협의 과정에서 협의하여 정의될 수 있습니다.

설비 상태 (선택)

설비에 연결되어 동작하는 센서들은 설비의 가동 여부를 추가 정보로 서버로 전송할 수 있습니다. assetStatus 라는 필드를 사용하면 됩니다.


{
  ...
  "contents": {
    "temperature": 23.2
    "oilGauge": 123,
    "errCode": 1,
    "assetStatus": 1
    ...
   }
}

데이터 예제는 assetStatus 에 1 즉 설비가 가동 중인 상태임을 나타냅니다. 0은 설비가 비가동임을 뜻합니다. 이 필드 역시 기술 협의 세션에서 적용 여부를 결정할 수 있습니다.

Last updated