Beebotte の MQTT ブローカーと Node-RED の MQTT ノードでやり取りをするメモです。
Beebotte
Beebotte は、リアルタイム接続オブジェクト用のクラウドプラットフォームでということで、IoT にも相性がよく REST、WebSocket、MQTTをサポートする豊富なAPIがあります。
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 でチャンネル作成
アカウント登録が済んでいる前提で進めます。
右のメニューから Channels をクリックして My Channels を表示します。
Create New ボタンをクリックします。
Create a new channel ページに移動するので、
- Channel Name
- test
- Resource name
- res
と設定して、Create channel ボタンをクリックします。
リソースグループ 設定確認と test チャンネルの Channel Token をメモ
My Channels に、いま設定した test チャンネルが表示されるのでクリックします。
赤文字の 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 でつないでみる
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はこちらです。
MQTT out ノードをダブルクリップしてプロパティを表示します。
すでにトピック名は チャンネル名
/リソースグループ名
を設定で、今回の test チャンネルで res リソースグループにつなぐための test/res
が設定されています。
サーバも Beebotte を用意しているので鉛筆ボタンをクリックして、接続設定を調整しましょう。
すでに接続のタブでは、サーバは mqtt.beebotte.com
、ポートは 1883 が設定されています。
セキュリティのタブに移動してユーザ名を設定します。
ここに、さきほどメモした Channel Token を入力し更新ボタンをクリックします。
完了ボタンをクリックします。
デプロイボタンをクリックして、Node-RED に設定を反映します。
すると、設定が合っていれば接続済のグリーンのアイコンに変わり接続成功です。
動かしてみる
タイムスタンプと書かれた inject ノードのボタンをクリックして動かしてみます。
クリックすると MQTT in ノードが test/res
トピックからデータを受信して デバックタブに、さきほど送られたタイムスタンプのデータが表示されて、無事やり取りが確認できました!