Beebotte の MQTT ブローカーと Node-RED の MQTT ノードでやり取りをするメモ

Beebotte の MQTT ブローカーと Node-RED の MQTT ノードでやり取りをするメモです。

Beebotte

image

Beebotte は、リアルタイム接続オブジェクト用のクラウドプラットフォームでということで、IoT にも相性がよく REST、WebSocket、MQTTをサポートする豊富なAPIがあります。

image

2022 年 2月現在、Free プランでも、

Unlimited Channels
50,000 Messages/day
5,000 Persistent Messages/day
3 Months History
SSL Encryption

日本語に訳してみると、

無制限のチャンネル
50,000メッセージ/日
5,000永続メッセージ/日
3ヶ月の履歴
SSL暗号化

なので、ホビーレベルであれば、制限内でも十分に使えます。

Beebotte でチャンネル作成

アカウント登録が済んでいる前提で進めます。

image

右のメニューから Channels をクリックして My Channels を表示します。

Create New ボタンをクリックします。

image

Create a new channel ページに移動するので、

image

  • Channel Name
    • test
  • Resource name
    • res

と設定して、Create channel ボタンをクリックします。

リソースグループ 設定確認と test チャンネルの Channel Token をメモ

image

My Channels に、いま設定した test チャンネルが表示されるのでクリックします。

image

赤文字の Channel Token をメモしつつ、Configured resources に先ほど設定したリソースグループ res が設定されていることを確認します。

これで、やりとりするための MQTT 設定は完了です。

MQTT接続設定のおさらい

Beebotte MQTT Support で MQTT の設定が確認できます。

MQTT のブローカー設定としては以下のように設定します。

  • MQTTブローカー先
    • mqtt.beebotte.com
  • ポート
    • 1883
  • 接続するユーザー名
    • さきほどメモした Channel Token を使う
  • 接続するパスワード
    • (なにも書かない)
  • 接続トピック
    • チャンネル名/リソースグループ名 を設定
    • test チャンネルで res リソースグループの場合は test/res

Node-RED でつないでみる

image

Node-RED でごくごくシンプルな MQTT をやりとりするフローを作ります。

[{"id":"5480cf3b895e8df1","type":"inject","z":"d908981ce0622811","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":420,"y":280,"wires":[["57275a1e220ad27a"]]},{"id":"57275a1e220ad27a","type":"mqtt out","z":"d908981ce0622811","name":"","topic":"test/res","qos":"","retain":"","respTopic":"","contentType":"","userProps":"","correl":"","expiry":"","broker":"34acff602c4a8d65","x":630,"y":280,"wires":[]},{"id":"ad4219020fcb7bac","type":"debug","z":"d908981ce0622811","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":660,"y":380,"wires":[]},{"id":"17884a1365646de1","type":"mqtt in","z":"d908981ce0622811","name":"","topic":"test/res","qos":"2","datatype":"auto","broker":"34acff602c4a8d65","nl":false,"rap":true,"rh":0,"x":450,"y":380,"wires":[["ad4219020fcb7bac"]]},{"id":"34acff602c4a8d65","type":"mqtt-broker","name":"Beebotte","broker":"mqtt.beebotte.com","port":"1883","clientid":"","usetls":false,"protocolVersion":"4","keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","birthMsg":{},"closeTopic":"","closeQos":"0","closePayload":"","closeMsg":{},"willTopic":"","willQos":"0","willPayload":"","willMsg":{},"sessionExpiry":""}]

今回のフローJSONはこちらです。

image

MQTT out ノードをダブルクリップしてプロパティを表示します。

image

すでにトピック名は チャンネル名/リソースグループ名 を設定で、今回の test チャンネルで res リソースグループにつなぐための test/res が設定されています。

image

サーバも Beebotte を用意しているので鉛筆ボタンをクリックして、接続設定を調整しましょう。

image

すでに接続のタブでは、サーバは mqtt.beebotte.com 、ポートは 1883 が設定されています。

image

セキュリティのタブに移動してユーザ名を設定します。

image

ここに、さきほどメモした Channel Token を入力し更新ボタンをクリックします。

image

完了ボタンをクリックします。

image

デプロイボタンをクリックして、Node-RED に設定を反映します。

image

すると、設定が合っていれば接続済のグリーンのアイコンに変わり接続成功です。

動かしてみる

image

タイムスタンプと書かれた inject ノードのボタンをクリックして動かしてみます。

image

クリックすると MQTT in ノードが test/res トピックからデータを受信して デバックタブに、さきほど送られたタイムスタンプのデータが表示されて、無事やり取りが確認できました!