Get Started

Smart[Fleet] 시스템으로 커넥티드카 솔루션을 보다 쉽고 안전하게 만들어봅니다. 본 장에서는 Smart[Fleet] 기반으로 솔루션 개발하기 위해 필요한 기본 절차들에 대해서 함께 만들어보는 방법을 기술합니다. Smart[Fleet]으로 커넥티드카 솔루션을 구축하는 방법은 아래 그림과 같이 진행합니다.

./images/getStarted_1.png

1. Service Registration

Smart[Fleet]으로 커넥티드카를 사용하시기 위해서는 사용 권한을 부여받아야 하며, 최초에 Smart[Fleet] 엔티티 구조 에 따라 Company 를 등록하여야 합니다. 서비스를 운용하는 회사 Company 를 등록하고 해당 회사가 관리하는 차량 센서 Sensor 와 차량 Vehicle 등 을 등록하여 서비스를 구축할 수 있습니다.

서비스 등록은 Smart[Fleet] 홈페이지 에 서비스 등록 메뉴를 활용하시어 등록하면, 확인 절차를 거쳐 서비스를 생성하여 드립니다.

서비스 등록이 정상적으로 된 경우에는 등록하신 E-Mail을 통하여, 서비스 등록 결과를 발송하여 드리며, Smart[Fleet] 홈페이지에 정상적으로 접속하실 수 있습니다.

