はじめに
車の任意保険でドライブレコーダー特約があります。
特約に加入するとドライブレコーダーが送られてきて車に装着していますが、とある日、安全運転診断レポートが送られてきました。
ドライブレコーダーにはモバイルSIMが内蔵されていて、位置情報や運転状況(加速度、各速度など)の情報が定期的に保険会社へ送信されていることを認識しました。
これらのデータは直接確認することができず、どのようなデータが取れるのか Node-RED を使用して車IoTのデータを取得してみました。
準備
車載側はモバイル版Node-REDを使用します。
iOS版はNode-PAD、Android版はRedMobileです。
- Node-PAD 1.2.1
- RedMobile 7.1.4
モバイル版のノード
モバイル版Node-REDにはスマートフォンに備わっているセンサーからデータを取得できるノードが存在します。
手順
今回はlocationノードを使用して位置情報を取得して、地図データにマッピングしてみます。
モバイル版Node-REDで取得した位置データをMQTTブローカー経由でPCのNode-REDに表示します。
モバイル版Node-REDフロー
Node-PAD(iOS版)のlocationノードは毎秒位置データを出力します。
毎秒だとデータ量が多いので、delayノードを使用して流量を抑えます。
今回は5秒毎に位置データを送信することにしました。
RedMobile(Android版)のlocationノードはそのままでは位置データが出力されません。
subscribeノードを使用して、Android OSの位置データを購読(subscribe)する必要があります。
injectノードとsubscribeノードを接続して位置データの出力を開始すると、locationノードは5秒毎に位置データを出力します。出力を停止する場合は、unsubscribeノードを使用します。
MQTTブローカー
今回は無償で利用できるshiftr.ioを使用しました。
他にはbeebotteも無償で利用可能です。
PCのNode-REDフロー
地図データの表示にはweb-worldmapノードを使用しました。
ブラウザで
http://127.0.0.1:1880/worldmap
へアクセスすると地図が表示されます。
スタート地点の表示がヨーロッパとなっているため、プロパティのStartパラメータの緯度(Latitude)・経度(Longitude)と縮尺(Zoom)の値を設定します。
BasemapはOpenStreetMapを選択しました。
残念ながら、Node-PAD(iOS版)とRedMobile(Android版)とで、locationノードが出力するJSONフォーマットが異なりますので、それぞれchangeノードでweb-worldmapノードでピン表示可能なフォーマットへ変換します。
Node-PAD(iOS版)用changeノード
RedMobile(Android版)用changeノード
取得したデータの表示
モバイル版Node-REDから送信された位置データをMQTT経由でPC版Node-REDで受信して、地図データへ表示した結果です。
まとめ
専用機材やアプリ開発をしなくても、普段使用しているスマートフォンやPCでNode-REDフローを作成するだけで位置データの取得から地図データへの表示ができました。
ジャイロデータ(加速度、角速度)も合わせて取得すれば車IoTのデータを見える化できると思います。
では、良きNode-REDライフを!