3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Beebotte のダッシュボードで M5StickC から送った数値をグラフ化する(UIFlow + MQTT でデータ送信)

Last updated at Posted at 2021-01-03

はじめに

この記事は、M5StickC から送った数値のデータを Beebotte のダッシュボードで可視化してみる、という内容です。プログラムの作成にはビジュアルプログラミング環境である UIFlow を使っています。

以下が最終的にダッシュボード上に出力されたグラフになります。
グラフ化された画面.jpg

Beebotte

この記事で可視化に利用する Beebotte は、MQTT・WebSocket によるデータのやりとりをする機能や REST API のインタフェース、データを可視化するためのダッシュボードといった機能を持ったサービスです。

今回は、MQTT で送られたデータを Beebotte のダッシュボードでグラフとして可視化します。それを進めるにあたり、「ラズパイを使った温度・湿度の取得とデータの可視化を行う公式チュートリアル」を参照します。

Beebotte の設定

チャンネルの作成

上で紹介した公式チュートリアル)の「Create a Channel」の項目を見てみます。

Create_a_Channel.jpg

上記の内容を参考にして、以下の内容で設定しました。

  • チャンネル名
    • M5StickC_Dashboard
  • リソース名
    • value
  • リソースの種別
    • number

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

このチャンネル作成を行った後に、「Channel Token」の情報が得られるので、それを確認してメモしておきます。具体的には、チャンネル一覧の画面で今回作成したチャンネル名「M5StickC_Dashboard」を選択すると、その後の画面で「token_」で始まる文字列が表示されるため、それをメモします。

ダッシュボードの作成(ウィジェットを追加)

次に、ダッシュボードを新規に作成します。以下の画像にあるとおり、左のメニューの「Dashboard」を選択肢、その後に「Add Widget」を押してください。

ダッシュボードの新規作成.jpg

その後に表示されるメニュー内の「Timeline Chart」を選択します。
タイムラインチャートを追加する.jpg

そして、以下のように「Title」に分かりやすい名称を入力します。また「Channel・Resource」の部分は、先ほど設定した内容を選んでください。
ウィジェットの設定.jpg

ウィジェットが追加できたら、「New Dashboard」と書かれている部分を分かりやすい名称に変更し、画面の「Save Changes」を押して設定を保存してください。

そして、以下のダッシュボードが表示された状態になったら Beebotte側の準備は完了です。
データ受信前のダッシュボード.jpg

MQTT でのデータ送受信に関する設定

UIFlow で MQTT を使ったデータ送信のプログラムを作成するにあたり、Beebotte の公式ドキュメントの MQTT のページをチェックしてみます。

接続先のアドレスやポートについて、SSL を用いない場合は以下となるようです。

  • アドレス
    • mqtt.beebotte.com
  • ポート
    • 1883

BeebotteでMQTT.jpg

また、JavaScript を使ったサンプルの部分を見てみると、クライアント側で以下の情報を設定すれば良さそうでした。

  • ユーザ名: Channel Token
  • パスワード: 【指定無し(空)】 ← ※ これは UIFlow の場合は違っていました(すぐ後で補足)

BeebotteをJavaScriptから扱う.jpg

と思ったのですが、実際に UIFlow からの接続を試すと、上記の設定では接続に失敗しました。
そして、情報をググってみたところ以下の記事を見つけ、「パスワードはユーザ名と同じ Channel Token を設定」 とすることで解決できました。

●家族を集合させるボタンを作る(MESHボタン→M5Stackをブロックプログラミングで) - カワリモノ息子の技術メモ的な〜
 https://siroitori.hatenablog.com/entry/2020/03/03/233045

UIFlow で以下のユーザ名・パスワードを設定することで、MQTTブローカーへの接続が無事に行えました。

  • ユーザ名: Channel Token
  • パスワード: Channel Token

上記のブログ記事を見て、公式ドキュメントに以下の説明があったことに気づくこともできました。

公式ページの注意書き.jpg

なお、マルチプラットフォーム対応の MQTTクライアントとして使える GUIアプリ(MQTT.fx)をテスト用に使っていたのですが、こちらのアプリではパスワードを空にする設定で接続ができていました。

MQTT のトピックと送信するデータの形式

MQTT のトピックについては、公式ドキュメントを見ると「【チャンネル名/リソース名】」という形式になるようでした。今回の場合は「M5StickC_Dashboard/value」という文字列です。

あとは何らかの数値を MQTT で単純に送れば良いと思って試したのですが、それがうまくいかず、再度公式のドキュメントを見直したところ以下の形式にする必要があるようでした。

データ送信用JSON.jpg

UIFlow でプログラムを作成する

これまでの内容をふまえて、UIFlow のプログラムを作成します。

UIFlowのプログラム.jpg

MQTT で JSON形式のデータを送る部分は、情報を検索して出てきた以下を参考にして作成しました。

●How-To: Using JSON & Map with MQTT | M5Stack Community
 https://forum.m5stack.com/topic/1730/how-to-using-json-map-with-mqtt

このプログラムを M5StickC に書き込み、プログラムを実行した後にボタン押下を行って数値を複数回送ったところ、Beebotte のダッシュボードで以下のグラフが表示されるのを確認できました。

グラフ化された画面.jpg

まとめ

今回、M5StickC から送った数値データを Beebotte上でグラフ化することができました。今後、送信する値をセンサーのデータにするなどして、Beebotte のダッシュボードを活用していければと思います。

3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?