6. 메시지 포맷

표에 M/O는 Mandatory/Optional의 약자로, Mandatory는 필수로 포함해야 하는 데이터를 Optional은 필요에 따라 기입이 여부를 개발사에서 판단하시면 됩니다.


6.1. Device 메시지 포맷

6.1.1. Payload Types

6.1.1.1. Microtrip

Microtrip 메세지는 차량이 운행을 시작한 후 설정된 주기에 따라 전송하는 차량 운행 상세 데이터입니다. 주기는 각 어플리케이션 마다 상이하므로, 아래의 값은 플랫폼에 전송하는 해당 시점에 데이터를 추출하여 기입합니다.

Key Type M/O Description
tid Int M Trip 고유 번호
fc Int O 연료소모량
lat Int M 위도 (WGS84)
lon Int M 경도 (WGS84)
lc Int O 측정 한 위치 값의 정확도
clt Int M 단말기 기준 수집 시간
cdit Int O Trip의 현재시점까지 주행거리
rpm Int O rpm
sp Int O 차량 속도
em Int O

한 주기 동안 발생한 이벤트에 대해서 Hexa String으로 표기한다.

Bit Description
0 급출발
1 급좌회전
2 급우회전
3 급유턴
4 급감속
5 급가속
6 급정지
7 Reserved

한 주기 동안 차량이 급유턴과 급가속을 동시에 진행한 경우에는 28 로 표현

Bit 7 6 5 4 3 2 1 0
Value 0 0 1 0 1 0 0 0
el Int O 엔진 부하
xyz Int O 가속도 X, Y 및 각속도 Y 값 (Delimeter는comma)
vv Int O 배터리 전압 (시동 OFF 후 전압)
tpos Int O 엑셀 포지션 값

Example Code

{
      "ts" : 1505434907995,
      "ty" : 2,
      "pld" : {
              "tid" : 1,
              "fc" : 12,
              "lon" : 127.114513,
              "lat" : 37.380241,
              "rpm" : 323,
              "em" : 28,
              "el" : 25,
              "xyz" : "23123,49923,123",
              "vv" : "11.4"
      }
}



6.1.1.2. Trip

Trip Message는 차량이 운행이 종료된 후에 전달하는 메시지입니다.

Key Type M/O Description Note
tid Int M Trip 고유 번호  
stt Int M Trip의 시작 날짜 및 시간 UTC
edt Int M Trip의 종료 날짜 및 시간 UTC
dis Int M Trip의 주행거리 Meter
tdis Int M 차량의 총 주행거리 Meter
fc Int M 연료소모량  
stlat Int M 운행 시작 좌표의 위도  
stlon Int M 운행 시작 좌표의 경도  
edlat Int M 운행 종료 좌표의 위도  
edlon Int M 운행 종료 좌표의 경도  
ctp Int M 부동액(냉각수) 평균온도  
coe Int M Trip의 탄소 배출량  
fct Int M 연료차단 상태의 운행시간  
hsts Int M Trip의 최고 속도  
mesp Int M Trip의 평균 속도  
idt Int M Trip의 공회전 시간  
btv Int M 배터리 전압(시동OFF후 전압)  
gnv Int M 발전기 전압(주행중 최고 전압)  
wut Int M Trip의 웜업시간(주행전 시동 시간)  
usm Int O BT가 연결된 휴대폰 번호  
est Int O 80~100km 운행 시간  
fwv Int O 펌웨어 버전  
dtvt Int O 주행시간  

Example Code

{
      "ty" : 1,
      "ts" : 1505434907995,
      "pld" : {
              "tid" : 10,
              "stt" : 1505433907995,
              "edt" : 1505434907995,
              "dis" : 101,
              "tdis" : 16813,
              "fc" : 83,
              "stlon" : 127.114513,
              "stlat" : 37.380241,
              "edlon" : 126.114513,
              "edlat" : 36.380241,
              "ctp" : 48,
              "coe" : 392,
              "fct" : 123,
              "hsts" : 121,
              "mesp" : 63,
              "idt" : 3,
              "btv" : 14.5,
              "gnv" : 12.3,
              "wut" : 181,
              "dtvt" :2301
      }
}



6.1.1.3. Diagnostic Information

OBD에서 인지한 차량 진단 코드(DTC)를 전송하는 메시지를 정의합니다.

Key Type M/O Description
tid Int O Trip 고유 번호(Not required)
dtcc String M 차량고장코드 (Delimeter Comma)
dtck Int M 0=confirm 1=pending 2=permanent
dtcs Int M DTC Code의 개수

