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으로 표기한다.
한 주기 동안 차량이 급유턴과 급가속을 동시에 진행한 경우에는 28 로 표현
|
||||||||||||||||||||||||||||||||||||
| 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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 중복 수신 |