ThingsBoard でトラッカーの位置情報を表示する

2021年03月15日
by RAMBO

 

前回のMetabaseによるデータ可視化に続いて、今回はTnigsBoardを紹介します。

ThingsBoardとは、オープンソースのIoTプラットフォームで、データを収集し、可視化できます。
一般的な可視化ツールと違い、データベースをシステム内に持ち、そこにデータが保管されるため、データベース設計が不要となります。

サンプルとして位置情報を取得し、OpenStreetMap上へプロットされるダッシュボードを作成してみます。

Amazon EC2 上に構築したThingsBoard Community Edition を使用しています。

 


1. ログイン

ブラウザでThingsBoardのURLにアクセスし、ログインします。

 

2. デバイスの追加

左側メニューから[デバイス]を選択します。
「デバイス」の画面が表示されます。
[+]をクリックし、表示されるリストから[新しいデバイスを追加する]を選択します。

「新しいデバイスを追加する」ダイアログが表示されます。
デバイスの名称を入力し、[追加]をクリックします。

デバイスが登録されます。

をクリックします。

「デバイス資格情報」ダイアログが表示されます。
アクセストークンをメモし、[キャンセル]でダイアログを閉じます。

3. データの送信

ThingsBoard の REST API を使用してデータを送信します。
今回は実際のデバイスではなく、Windows PCからの curl コマンドでデータを送信してみます。

緯度・経度と温度を送ってみます。
送信するデータは次のJSONです。


{
"latitude": 43.692332,
"longitude": 142.513703,
"temperature": 35
}

送信する curl コマンドは次になります。

「XXX.XXX.XXX.XXX」はIPアドレス、「PPPP」はポート番号、「AAAAAAAAAAAAAAAAAAA」はデバイスのアクセストークンに置き換えてください。


curl --request POST --header "Content-Type:application/json"  --data "{\"latitude\": 43.692332, \"longitude\": 142.513703, \"temperature\": 35}" http://XXX.XXX.XXX.XXX:PPPP/api/v1/AAAAAAAAAAAAAAAAAAA/telemetry

ThingsBoard の「デバイス」画面で、追加したデバイスをクリックします。
表示される「デバイスの詳細」画面で、[最新テレメトリ]をクリックします。

上記 curl コマンドを実行すると、最新テレメトリにデータが表示されます。

4. ダッシュボードの作成

左側メニューから[ダッシュボード]を選択します。
「ダッシュボード」の画面が表示されます。
[+]をクリックし、表示されるリストから[新しいダッシュボードを作成…]を選択します。

「ダッシュボードを追加」ダイアログが表示されます。
タイトルを入力し、[追加]をクリックします。

ダッシュボードが登録されます。

をクリックします。

空のダッシュボードが表示されます。
右下の編集アイコンをクリックします。

エンティティエイリアスアイコンをクリックします。

「エンティティエイリアス」ダイアログが表示されます。
[エイリアスを追加する]をクリックします。

「エイリアスを追加する」ダイアログが表示されます。
下記のように設定します。

設定したら、[追加]をクリックします。

「エンティティエイリアス」ダイアログに戻ります。
[セーブ]をクリックします。

 

[+ 新しいウィジェットを追加]をクリックします。

「ウィジェットを選択」画面が表示されます。
現在のバンドルで Maps を選択し、
時系列から Route Map – OpenStreetMap を選択します。

「ウィジェットを追加」ダイアログが表示されます。
[データ]でデータソースを追加し、[追加]をクリックします。

ダッシュボードの編集画面に戻ります。
作成したMapのウィジェットが表示されるので、curl コマンドでデータを送信してみます。
マーカーがプロットされることを確認し、保存アイコンをクリックします。

以上でサンプル作成については終了です。

今回はMap上にマーカーをプロットしましたが、他にもいろいろな可視化用ウィジェットが用意されています。 リアルタイムにデータを確認する用途ではなかなか使えるのではないでしょうか。