W3C において仕様策定中の W3C Vehicle API の早期実装環境を利用して、自動車の発生する様々なデータを使用したWebアプリケーションを構想し実際に開発することで、自動車とWebを組み合わせた新鮮なアイデアを創発することを目的とします。
自動車が発生する様々な情報をWebアプリケーションから利用可能にすることを目的とするAPI。
本APIを定義することを目的の一つとして、2013年に Automotive and Web Platform Business Group が発足した。
その後 API の定義は W3C Automotive Working Groupに引き継がれ、現在は2018年のfirst halfを目途に仕様の勧告化を目標に活動している。
注)W3C Vehicle API は、以降に述べる通り VISS(Vehicle Information Service Specification)と VIAS(Vehicle Information API Specification)の2つの部分から構成される仕様だが、本頁では簡潔さのために、まとめて W3C Vehicle API と表記します
W3C Vehicle APIは、以降に述べる2つの仕様から構成される。
下図は W3C Vehicle APIのユースケースの一つのイメージ図である。

https://w3c.github.io/automotive/vehicle_data/vehicle_information_service.html
図のXXX部分の通信にあたる。
VISSが定義するAPIでは、JSON形式のリクエストメッセージおよびレスポンスメッセージを、Vehicle Information Service Server(VISServer)とクライアントWebアプリケーションがやり取りすることで、車両情報が提供される。
https://w3c.github.io/automotive/vehicle_information_api/vehicle_information_api_specification.html
図のxxx部分の通信にあたる。
VIASが定義するAPIでは、クライアントWebアプリケーションは、通信で交換されるメッセージのフォーマット等を意識せず、より抽象的なインターフェースで車両情報が提供される。
- VISS/VIASの両APIともに、下層では車両情報を提供するサーバとの通信が行われるため、APIは非同期な動作を基本とする。
VIASでは、利便性のため JavaScriptのPromise形式のAPIも利用可能となっている。
VSS (Vehicle Signal Specification) は、GENIVI Alliance が定義する 車両のデータモデルの仕様。
図のようにツリー構造で車両全体のデータを網羅する。
VISS/VIASでは、利用対象の車両データを指定するために VSS が定義するデータモデルのツリー構造、名前付けを利用する。
注)GENIVI Alliance はIVIシステム(次世代車載情報通信システム)の標準化を目指す非営利団体。欧州の自動車メーカーが中心に設立した。

対象車両: TOYOTA Prius 3rd generation
TOYOTA Priusでのテスト走行により走行データを収集しました

