ThingsBoardはオープンソースのIoTプラットフォームです。 デバイス管理やデータ収集、処理、可視化が可能です。 オープンソースのCommunity Editionの他に商用サービスのProfessional Editionもあります。
機能はかなり豊富は印象です。リモートアクセス機能も提供されていますので紹介します。
構成
サーバー側のプラットフォームとデバイス側のゲートウェイソフトを使用します。
- サーバー
ThingsBoard Community Edition
- デバイス
IoT Gateway
デバイス側はIoT Gateway
を使用する必要はなく、HTTPやMQTTを使って自前で開発することも可能です。
今回はお試しなので、ThingsBoard Community Edition
とIoT Gateway
を単一のRaspberry Pi上で構築してみます。
なお、ディレクトリ構成はこのようにしています。
.
├── device
│ └── docker-compose.yaml
└── server
└── docker-compose.yaml
2 directories, 2 files
ThingsBoard Community Editionの構築
インストール手順に従いインストールします。今回はDockerを使用して構築します。
公式サイトの手順を少しカスタマイズしています
1. 永続化ディレクトリの作成
データとログ用のディレクトリを作成し、Docker内で使用されるユーザーに権限を合わせます。
mkdir -p .mytb-data .mytb-logs
sudo chown -R 799:799 .mytb-*
2. docker-compose.yamlの作成
docker-compose.yamlを作成します。
version: '2.2'
services:
mytb:
image: "thingsboard/tb-postgres"
ports:
- "8080:9090"
- "1883:1883"
- "7070:7070"
- "5683-5688:5683-5688/udp"
environment:
TB_QUEUE_TYPE: in-memory
volumes:
- ./.mytb-data:/data
- ./.mytb-logs:/var/log/thingsboard
3. 起動する
起動します。
docker compose up
起動が完了するまで数分かかります。
起動後はブラウザでhttp://[IPアドレス]:8080
にアクセスし、ログイン画面が表示されます。
サーバー側の設定
ログイン
デフォルトで用意されているユーザーは以下のとおりです。
権限 | メールアドレス | パスワード |
---|---|---|
System Administrator | [email protected] | sysadmin |
Tenant Administrator | [email protected] | tenant |
Customer User | [email protected] | customer |
System Administrator
でログインします。
機能もりだくさん!!
テナント作成
初期状態でTenant
というテナントが作成されていますが、新しくテナントを作成します。
テナント管理ボタン
をクリックします。
+ボタン
をクリックし、テナントを作成します。タイトルだけ入力すればOKです。
テナントが作成できました
テナント管理者の作成
作成したテナントをクリックし、テナント管理者の管理
をクリックします。
+ボタン
をクリックします。
メールアドレスを入力し、追加ボタン
をクリックします。
するとアクティベーションリンクが表示されるのでURLをコピーします。
コピーしたURLにアクセスすると、テナント管理者のパスワード作成画面が表示されます。
パスワードを入力すると、テナント管理者としてログインされます。
テナント管理者が作成できました。
デバイスを登録
端末管理のデバイスボタン
をクリックします。
+ボタン
をクリック、新しいデバイスを追加する
をクリックします。
名
を入力し、ゲートウェイです
にチェックを入れて追加
をクリックします。
追加したデバイスを選択し、コピーアクセストークン
ボタンをクリックします。
ゲートウェイのセットアップにこのトークンが必要です。
以上で、クラウド側の設定は一通り完了です。
IoT Gatewayの構築
続いて、IoT Gatewayを構築します。 こちらもインストール手順に従ってインストールを進めます。
インストール手順はdockerコマンドで起動するスタイルですが、docker composeで起動する形に変更しました
1. docker-compose.yamlの作成
docker-compose.yamlを作成します。
version: '2.2'
services:
tb-gateway:
image: "thingsboard/tb-gateway"
volumes:
- ./.tb-gateway/logs:/thingsboard_gateway/logs
- ./.tb-gateway/extensions:/thingsboard_gateway/extensions
- ./.tb-gateway/config:/thingsboard_gateway/config
2. 一旦起動する
docker compose up
起動すると、.tb-gateway/config``.tb-gateway/extensions``.tb-gateway/logs
が作成されます。
また、configディレクトリ内にはデフォルトの設定ファイルが作成されます。
設定が必要なので、起動が完了した後、Ctrl+C
で終了します。
3. 設定ファイルを変更する
.tb-gateway/config/tb_gateway.yaml
に設定を行います。
設定するのは以下のとおりです。
- hostをRaspberry PiのIPアドレスに変更
remoteShell
をtrue
に変更security.accessToken
に前の手順で取得したトークンに変更connectors
以降をすべてコメントアウト
編集にはroot権限が必要ですので、sudo nano .tb-gateway/config/tb_gateway.yaml
で編集します。
IoT Gatewayを起動
設定が完了したら再度起動します。
docker compose up
うまくサーバーに接続できると|INFO| - [tb_device_mqtt.py] - tb_device_mqtt - _on_connect - 139 - connection SUCCESS"
とログが出力されます。
IoT GatewayをThingsBoardサーバーに接続できました。
リモートアクセスの準備
リモートアクセスを行う方法はサーバー側の画面で行います。
メニューのダッシュボード
をクリックします。
+ボタン
をクリック、新しいダッシュボードを作成
をクリックします。
タイトル
を入力し追加
ボタンをクリックします。
ダッシュボードが作成されます。
作成されたダッシュボードを選択し、ダッシュボードを開く
をクリックします。
ウィジェットを追加するので編集モードに入る
ボタン(鉛筆アイコン)をクリックします。
新しいウィジェットを追加
ボタンをクリックします。
Control widgets
を選択します。
RPC remote shell
を選択します。
エンティティエイリアス
が必要なので、入力欄を選択した際に表示される新しいものを作成してください!
をクリックします。
エイリアス名
を入力、フィルタタイプを単一のエンティティ
、タイプをデバイス
、デバイスを作成した前の手順で作成済みのデバイスを選択します。
右下の変更を適用する
ボタンをクリックし、編集モードを終了します。
これで準備は完了です。
リモートアクセスの実行
ここまでできたら、もうウィジェット上でターミナルが表示されていると思います。
フルスクリーンに拡大
ボタンをクリックすると、全画面で表示されます。
今回はIoT Gatewayがコンテナ内で実行されているため、Raspberry Piホストの操作はできません
リモートアクセスができました。