주석

OBD가 플랫폼에 DTC 코드를 전송하는 방식은 2가지

  • 차량 주행이 시작한 후에 감지된 Diagnostic Information을 전송하는 방법
  • 플랫폼을 통해서 OBD에 DTC 코드 보고를 요청하는 RPC 방법

Example Code

{
      "tid": 1,
      "dtcc": "AAA",
      "dtck": 0,
      "dtcs": 2
}



6.1.1.4. Collision warning (Driving)

운행 중 OBD가 감지한 차량 접촉 사고에 대한 위치 정보를 전달하는 메세지를 정의합니다.

Key Type M/O Description
tid Int O Trip 고유 번호(Not required)
dclat Int M 위도
dclon Int M 경도

Example Code

{
      "tid": 1,
      "dclat" : 37.380241,
      "dclon" : 127.114513
}



6.1.1.5. Collision warning (Paramsking)

주차 중 OBD가 감지한 차량 접촉 사고에 대한 위치 정보를 전달하는 메세지를 정의합니다.

Key Type M/O Description
plat Int M 위도
plon Int M 경도

Example Code

{
      "plat" : 37.380241,
      "plon" : 127.114513
}



6.1.1.6. Battery Warning

차량 배터리 소모에 대한 위험 알림 메시지를 정의합니다.

Key Type M/O Description
wbv Int M 배터리 전압

Example Code

{
      "wbv" : 13
}



6.1.1.7. Unplugged Warning

OBD가 차량으로부터 탈착되는 이벤트에 대한 알림 메시지를 정의합니다.

Key Type M/O Description
unpt Int M 탈착 시간
pt Int M 부착 시간

Example Code

{
      "unpt": 1505433907995,
      "pt": 1505434907995,
}



6.1.1.8. Turn-off Warning

OBD가 종료된 경우, 종료 이전에 종료에 대한 이유를 플랫폼에 전달하기 위한 알림 매시지를 정의합니다.

Key Type M/O Description
rs String M 단말 종료 원인

Example Code

{
      "rs":"string"
}



6.2. RPC 메시지 포맷

OBD 단말을 제어하기 위한 RPC Message Type을 명세합니다. 기술되지 않는 제어는 단말과 어플리케이션 상호 간에만 규약 되어 있다면, Vendor Specific Message를 사용합니다.


6.2.1. Vendor Specific Message

각 단말 업체에서 별도로 관리하는 제어 요청 메시지이며, 다른 제어 메시지도 본 포맷을 확장하여 명시됩니다.

6.2.1.1. Request

Key Type M/O Description
method String M 원격 제어하고자 하는 기능에 대해서 명세
params String M 기능에 대한 파라미터를 명세

6.2.1.2. Response

Key Type M/O Description
result String M resultCode 에 정의된 제어 결과 추가

6.2.1.3. Result

Key Type M/O Description
result String M resultCode 에 정의된 제어 결과 추가
addInfo String O 결과 값에 따른 추가 정보 명세



6.2.2. Device Activation

차량용 센서를 차량에 부착한 후 활성화하기 위해 필요한 RPC 메시지를 명세합니다.

6.2.2.1. Request

Key Type M/O Description
method String M activationReq 로 명세
params String M
Key Type M/O Description
Vid String M 차량 식별 번호
upp Int M Microtrip 업로드 주가 (초)
Elt Int M 배기량 정보
Fut Int M
  1. 가솔린
  2. 디젤
  3. LPG
Mty String M
  1. Automatic
  2. Manual
cyl Int O 실린더 정보

Example Code

{
      "method" : "activationReq",
      "params" : {
              "vid" : "25나0660",
              "upp" : 1,
              "elt" : 1999,
              "fut" : 1,
              "mty" : "Automatic"
      }
}

6.2.2.2. Response

Key Type M/O Description
result String M resultCode 에 정의된 제어 결과 추가

Example Code

{
      "result" : 2000
}

6.2.2.3. Result

Key Type M/O Description
result String M resultCode 에 정의된 제어 결과 추가
addInfo String M
Key Type M/O Decsription
addInfo String M 차량 식별 번호

Example Code

{
  "result" : 2000,
  "addInfo" : {
       "vid" : "25나0660"
  }
}



6.2.3. Firmware Update

차량용 OBD의 펌웨어 업데이트를 위한 RPC 메시지를 명세합니다.

