Raspberry Pi(ラズパイ)で IoTダッシュボードThingsBoardを動かしてみた
はじめに
本記事ではIoTダッシュボードであるThingsBoardのCommunity Eddtion版をラズベリーパイで動かした際に出来たことや見た目について説明します。
そもそもThingsBoardとは何かというと、IoT向けのダッシュボードアプリケーションとなります。センサーから取得した情報をグラフ表示したり、表形式で時間ごとに表示したりすることが出来ます。
ラズベリーパイでせっかくセンサーデータが収集したのに、肝心なデータの表示をどうしようかを悩む方は多いと思います。本ブログでもセンサーデータをAWS IoTに飛ばしてみたり、GoogleのSpreadSheetに飛ばしてみたりと試してみてはいたものの、クラウドを使わずにローカル環境で、かつ無料でどうにか出来ないかを色々と考えていた際にこのThingsBoardを見つけました。
Professional Editionも存在するようなので、この無償のCommunity Editionでどこまで出来るかわからないけど、とりあえずやってみよう!という記事になります。
インストールについて
そもそもThingsBoardってラズベリーパイのようなスペックのデバイスで動くものなの?という疑問もありましたが、なんと公式サイトにラズベリーパイ用のインストールガイドがあるので…きっと動くんだよね、という気持ちで恐る恐るインストール。お試しされたい方はこちらを参考にどうぞ。
https://thingsboard.io/docs/user-guide/install/rpi/
詳細覚えていませんが、Javaのversionの箇所だけはコピペでは動かないのでversionを合わせてあげる必要があったかと思います。(2021/06/12時点)
インストール作業と立ち上げにはインストールガイドに記載されている通り少し時間がかかりますが、立ち上がった後のWebインターフェースは意外にもサクサク動きます。
Dockerでの提供もあるようなので、そちらが良いという方はDocker版の方が色々と使いやすいと思います。ただ、ラズパイ1つでデータ収取とIoTダッシュボードまで兼ねる!という方が私は面白いと思います。
インストール後に実施したこと
インストールが完了すると3つのアカウントが自動で作成されます。
- System Administrator … システムの設定が行える。
- Tenant Administrator … これは顧客毎にサービスを提供するテナントの管理が行える。
- Customer User … おそらくデフォルトで作られているテナントにアクセスする客を想定したアカウント。
インストール後、raspberrypi.local:8080にアクセスしてみるとこんな感じでした。
各アカウントでログインしてみても細かいパラメータはよくわからず、でもとりあえずテナントを作成してその中で作業してみようと自分のメールアドレスを登録してActivateしてテナント管理者としてログイン。
ここからどうするんだ…ということでドキュメントを眺めていく。
https://thingsboard.io/docs/reference/http-api/
このあたりを読んでいくとHTTP RESTでセンサーのデータの送信が出来るようなのだが、$ACCESS_TOKENが何なのかわからない。。ここでThingsBoard側を操作しているとデバイス作成時にクレデンシャル情報として任意の$ACCESS_TOKENが設定できることを確認。
これを設定して、データを投げるのは…Noderedでダミーデータを作ろう。ということで、Noderedから定期的にHTTP RESTでPostをしていくコードを作成。Noderedもラズパイで動いてますからね、全てがラズパイで動くってのが良いと思いました。(実データを用意するのがもっと良いですが)
ということで、画面を眺めているとデバイス画面の最新テレメトリの箇所に送信したデータが表示されていることを確認。天才か。
多分データがあるんだから後は画面を作るだけだろうということで、ダッシュボードの画面にいって、気になるウィジェットを選んで立ち上げようとするも、センサーデータが表示されない。。何だ何だと色々と調べてみると最初にセンサーデータをエンティティエイリアスとして設定してあげないとウィジェットでそのデータを選ぶことも出来ないようだ。こんな感じ。
他に実施した細かい作業内容はよく覚えてもいないのですが、ここでついにダッシュボードの作成に成功。
出来上がったもの
こんな感じになりました。
控え目にいってもこれが無償って凄すぎませんか?グラフや表形式の表示はもちろん、ちょっとカッコ良いグラフなんかもデフォルトで用意されていますし、Map用のウィジェットもあるのでおそらくGPS付きのセンサー移置を表示するような使い方も可能なのだと思われます。
データの送信形式にもいくつか種類がありましたが、とりあえずHTTP(REST)とMQTTでセンサーデータの送信が可能であることを確認しました。
最後に
本記事ではラズベリーパイにThingsBoardのCommunity Edition版をインストールして動かしてみて、実施したこと、出来たことを記載致しました。これは本当に無償で良いのか?というクオリティですが、やはり設定や操作方法は相当厳しいものがあり、誰にでも使えるようなものではなさそう、というのが正直な印象です。
ちょっとこれで何か作ってみたいとか、そもそも動かし方がわからない、そういった話も歓迎です。何か気になる点がありましたら是非ご連絡下さい。
ディスカッション
コメント一覧
はじめまして!
記事、拝見致しました。
私は、Arduino(ESP等)で気温,湿度などのデータを取得出来るデバイスを作りました。
それに伴い、データをどこかに蓄積しグラフ化など加工したいと思っております。
しかし、クラウドサービスやスプレッドシートなどで行うとアップデートなどで使えなくなる可能性があると思い、一度作ったスクリプトが永久的に使える物を探しておりました。
本記事で、ローカル環境で使えると記載されていましたが、上記のように活用出来るという内容であっていますでしょうか??
またこれはウェブ上でデータが見れるようになっているのでしょうか?(特定のデバイスでしか見れない?)
お手数ですが、ご返信頂けると幸いです。
浅野様
記事を読んで頂き有難うございます。
デバイス、サーバ側でのアップデートの状況に依らず永久的に使えるとは申し上げにくいのですが、
こちらについてはデバイス・サーバー間のデータのやり取りはMQTTで送信する、HTTPSで送信する、
といったところを決めておくことで、長期に渡り利用し続けることが可能ではないかと考えております。
> 本記事で、ローカル環境で使えると記載されていましたが、
> 上記のように活用出来るという内容であっていますでしょうか??
はい、本記事記載のやり方の場合、センサーデータはラズベリーパイの中に蓄積され、
そのデータを加工してグラフ表示等を行うことが可能です。まさにIoT向けのサービス
ですので、浅野様のご利用用途にピッタリなのではないかと思います。
> またこれはウェブ上でデータが見れるようになっているのでしょうか?
> (特定のデバイスでしか見れない?)
はい、こちらは特定のデバイスからのみではなく、ウェブ経由でのデータ閲覧が可能です。
本記事の内容では自宅のネットワークに接続しているラズベリーパイ上でサービス(Webサーバー)を
動かしておりますので、自宅内のPC等からのグラフ等を表示するダッシュボード画面へのアクセスが可能です。
この場合、一般的なインターネット経由でダッシュボード画面へのアクセスは出来ません。
もし、インターネット経由でダッシュボード画面へのアクセスが必要ということであれば、
こちらはやはりクラウド上でサービスを立ち上げるのが良いかと思います。
こちらでご回答となっておりますでしょうか?