2
2

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 1 year has passed since last update.

UIFlow 2.0 でシンプルな MQTT の送受信(パブリッシュ/サブスクライブ)

Posted at

2/27 に行われたイベント IoTLT で LT登壇した際、その登壇ネタにしていた以下の話にも関連する内容です。

M5Stack社のデバイスをビジュアルプログラミングで扱える「UIFlow」の新バージョン 2.0 で、IoT でよく使われる MQTT を扱う話です。

UIFlow(バージョン 1系)での MQTT

今回の記事の本題は、今月正式版になった新しいバージョンの UIFlow(UIFlow 2.0)で MQTT という話ですが、バージョン 1系では過去に既に何度も利用していたものでした。

直近では、以下の記事に書いたものがあります。

●【小ネタ】shiftr.io Desktop と UIFlow1.0 の MQTT を組み合わせて軽く動作確認(ローカルネットワーク内) - Qiita
 https://qiita.com/youtoy/items/69dc3c4a5dde16600092

またかなり前の記事になりますが、以下は MQTT の通信の仲介役(MQTTブローカー)にクラウドサービスを使った話です(上で掲載したものは、宅内ローカルでプライベートIP を用いた通信をやっていました)。

●Beebotte のダッシュボードで M5StickC から送った数値をグラフ化する(UIFlow + MQTT でデータ送信) - Qiita
 https://qiita.com/youtoy/items/b65ddfc89a03117a0ee3

MQTT による送受信(パブリッシュ/サブスクライブ)は、複数台をつなぐのを手軽に実現できたり、また宅内にあるデバイスに対してインターネット側からの通信をやりやすかったり、便利に使えると感じています。

UIFlow 2.0 でシンプルな MQTT

それでは本題の UIFlow 2.0 でのシンプルな MQTT です。

今回は、UIFlow 2.0 を使うためのセットアップや、細かな使い方の話は省き、シンプルにどのようなブロックを利用するか、という部分をサクッと紹介する感じにします。

サブスクライブ

先にデータを受信する側、MQTT のサブスクライブの話です。
以下の動画に出てくる、手前の小さなデバイス(ATOMS3)の実装に用いたものについてです。

(※ 以下では、送り側は JavaScript を用いて 0-255 の数値を送っているのですが、その部分は UIFlow の話からズレるのと、過去に JavaScript+MQTT の話を複数記事に書いているので、今回は省略します)

用いたブロックのプログラムは以下のとおりです。
基本的に青色のブロック(convert to int のブロックを除く)が、MQTT関連のブロックです。

image.png

Setup の中で初期設定と通信開始の処理を行い、サブスクライブのブロックで MQTT で使う「トピック」を設定しています(さらに、その中の「get msg (return bytes)」で、受信したメッセージを取り出している形)。
それと、ループの処理の部分で、「MQTT apply for messaging」を使う構成となります。

上記の構成は、キーワード検索して結果に出てきていた以下を参考にしました。
※ なお、自分の用いたものは「MQTT で送られてくるものが数値」という前提になっています

●m5tough UIFlow2.0 Alpha 24. mqtt. first-timer needs some guidance | M5Stack Community
 https://community.m5stack.com/topic/5634/m5tough-uiflow2-0-alpha-24-mqtt-first-timer-needs-some-guidance

パブリッシュ

今度は送信(パブリッシュ)です。

ループする処理の中で、カウントアップする数字を用意していて、それを送信しています。

image.png

基本的には、Setup の中は受信(サブスクライブ)の場合と同じような構成です。それと、送信(パブリッシュ)の場合は、「MQTT apply for messaging」を使う必要はなさそうで、メッセージを送りたいところで「トピック」とメッセージを指定してやれば良さそうでした(なお、MQTT の msg で送るのは文字列となり、上記では数値を送ろうとしたため、文字列変換の処理をする「convert to str」を用いています)。

おわりに

とりえあず、UIFlow 2.0 でシンプルな MQTT の送受信(パブリッシュ/サブスクライブ)を実現するための、ブロックを使ったプログラムを紹介してみました。

2
2
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
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?