6.2.3.1. Request

Key Type M/O Description
method String M fwupdate 로 명세
params String M
Key Type M/O Description
Pkv String M F/W 패키지 버전
url String M F/W 패키지가 저장된 사이트 주소

Example Code

{
      "method" : "fwupdate",
      "params" : {
              "pkv" : "1.0.1",
              "url" : "ftp://smartfleet.sktelecom.com:10011"
      }
}

6.2.3.2. Response

Key Type M/O Description
result String M resultCode 에 정의된 제어 결과 추가

Example Code

{
  "result" : 2000
}



6.2.4. OBD Reset

차량용 OBD의 재시작을 위한 RPC 메시지

6.2.4.1. Request

Key Type M/O Description
method String M reset 로 명세
params String M N/A

Example Code

{
  "method" : "reset",
  "params" : ""
}

6.2.4.2. Response

Key Type M/O Description
result String M resultCode 에 정의된 제어 결과 추가

Example Code

{
  "result" : 2000
}

6.2.4.3. Result

Key Type M/O Description
result String M resultCode 에 정의된 제어 결과 추가
addInfo String O 결과 값에 따른 추가 정보 명세

Example Code

{
  "result" : 2000
}



6.2.5. Device Serial Number Check

차량용 OBD의 시리얼 번호 확인용 RPC 메시지

6.2.5.1. Request

Key Type M/O Description
method String M serial 로 명세
params String M N/A

Example Code

{
  "method" : "serial",
  "params" : ""
}

6.2.5.2. Response

Key Type M/O Description
result String M resultCode 에 정의된 제어 결과 추가

Example Code

{
  "result" : 2000
}

6.2.5.3. Result

Key Type M/O Description
result String M resultCode 에 정의된 제어 결과 추가
addInfo String M
Key Type M/O Decsription
sn String M 단말 시리얼 번호

Example Code

{
  "result" : 2000,
  "addInfo" : {
    "sn" : "70d71b00-71c9-11e7-b3e0-e5673983c7b9"
  }
}



6.2.6. Clear Device Data

차량용 OBD 데이터 삭제

6.2.6.1. Request

Key Type M/O Description
method String M cleardata 로 명세
params String M N/A

Example Code

{
  "method" : "cleardata",
  "params" : ""
}

6.2.6.2. Response

Key Type M/O Description
result String M resultCode 에 정의된 제어 결과 추가

Example Code

{
  "result" : 2000
}

6.2.6.3. Result

Key Type M/O Description
result String M resultCode 에 정의된 제어 결과 추가
addInfo String O N/A

Example Code

{
  "result" : 2000
}



6.2.7. Firmware Update (Chunk-based)

Chunk 기반으로 차량용 OBD의 펌웨어 업데이트를 위한 RPC 메시지를 명세합니다.

6.2.7.1. Request

Key Type M/O Description
method String M fwupchunk 로 명세
params String M
Key Type M/O Description
Tsz Int M F/W 전체 용량
Csz Int M Chunk 사이즈
Idx Int M Chunk 데이터 인덱스
pyd String M F/W Chunk 데이터

Example Code

{
      "method" : "fwupchunk",
      "params" : {
              "tsz" : 4932321,
              "csz" : 10000,
              "idx" : 13,
              "pyl" : "83a27473cf0000015e82e9b55ba2747902a3706c64"
      }
}

6.2.7.2. Response

Key Type M/O Description
result String M resultCode 에 정의된 제어 결과 추가

Example Code

{
  "result" : 2000
}

6.2.7.3. Result

Key Type M/O Description
result String M resultCode 에 정의된 제어 결과 추가
addInfo String O N/A

Example Code

{
  "result" : 2000
}



6.2.8. Common Response Code for RPC Result

6.2.8.1. Code Class

Status Class Code Description
Success 2XXX RPC 결과가 정상적으로 동작하는 경우
Sensor Error 4XXX RPC 결과를 수신한 단말이 비정상적으로 동작한 경우
Platform Error 5XXX RPC 요청에 대해서 플랫폼이 비정상적으로 동작한 경우

6.2.8.2. Successful Response Class

Code Description
2000 RPC 정상적 수행
2001 RPC 메시지 정상적으로 수신

6.2.8.3. Sensor Error Response Class

Code Description
4000 디바이스가 수행할 수 없는 RPC 메시지 수신
4001 잘못된 RPC 파라미터 수신
4002 접근 불가
4003 동일한 RPC 중복 수신