1
1

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.

Blynk の「Device MQTT API」を試す: プレイグラウンドでアプリ上の操作の結果を得る

Last updated at Posted at 2024-06-24

最近、以下の内容を試していた「Blynk」に関する記事です。

今回、その Blynk関連でリアルタイム通信に便利そうな「Device MQTT API」を試します。

●Device MQTT API | Blynk Documentation
 https://docs.blynk.io/en/blynk.cloud-mqtt-api/device-mqtt-api

image.png

MQTT は、これまでガジェットと PC やスマホとの連携など、デバイス間で IoT の通信をするのに以下の記事にあるように活用してきたものなので、Blynk との組み合わせでも使えるようにしたいと思いました。

●「MQTT user:youtoy」の検索結果 - Qiita
 https://qiita.com/search?q=MQTT%20user%3Ayoutoy&sort=created

サンプル

Blynk で Device MQTT API を使う際に、参考になるサンプルがいろいろあるようです。

その中で、自分が気になったもののリンクをピックアップしてみます。

自分にとっては、よく使う環境用のものが様々あり、使えるようになれば活用する機会が多そうです。

設定周り

MQTTブローカーのエンドポイントの設定

Blynk の Device MQTT API は、通常 MQTT を利用する時と同様に MQTTブローカーへの接続が必要です。

そのエンドポイントの設定をまずは見てみます。設定に関する情報は、以下のページを見ると良さそうです。

●Authentication | Blynk Documentation
 https://docs.blynk.io/en/blynk.cloud-mqtt-api/device-mqtt-api/authentication

image.png

ポート番号を含めた接続先を、テキストで書き出してみます。

  • Broker: blynk.cloud
  • TCP port: 1883
  • Secure SSL/TLS port: 8883
  • Secure WebSocket ports: 443, 9443

上記を見ると、MQTT over WebSocket と MQTT over TCP の両方が使えるようです。
そして、それらを使う場合のポート番号は、MQTT でよくある番号になっているようです。

MQTT のクライアント側の認証用設定

次に、MQTT のクライアント側で用いる認証用の設定について見てみます。

image.png

以下、クライアント側で使う認証用の情報をテキストで書き出したものです。

  • ClientID: "" (or any UTF-8 encoded string, up to 64 characters long)
  • Username: "device"
  • Password: 【自分のトークン】
  • Keepalive: 45 seconds (recommended)
  • Clean Session: True

ClientID は上記の規則を守っていれば、任意の内容にできるかと思うので、ポイントになるところは「Username」「Password」になりそうです。Username」は固定の文字列で、「Password」は自分のトークンを用いるというやり方になるようです。

お試しで使えるクライアント(プレイグラウンドのページ)

あとは、実際に MQTT での通信を試していきます。

それを試す環境についてドキュメントの情報を見ていると、簡単に使えるクライアント(テスト用環境?)が用意されているようでした。具体的には、以下のページで「online playground page」と書かれているところです。

image.png

そのリンク先に進むと、以下のプレイグラウンドのページが表示されます。

●Blynk MQTT client
 https://html-preview.github.io/?url=https://github.com/Blynk-Technologies/Blynk-MQTT-Samples/blob/main/HTML5_WebSocket/WebSocket-Blynk-MQTT-minimal.html

image.png

このページで、トークンを入力して Connectボタンを押すと、以下のように MQTTブローカーへの接続ができました。

V1ピンの ON/OFF 時の通信を受けとる

そして、接続後に Blynk のスマホアプリで設定済みだった「V1」ピンの ON/OFF の操作を試しました。そうすると、以下の内容が出力されました。

Connecting to wss://blynk.cloud:443/mqtt
。。。
Got downlink/ds/Integer V1, value: 1
Got downlink/ds/Integer V1, value: 0

V1ピンの ON/OFF の切り替わりが、1/0 の値として得られているようです。
また、その時の MQTT のトピックとメッセージは、「Got」の後の「downlink/」で始まる部分のようです。

プレイグラウンドのおかげで、簡単に動作確認を行うことができました。

トピック

MQTT で通信する際に必要な「トピック」について、公式ドキュメントの情報を見ておきます。

●Topic Structure | Blynk Documentation
 https://docs.blynk.io/en/blynk.cloud-mqtt-api/device-mqtt-api/topic-structure

今回のお試しは、クライアント側でデータを受けとる側だったので、関連するトピックの情報は以下の Downlink になりそうです。

image.png

以下を見ると Uplink もあるので、クライアント側から状態変化を起こすこともできそうです。

image.png

V1 ピンを MQTT で変えるというのも、「ds/【DATASTREAM】」を使うとできそうな気がします。

お試しで使えるクライアント(プレイグラウンドのページ)の続き

V1ピンの ON/OFF を MQTT で変える

上記の話について、具体的には以下のように「トピック:ds/Integer V1」「ペイロード:0(または 1)」をパブリッシュすると、スマホアプリ側に変化を生じさせることができました。

image.png

おわりに

今回はプレイグラウンドのおかげで、簡単にお試しを進められました。
今後は、過去にやったように自前で MQTT のクライアントを用意して、アプリやデバイスとの連携を試せればと思います。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?