メインコンテンツまでスキップ

ThingsBoardを使ってIoTゲートウェイデバイスにリモートアクセスする方法

· 約8分
moritalous

ThingsBoardはオープンソースのIoTプラットフォームです。 デバイス管理やデータ収集、処理、可視化が可能です。 オープンソースのCommunity Editionの他に商用サービスのProfessional Editionもあります。

https://thingsboard.io/

機能はかなり豊富は印象です。リモートアクセス機能も提供されていますので紹介します。

構成

サーバー側のプラットフォームとデバイス側のゲートウェイソフトを使用します。

  • サーバー ThingsBoard Community Edition
  • デバイス IoT Gateway

デバイス側はIoT Gatewayを使用する必要はなく、HTTPやMQTTを使って自前で開発することも可能です。

今回はお試しなので、ThingsBoard Community EditionIoT 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をコピーします。

192.168.1.113_8080_login(1280x720) (7).png

コピーした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アドレスに変更
  • remoteShelltrueに変更
  • 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サーバーに接続できました。

リモートアクセスの準備

リモートアクセスを行う方法はサーバー側の画面で行います。 メニューのダッシュボードをクリックします。 +ボタンをクリック、新しいダッシュボードを作成をクリックします。

タイトルを入力し追加ボタンをクリックします。

192.168.1.113_8080_login_createPassword_activateToken=f7Fw49y2CCAEqoS4ZaP4vq0F3f4Oug(1280x720) (6).png

ダッシュボードが作成されます。

作成されたダッシュボードを選択し、ダッシュボードを開くをクリックします。

ウィジェットを追加するので編集モードに入るボタン(鉛筆アイコン)をクリックします。

新しいウィジェットを追加ボタンをクリックします。

Control widgetsを選択します。

RPC remote shellを選択します。

エンティティエイリアスが必要なので、入力欄を選択した際に表示される新しいものを作成してください!をクリックします。

エイリアス名を入力、フィルタタイプを単一のエンティティ、タイプをデバイス、デバイスを作成した前の手順で作成済みのデバイスを選択します。

右下の変更を適用するボタンをクリックし、編集モードを終了します。

注記

これで準備は完了です。

リモートアクセスの実行

ここまでできたら、もうウィジェット上でターミナルが表示されていると思います。

フルスクリーンに拡大ボタンをクリックすると、全画面で表示されます。

注意

今回はIoT Gatewayがコンテナ内で実行されているため、Raspberry Piホストの操作はできません

注記

リモートアクセスができました。