서비스 등록의 목적은 상술한 바와 같이 등록된 다양한 엔티티 Sensor, Vehicle, Driver 등에 대한 접근 권한을 받기 위함입니다. Smart[Fleet]은 정상적으로 등록된 고객사에 한하여 플랫폼에 접근가능한 JWT Token(https://jwt.io)을 발급해 드리며, Token은 아래 API를 통해서 확인하실 수 있습니다.

JWT Token 확인 방법

서비스 등록을 위해서 할당 받은 계정이 아래와 같다고 가정합니다.

REST API를 통해서 정상적으로 등록한 서비스의 토큰을 확인하는 방법은 Smart[Fleet]에서 제공하는 API(https://app.swaggerhub.com/apis/tremoteye/tremoteyeapi/1.0.0) 중에서 다음 API를 사용합니다.

./images/token_1.png

HTTP Request

POST /api/auth/login HTTP/1.1
Host: smartfleet.sktelecom.com:8080
Content-Type: application/json
Cache-Control: no-cache
Postman-Token: 3a4d56c6-f7dd-8c6a-501f-9f66bcfe1cbf

{
    "username":"getStarted@smartfleet.sktelecom.com",
    "password":"test1234"
}

HTTP Response

{
    "token": "eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJnZXRTdGFydGVkQHNtYXJ0ZmxlZXQuc2t0ZWxlY29tLmNvbSIsInNjb3BlcyI6WyJDT01QQU5ZX0FETUlOIl0sInVzZXJJZCI6IjM1ZDczOWYwLWI3MDAtMTFlNy04NDJiLWVkNmM0YTVjOTk5YiIsImVuYWJsZWQiOnRydWUsImlzUHVibGljIjpmYWxzZSwidGVuYW50SWQiOiIzNWQwZjg2MC1iNzAwLTExZTctODQyYi1lZDZjNGE1Yzk5OWIiLCJjdXN0b21lcklkIjoiMTM4MTQwMDAtMWRkMi0xMWIyLTgwODAtODA4MDgwODA4MDgwIiwiaXNzIjoiVCBSZW1vdEV5ZS5TSyBUZWxlY29tIiwiaWF0IjoxNTA4NjU5NzMwLCJleHAiOjE1MDk1MjM3MzB9.qJEucGPlV3UatchFVqlgdPDjJ6XL7sWOPAQ3bv39cARLThMcmFlRdFTxJslB8cek_kTRTz7_s5MHRJoKu63xqw",
    "refreshToken": "eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJnZXRTdGFydGVkQHNtYXJ0ZmxlZXQuc2t0ZWxlY29tLmNvbSIsInNjb3BlcyI6WyJSRUZSRVNIX1RPS0VOIl0sInVzZXJJZCI6IjM1ZDczOWYwLWI3MDAtMTFlNy04NDJiLWVkNmM0YTVjOTk5YiIsImlzUHVibGljIjpmYWxzZSwiaXNzIjoiVCBSZW1vdEV5ZS5TSyBUZWxlY29tIiwianRpIjoiMDViNTYwMWEtZjBhNC00MzdmLWJlNjgtY2FiMDFiOTY2YjVkIiwiaWF0IjoxNTA4NjU5NzMwLCJleHAiOjE1MDk1MjM3MzB9.v7eb_wVtV3eIUeKlviVed_xXIB7PZmu8YFGZLaJJOVq2PF96VUYNPWkTs2Ia9UpKs8ceekW__hitRyaJvnYSTg"
}

본 Token 값은 외부 유출이 안되도록 주의하셔야 하며, HTTP Response의 token 값은 REST API 시 HTTP Header에 ``X-Authorization``의 값으로 사용됩니다.

주석

Smart[Fleet]의 정식 홈페이지는 10월 중순에 오픈하며, 그 전에는 hb.ahn@sk.com 으로 메일을 주시면, 서비스를 생성하여 드립니다.

Portal

2. Sensor Registration

서비스를 정상적으로 등록한 후에는 관리하고자 하는 차량 Vehicle 이나 차량 센서 Sensor 를 등록할 수 있습니다. 우선 차량 센서를 등록해보도록 하겠습니다.

차량은 센서는 2가지 방법으로 등록할 수 있습니다.

  1. Portal을 통한 센서 등록 방법
  2. REST API를 통한 센서 등록 방법

2.1 Portal을 통한 센서 등록 방법

(TBD)

2.2 REST API를 통한 센서 등록 방법

REST API를 통해서 센서를 등록하는 방법은 Smart[Fleet]에서 제공하는 API(https://app.swaggerhub.com/apis/tremoteye/tremoteyeapi/1.0.0) 중에서 다음 API를 사용합니다.

./images/sensor_regi_1.png

센서의 데이터는 Sensor Data Model 에 명시되어 있으며, 입력 필수 값을 아래와 같이 작성하여 API 호출합니다.

Key Example Value
vendor sktelecom
type OBD
credentialId A1234567891234567891
activationRequired false
serialNo a8d9321ef1932123-3213fa12

위의 값을 HTTP 값에 맞추어 요청을 하면 다음과 같은 호출이 됩니다.

HTTP Request

POST /api/tre/v1/sensor HTTP/1.1
Host: smartfleet.sktelecom.com:8080
Content-Type: application/json
X-Authorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJnZXRTdGF0cmVkQHNtYXJ0ZmxlZXQuc2t0ZWxlY29tLmNvbSIsInNjb3BlcyI6WyJDT01QQU5ZX0FETUlOIl0sInVzZXJJZCI6IjBkMDBjMGUwLWI2ZjctMTFlNy04NDJiLWVkNmM0YTVjOTk5YiIsImVuYWJsZWQiOnRydWUsImlzUHVibGljIjpmYWxzZSwidGVuYW50SWQiOiIwY2YyZGUzMC1iNmY3LTExZTctODQyYi1lZDZjNGE1Yzk5OWIiLCJjdXN0b21lcklkIjoiMTM4MTQwMDAtMWRkMi0xMWIyLTgwODAtODA4MDgwODA4MDgwIiwiaXNzIjoiVCBSZW1vdEV5ZS5TSyBUZWxlY29tIiwiaWF0IjoxNTA4NjU3MzE4LCJleHAiOjE1MDk1MjEzMTh9.STB8t5lFtB5S5MwqEWC-y_BDeGp01m_2VjF58CZ5lu4xP3nrmGicX-iLt5PaaYXqOb2sG4j8XISSlcFX5cialg
Cache-Control: no-cache

{
    "vendor": "sktelecom",
    "type": "OBD",
    "credentialsId":"A1234567891234567891",
    "activationRequired": false,
    "serialNo":"a8d9321ef1932123-3213fa12"
}

HTTP Response

{
    "id": {
        "id": "ae909ce0-b702-11e7-842b-ed6c4a5c999b"
    },
    "createdTime": 1508660780431,
    "vehicleId": {
        "id": "13814000-1dd2-11b2-8080-808080808080"
    },
    "companyId": {
        "id": "35d0f860-b700-11e7-842b-ed6c4a5c999b"
    },
    "directorId": {
        "id": "13814000-1dd2-11b2-8080-808080808080"
    },
    "status": "DEACTIVATED",
    "vendor": "sktelecom",
    "type": "OBD",
    "additionalInfo": null,
    "lastTripMsgType": null,
    "activationRequired": false,
    "vehicleNo": null,
    "serialNo": "a8d9321ef1932123-3213fa12",
    "credentialsId": "A1234567891234567891"
}

cURL Request

아래 코드는 cURL을 사용하여 REST API를 호출할 경우에 기입해야하는 값을 예로 표현합니다.

curl -X POST \
https://smartfleet.sktelecom.com:8080/api/tre/v1/sensor \
-H 'content-type: application/json' \
-H 'x-authorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJnZXRTdGF0cmVkQHNtYXJ0ZmxlZXQuc2t0ZWxlY29tLmNvbSIsInNjb3BlcyI6WyJDT01QQU5ZX0FETUlOIl0sInVzZXJJZCI6IjBkMDBjMGUwLWI2ZjctMTFlNy04NDJiLWVkNmM0YTVjOTk5YiIsImVuYWJsZWQiOnRydWUsImlzUHVibGljIjpmYWxzZSwidGVuYW50SWQiOiIwY2YyZGUzMC1iNmY3LTExZTctODQyYi1lZDZjNGE1Yzk5OWIiLCJjdXN0b21lcklkIjoiMTM4MTQwMDAtMWRkMi0xMWIyLTgwODAtODA4MDgwODA4MDgwIiwiaXNzIjoiVCBSZW1vdEV5ZS5TSyBUZWxlY29tIiwiaWF0IjoxNTA4NjU3MzE4LCJleHAiOjE1MDk1MjEzMTh9.STB8t5lFtB5S5MwqEWC-y_BDeGp01m_2VjF58CZ5lu4xP3nrmGicX-iLt5PaaYXqOb2sG4j8XISSlcFX5cialg' \
-d '{
"vendor": "sktelecom",
"type": "OBD",
"credentialsId":"A1234567891234567890",
"activationRequired": false,
"serialNo":"a8d9321ef1932123-3213fa11"
}'

3. Vehicle Registration

서비스를 정상적으로 등록한 후에는 관리하고자 하는 차량 Vehicle 이나 차량 센서 Sensor 를 등록할 수 있습니다. 이번 절에서는 차량 ``Vehicle``을 등록해보도록 하겠습니다. 차량이 정상적으로 등록 된 경우에는 등록 된 센서와 차량을 매핑하는 절차를 거쳐보도록 하겠습니다.

3.1 Portal을 통한 차량 등록 방법

(TBD)

3.2 REST API를 통한 차량 등록 방법

REST API를 통해서 센서를 등록하는 방법은 Smart[Fleet]에서 제공하는 API(https://app.swaggerhub.com/apis/tremoteye/tremoteyeapi/1.0.0) 중에서 다음 API를 사용합니다.

./images/vehicle_regi_1.png

차량의 데이터는 Sensor Data Model 에 명시되어 있으며, 입력 필수 값을 아래와 같이 작성하여 API 호출합니다.

Key Example Value
vehicleNo 11테1111
modelName 그랜져
modelCode HG001
vendor 현대
modelYear 2017
missionType AUTO
fuelType DIESEL
mileage 11100
category ETC

위의 값을 HTTP 값에 맞추어 요청을 하면 다음과 같은 호출이 됩니다.

HTTP Request

POST /api/tre/v1/vehicle HTTP/1.1
Host: smartfleet.sktelecom.com:8080
Content-Type: application/json
X-Authorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJnZXRTdGFydGVkQHNtYXJ0ZmxlZXQuc2t0ZWxlY29tLmNvbSIsInNjb3BlcyI6WyJDT01QQU5ZX0FETUlOIl0sInVzZXJJZCI6IjM1ZDczOWYwLWI3MDAtMTFlNy04NDJiLWVkNmM0YTVjOTk5YiIsImVuYWJsZWQiOnRydWUsImlzUHVibGljIjpmYWxzZSwidGVuYW50SWQiOiIzNWQwZjg2MC1iNzAwLTExZTctODQyYi1lZDZjNGE1Yzk5OWIiLCJjdXN0b21lcklkIjoiMTM4MTQwMDAtMWRkMi0xMWIyLTgwODAtODA4MDgwODA4MDgwIiwiaXNzIjoiVCBSZW1vdEV5ZS5TSyBUZWxlY29tIiwiaWF0IjoxNTA4NjYwNDkyLCJleHAiOjE1MDk1MjQ0OTJ9.oYuSFmtlX74TMDWYLeaMuGoT9mKLdDmqmj03lm73FCjXoxuKX4_nxABRzs2tqwwnR0SPEHJSUHbrib55p9GcZA
{
    "vehicleNo": "11테1111",
    "modelName": "그랜져",
    "modelCode": "HG001",
    "vendor": "현대",
    "modelYear" : "2017",
    "missionType" : "AUTO",
    "fuelType" : "DIESEL",
    "mileage" : 11100,
    "category" : "ETC"
}

HTTP Response

{
    "id": {
        "id": "b13978f0-b706-11e7-842b-ed6c4a5c999b"
    },
    "createdTime": 1508662502894,
    "companyId": {
        "id": "35d0f860-b700-11e7-842b-ed6c4a5c999b"
    },
    "directorId": {
        "id": "13814000-1dd2-11b2-8080-808080808080"
    },
    "currentDriverId": {
        "id": "13814000-1dd2-11b2-8080-808080808080"
    },
    "latestTripId": {
        "id": "13814000-1dd2-11b2-8080-808080808080"
    },
    "serviceType": "getStarted_ex",
    "vehicleNo": "11테1111",
    "modelName": "그랜져",
    "modelCode": "HG001",
    "vendor": "현대",
    "sensorCount": 0,
    "status": "DEACTIVATED",
    "additionalInfo": null,
    "modelYear": 2017,
    "usage": null,
    "category": "ETC",
    "missionType": "AUTO",
    "fuelType": "DIESEL",
    "displacement": 0,
    "delegateUserCount": 0,
    "lastTripMsgType": null
}

cURL Request

아래 코드는 cURL을 사용하여 REST API를 호출할 경우에 기입해야하는 값을 예로 표현합니다.

curl -X POST \
https://smartfleet.sktelecom.com:8080/api/tre/v1/vehicle \
-H 'content-type: application/json' \
-H 'x-authorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJnZXRTdGFydGVkQHNtYXJ0ZmxlZXQuc2t0ZWxlY29tLmNvbSIsInNjb3BlcyI6WyJDT01QQU5ZX0FETUlOIl0sInVzZXJJZCI6IjM1ZDczOWYwLWI3MDAtMTFlNy04NDJiLWVkNmM0YTVjOTk5YiIsImVuYWJsZWQiOnRydWUsImlzUHVibGljIjpmYWxzZSwidGVuYW50SWQiOiIzNWQwZjg2MC1iNzAwLTExZTctODQyYi1lZDZjNGE1Yzk5OWIiLCJjdXN0b21lcklkIjoiMTM4MTQwMDAtMWRkMi0xMWIyLTgwODAtODA4MDgwODA4MDgwIiwiaXNzIjoiVCBSZW1vdEV5ZS5TSyBUZWxlY29tIiwiaWF0IjoxNTA4NjYwNDkyLCJleHAiOjE1MDk1MjQ0OTJ9.oYuSFmtlX74TMDWYLeaMuGoT9mKLdDmqmj03lm73FCjXoxuKX4_nxABRzs2tqwwnR0SPEHJSUHbrib55p9GcZA' \
-d '{
    "vehicleNo": "11테1111",
    "modelName": "그랜져",
    "modelCode": "HG001",
    "vendor": "현대",
    "modelYear" : "2017",
    "missionType" : "AUTO",
    "fuelType" : "DIESEL",
    "mileage" : 11100,
    "category" : "ETC"
}'

4. Let’s Start

등록된 차량과 센서를 통해서 실제 차량 운행 정보를 주고 받는 방법에 대해서 알아봅니다.

4.1 Device Simulator를 통해서 운행 정보 플랫폼에 전송하기