Mesubluは複数のトランポートプロトコルに対応しています。HTTP POSTしたメッセージをMQTTでsubscribeして受信することもできます。IDCFクラウドに構築したMeshbluサービスを起動したあとに、メッセージングとデータ保存のテストをしてみます。
MQTTブローカーを使ったメッセージング
MQTTの基本的なメッセージングをテストします。trigger-1とaction-1のuuidを使います。
- メッセージ送信: trigger-1
- メッセージ受信: action-1
action-1でMQTT subscribe
action-1のuuidを使いメッセージを送信します。「IDCF」チャンネルをインストールしたディレクトリに移動して、コマンドラインツールからtokenとuuidを確認します。
$ cd ~/iot_apps/meshblu-compose |
action-1からMQTTのメッセージをsubscribeします。Meshbluではsubscribeするトピック名は、メッセージを受信するデバイスのuuidになります。この例ではaction-1のuuidになります。またusernameとpasswordも必須項目です。それぞれデバイスのuuidとtokenを指定します。
- ホスト: 「IDCF」チャンネルのIPアドレス
- ポート: 1883
- username: action-1のuuid
- password: action-1のtoken
$ mosquitto_sub \ |
出力結果
Received CONNACK |
trigger-1からMQTT publish message
trigger-1のuuidを使いメッセージを送信します。tokenとuuidを確認します。
$ docker-compose run --rm iotutil show -- -k trigger-1 |
Meshbluにメッセージを送信する場合は以下の仕様になります。
- トピック名: message
- 送信先uuid: メッセージのdevicesキーの値
- メッセージ本文: メッセージのpayloadキーの値(JSON、文字列)
新しいシェルを開きます。mosquitto_pubコマンドを使ってpublishします。
$ mosquitto_pub \ |
出力結果
Received CONNACK |
mosquitto_subコマンドを実行しているシェルにメッセージが届きます。
{"data":{"led":"on"}} |
trigger-1からHTTP POST /messages
MQTT subscriberにHTTP POSTからメッセージを送信することもできます。trigger-1のuuidとtokenは認証情報としてHTTPヘッダに記述します。
- URL: /messages
- Content-Type: application/json
- meshblu_auth_uuid: trigger-1のuuid
- meshblu_auth_token: trigger-1のtoken
先ほどのmosquitto_subコマンドが起動している状態で新しいシェルを開きます。curlでメッセージをPOSTします。
$ curl -X POST \ |
出力結果
{"devices":"4dbe71d3-ad32-45e5-99fc-88c225bf11b8","payload":{"led":"off"}} |
mosquitto_subコマンドを実行しているシェルにメッセージが届きます。
{"data":{"led":"on"}} |