VISS/VIAS仕様では多数のAPIが定義されているが、本ハッカソンでは以下のものが使用可能。
| API | 説明 |
|---|---|
| connect | VISServerへのWebSocket接続を確立する |
| disconnect | VISServerへのWebSocket接続を切断する |
| get | データパスを指定して、車両データを取得する |
| subscribe | データパスを指定して、車両データの継続的な通知を受ける |
| unsubscribe | 登録した subscribe を解除する |
| unsubscribeAll | 登録済みの全ての subscribe を解除する |
4.使用可能データ項目 を参照してください
(例:http://52.91.85.165:3000/cluster/controlindex.html?json=20180104-1542_okunikko-ski_kegon-no-taki.json)
【注】http://52.91.85.165:3000/cluster/controlindex.html のようなパラメータなしのURLでのアクセスは避けてください。
- 1stサーバ: http://52.91.85.165:3000/cluster/controlindex.html?json=20180104-1542_okunikko-ski_kegon-no-taki.json
- 2ndサーバ: http://52.200.145.70:3000/cluster/controlindex.html?json=20180104-1542_okunikko-ski_kegon-no-taki.json
- 3rdサーバ: http://18.218.22.209:3000/cluster/controlindex.html?json=20180104-1542_okunikko-ski_kegon-no-taki.json
(他の利用者と重複しやすいID(例:12345, abcde他)は避けてください。 確実に重複を避けるためにはメールアドレスの使用が有効です。)
動画画面上で再生ボタンを押すと、動画がスタートすると同時に、車両データの配信が開始します。
$ git clone https://github.com/access-company/AutoWeb-Hackathon.git
- PORTは 3001 に固定
(ハッカソン環境をホストするサーバーは、参加者のWebアプリケーション配置用に開放していませんので、各自でHTTPサーバーをご準備ください)
簡易なHTTPサーバーとして python の SimpleHTTPServer の場合は下記を実行
$ cd ApplicationSample
$ python -m SimpleHTTPServer
(例:上記のpython の simpleHTTPServer を使った場合、defaultのポートが8000なので URLは以下
http://127.0.0.1:8000/subscribeSpeed_callback.html)
使用手順は上記の subscribeSpeed_callback.html と同じ。
各走行パターンのデータを、地図とグラフ表示で一覧するツール。利用したいデータの変化(例えば急加速、急減速など)が含まれる走行パターンを探すことができる。

- 1stサーバ: http://52.91.85.165:3000/osm_mapping.html
- 2ndサーバ: http://52.200.145.70:3000/osm_mapping.html
- 3rdサーバ: http://18.218.22.209:3000/osm_mapping.html
- MapToolのURLをChromeブラウザで開く
- 画面上のドロップダウンリストから走行パターンを選択する
- 走行パターンのデータが、地図上へのマッピングとグラフにより表示される
注) 取り扱うjsonファイルが大きいため、表示まで時間がかかる場合があります
- 走行データファイル全体をローカルにダウンロードして利用することも可能です。
走行データは本githubの以下パスに配置してあり、リポジトリのクローンにより取得できます。
- https://github.com/access-company/AutoWeb-Hackathon.git
- json/YYYYMMDD-xxxxxx.json
- https://github.com/access-company/AutoWeb-Hackathon.git
ApplicationSample/getSpeed_callback.html 参照
vias.get('Signal.Drivetrain.Transmission.Speed',
function(_val) {
// Get success
document.getElementById("VehicleSpeed").innerHTML = Math.floor(_val /1000);
},
function(_err) {
// Get error
document.getElementById("VehicleSpeed").innerHTML = "get error";
});
ApplicationSample/getSpeed_promise.html 参照
vias.get('Signal.Drivetrain.Transmission.Speed').then((_val) => {
// Get success
console.log("speed = "_val /1000);
}).catch((_err) => {
console.log("Error" + _err);
});
ApplicationSample/subscribe_callback.html 参照
vias.subscribe('Signal.Drivetrain.Transmission.Speed',
function(_val) {
console.log("speed = "_val /1000);
},
function(_err) {
console.log("Error" + _err);
});
- 取得可能データのDataPathについては以下ファイルに定義があります
https://github.com/access-company/AutoWeb-Hackathon/ApplicationSample/viasTestAll.html
サンプルコードは、本リポジトリの以下パスに格納されています。
https://github.com/access-company/AutoWeb-Hackathon/tree/master/ApplicationSample
負荷分散のため、サーバは複数インスタンスを準備しました。
下記 IPアドレスを指定して使用してください。
- Server1: 52.91.85.165
- Server2: 52.200.145.70
- Server3: 18.218.22.209
| interface | attribute | unit | 備考 |
|---|---|---|---|
| VehicleSpeed | speed | m/h | 車両速度 |
| EngineSpeed | speed | rpm | エンジン回転数 |
| VehiclePowerModeType | value | - | イグニッションの状態。offとrunningのみ取得可。 0:off, 1:running, 2:accessory, 3:accesory2, 4:engine-cranking |
| AccelerationPedalPosition | value | % | |
| Transmission | mode | - | グラフ上はGearと表示。取得状況が不安定な場合があります。 -1:reverse, 0:neutral, 1:parking, 2:low, 3:drive |
| LightStatus | head | - | 0:off, 1:on |
| brake | - | 0:off, 1:on | |
| parking | - | 0:off, 1:on 取得状況が不安定な場合があります |
|
| Fuel | level | % | 燃料残量 |
| instantConsumption | g/sec | 燃料消費量 | |
| Acceleration | x | G | 左右方向加速度(座標系説明参照) |
| y | G | 進行方向加速度(座標系説明参照) | |
| z | G | 鉛直方向加速度(座標系説明参照) 重力により静止時 +1G が加わる |
|
| Gyro | x(pitch) | degree/sec | 角速度(座標系説明参照) |
| y(roll) | degree/sec | 角速度(座標系説明参照) | |
| z(yaw) | degree/sec | 角速度(座標系説明参照) | |
| SteeringWheel | angle | degree | left: plus, right:minus |
| BrakeOperation | brakePedalDepressed | 0/1 | 0:off, 1:on |
| Odometer | distanceTotal | km | 総走行距離 |
| Door | status | - | front-right, front-leftのみ。0:open, 1:close |
| Seat | seatbelt | - | front-rightのみ。0:open, 1:fastened |
| ParkingBrake | status | - | 0:off, 1:on |
| Gps | latitude | degree | 緯度 |
| longitude | degree | 経度 | |
| altitude | m | 高度(精度に制限があり参考値となります) | |
| heading | degree | North:0, East:990, South:180, West:270 | |
| speed | km/h | GPS情報から計算した移動速度 |
| interface | attribute | unit | 備考 |
|---|---|---|---|
| JINS MEME | Awakeness(Driver) | 0-100 | 運転者の覚醒度 |
| Attentiveness(Driver) | 0-100 | 運転者の注意レベル | |
| Awakeness(Passenger) | 0-100 | 助手席同乗者の覚醒度 | |
| Attentiveness(Passenger) | 0-100 | 助手席同乗者の注意レベル | |
| Awakeness(Backseat) | 0-100 | 後部座席同乗者の覚醒度 | |
| Attentiveness(Backseat) | 0-100 | 後部座席同乗者の注意レベル | |
| Sdtech | Concentration | 0-100 | 運転者集中度 |
| iWatch | Heartrate | 拍/分 | 心拍数 |
| iPhone | AtomPressure | kPa | 大気圧 |
| Altitude | m | iPhoneセンサによる高度 | |
| MESH | Temerature | celsius | 車内気温 |
| Humidity | % | 車内湿度 | |
| Trunk | 0 / 1 | トランク開閉(0:閉、1:開) | |
| BOCCO | Window | 0 / 1 | 運転席窓開閉(0:閉、1:開) |
| Aircon | 0 / 1 | エアコンOn/Off(0:Off、1:On) |
DataPathの文字列は、サンプルアプリの一つ viasTestAll.html に定義の記載がありますので、そちらを参照、利用してください。
- 気圧・気温・センサー MESH(温度/湿度センサー、ボタンセンサー)を利用しています。
MESHセンサーの紹介動画はこちらです。 https://youtu.be/Bbk86wGizqw
MESHセンサー → iPhone → IFTTT → google spread sheet →変換スクリプト → クラウド という構成で取得しています。
- BOCCOセンサー Bocco → iPhone → mythings → IFTTT → google spread sheet →変換スクリプト → クラウド という構成で取得しています。
BOCCOセンサーの紹介動画はこちらです。 https://www.youtube.com/watch?v=k-e6gyyUr7k&feature=youtu.be
走行パターンリスト
- 利用可能な走行パターン(経路、発生イベント)については下記リストをご参照ください。
また各走行パターンのデータの詳細についてはマップツールでご確認ください。
各協賛APIの詳細については、Slackの各社チャンネルでご確認ください。 https://automotiveweb2018.slack.com/messages/C8SNY3JQ4/

