2023年4月2日日曜日

ログ取りサーバーthingsboardをRaspberry Piで動かしてデータを表示


背景

以前openremoteを扱いましたが、https無しで動かすのが難しく、動かせても労力に見合わなそうだと判断して別のプログラムを探しました。
探した中で見つけたthingsboardを試したところ自分が求める機能を動かせたので、備忘録を兼ねて動かし方を記事に残します。

使ったもの

  • Raspberry Pi 4B + Raspberry Pi OS 64bit
  • docker
    下記のページを参考にしてRaspberry Pi OSにインストールしてください
    Install Docker Engine on Debian
  • ノートPC
    ubuntu22.04をインストールしたPCで、ssh接続してraspberry piの操作やデータ送信を行いました

thingsboardを起動

thingsboardのLinuxとMac向けの説明を参考に起動します。

Installing ThingsBoard using Docker (Linux or Mac OS)

この記事では~/dockerprojects/thingboardに関連ファイルを配置します。

まず、ファイルを配置するフォルダを作り、コンテナの起動に必要なファイルの作成と権限設定を行います。
Raspberry Piのターミナル
mkdir -p ~/dockerprojects/thingsboard
cd ~/dockerprojects/thingsboard
mkdir -p ~/.mytb-data && sudo chown -R 799:799 ~/.mytb-data
mkdir -p ~/.mytb-logs && sudo chown -R 799:799 ~/.mytb-logs

次にthingsboardのコンテナなどを指定するyamlファイルを作ります。
Raspberry Pi上
~/dockerprojects/thingsboard/docker-compose.yml
version: '3.0'
services:
mytb:
restart: always
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

関連ファイルとyamlファイルを配置したらdocker composeコマンドで起動します。
初回起動時はコンテナをダウンロードするので時間がかかります。自分の環境だと10分ほどかかりました。
Raspberry Piのターミナル
cd ~/dockerprojects/thingsboard
docker compose up -d

ログは下記のコマンドで確認できます。
Raspberry Piのターミナル
cd ~/dockerprojects/thingsboard
docker compose logs -f

稼働状況は下記のコマンドで確認できます。
Raspberry Piのターミナル
cd ~/dockerprojects/thingsboard
docker compose ps

ログインしてデバイスのアクセストークンを取得

thingsboard公式解説Getting StartedのPrerequisitesの途中からStep 2. Connect deviceの途中までの操作です。

ノートPCからRaspberry Piで動かしているthingspeakにログインします。
それに向けてRaspberry PiのLANのipを確認します。

Raspberry Piのターミナル
ip a show | grep 192

自分の環境だと192.168.1.171でした。

ということで、確認したipの8080ポートをノートPCのブラウザで開きます。
何と一部の表記が日本語になっています。



最初のログインはGetting Startedで解説されている通り下記のテナントアカウントで行えます。
username: tenant@thingsboard.org
password: tenant

この記事での操作は説明しませんが、システムの管理者アカウントはこちらです。
Demo Account一覧にあります。
username: sysadmin@thingsboard.org.
password: sysadmin.

公開urlで運用する場合は、悪用防止の為上記のテナントとシステム管理者アカウントはusernameとpasswordを変えてください。

ログインすると下記画像のようなページが表示されます。


ログインできたらログの送信に必要な情報を取得します。
デバイスを選び、表示される一覧のThermostat T2を選びます。


Thermistat T2の詳細画面が表示されるので、コピーアクセストークンを押してトークンを取得します。


ここでコピーしたアクセストークンをデータ送信時に利用します。

ノートPCからデータを送信

thingsboard公式解説Getting StartedのStep 2. Connect deviceの後半の操作です。

curlコマンドを利用して情報を送信します。
rapsberry piのurlと先程取得したアクセストークンをshellの変数として定義してコマンドを組み立てます。
自分の環境ではアクセストークンは「T2_TEST_TOKEN」送信先はLANのipと8080ポートで「http://192.168.1.171:8080」となりました。
Linux系 PCのターミナル
ACCESS_TOKEN=T2_TEST_TOKEN
THINGSBOARD_HOST_NAME=http://192.168.1.171:8080
curl -v -X POST -d "{\"temperature\": 25}" $THINGSBOARD_HOST_NAME/api/v1/$ACCESS_TOKEN/telemetry --header "Content-Type:application/json"

Windowsの場合は変数定義にsetが必要で、変数呼び出しは変数名を%で囲みます。
curlコマンドにはexeを付けます。
Windows PCのターミナル
set ACCESS_TOKEN=T2_TEST_TOKEN
set THINGSBOARD_HOST_NAME=http://192.168.1.171:8080
curl.exe -v -X POST -d "{\"temperature\": 25}" %THINGSBOARD_HOST_NAME%/api/v1/%ACCESS_TOKEN%/telemetry --header "Content-Type:application/json"

上記のコマンド実行で25度の温度情報を送信できます。

データをグラフで確認

ダッシュボードを押して、一覧の中にあるThermistorsを押します。


いくつか枠が表示される中でThermostats一覧があるので、その中のThermostat T2の右側のメニューを押し、出てきた一覧の中からchartを押します。


グラフが表示されます。
下記の図は試験として値を変えて何度か送信したので線が伸びてますが、値が1つだけの場合は縦棒が表示されます。


時計マークかその横の文字を押すと表示間隔設定画面を開けます。



30日にすると過去約1ヶ月の情報を見れます。



1周間前に送信した情報を見れました。


上記の更新だけでは一時的な時間変更とみなされて、ページを離れると元の設定に戻ります。
表の表示時間間隔設定を保存したい場合、右下の編集ボタンを押し、変化した画面のチェックボタンを押します。



上記の保存操作を行うと、ページを開き直しても設定した間隔設定が維持されます。

データを一覧で確認

一覧表示はサンプルのダッシュボードには無いのでデバイスの該当するデータを辿って表示します。

デバイスを選び、表示される一覧のThermostat T2を選びます。


最新テレメトリ、temperature、ウィジェットで表示を選びます。


分表示だと表示される情報が少ないので30日に変更します。


見れました。


縦方向が短いので表示される情報が少なく見えますが、スクロールすると過去のデータを見れます。


終わり

thingsboardのコンテナを起動し、データの受信と表示ができました。

openremoteの時はhttpsとmqttが必須で送信が手間でしたが、thingsboardはhttp+curlで送信出来るのでそれに比べると楽でした。

参考

オープンソースのログ取りサーバーを検索していてopenremoteの事を知る切っ掛けになった記事です
5 Open-Source IoT Platforms: Making Innovation Count

thingsboardの公式説明ページです
Installing ThingsBoard using Docker (Linux or Mac OS)
Getting Started

デモアカウント一覧ページです
Demo Account

変更履歴

2023.04.30 初期のシステム管理者としてのログイン情報を追加しました。
2023.05.10 Windowsのcurlコマンドを追加しました。

0 件のコメント :