Skip to content

Instantly share code, notes, and snippets.

@yoggy
Created March 22, 2019 12:07
Show Gist options
  • Save yoggy/28196ba084f9c406c75967289fbb3dca to your computer and use it in GitHub Desktop.
Save yoggy/28196ba084f9c406c75967289fbb3dca to your computer and use it in GitHub Desktop.

beebotteの使い方メモ.md

Beebotteとは?

(図は公式ドキュメントより)

BeebotteはMQTTブローカ+REST API+Web Socketを提供するサービス。 無料アカウントでは50000メッセージ/日まで使える。

開発者向けドキュメントはこちら

Publish-Subscribe通信モデルとは?

MQTTでは、Publish-Subscribe通信モデルが採用されている。 Publish-Subscribe通信モデルとはグループチャットのような通信形式。

具体的には次のような手順でメッセージの送受信を行う。

  • (1) メッセージを送受信したいクライアントは、まずブローカに接続する
  • (2) クライアントは、ブローカに接続したとき、subscribeするtopicを指定する
    • topicはチャットでいうところの、チャンネルみたいな感じ
  • (3) クライアントは、メッセージを送信するtopicを指定してpublishする
  • (4) ブローカはtopicをsubscribeしているクライアントにメッセージを送信する

Pub-Subを採用している例:MQTT, ROS, ZeroMQ, Apache Kafka, Google Cloud Pub/Sub, ...などなど。

Beebotteの使い方の流れ

  • ユーザ登録する
  • チャンネルを作る
  • コンソールからメッセージを送受信してみる
  • Web APIからメッセージを送信してみる
  • MQTTを使ってメッセージを送受信してみる

チャンネルを作る

Beebotteでは、メッセージの送受信を行う際、まずはじめに送受信用の「チャンネル」を作成する必要がある。 次の手順でチャンネルを作成する。

なお、作成していないチャンネルに対してはメッセージを送受信できないので要注意…

beebottteとMQTTとの対応について

  • 「チャンネル名/リソース名」 = 「トピック」
  • 例の場合、"test_channel_name/test_resource_name"がMQTTのトピック名に対応する

チャンネルトークンの確認

チャンネルトークンとは、外部プログラムからメッセージを送受信する際に必要になる認証情報。 確認方法は次の通り。

コンソールからメッセージを送受信してみる

シークレットキーの確認

現在アカウントに設定されているシークレットキーを確認する。

コンソールの使い方

Subscribeの手順

Publishの手順

Subscribeの操作を行った後に、次の手順でメッセージをPublishしてみる。

REST APIからメッセージを送信してみる

以下のようにcurlを実行すると、REST APIを使ってメッセージをPublishすることができる。

$ curl -i -H "Content-Type: application/json" -H "X-Auth-Token: チャンネルトークン" -X POST -d '{"data":"データ"}' http://api.beebotte.com/v1/data/publish/チャンネル名/リソース名

※チャンネル名、リソース名、チャンネルトークン、-dで指定するリクエストボディは適切に書き換えること。

curlを実行する際、コンソールでSubscribeしている状態にしていると、Publishされたメッセージを見ることができる。

MQTTを使ってメッセージを送受信してみる

他のMQTTブローカと少し異なる点

  • トピック名は「チャンネル名/リソース名」を使用すること
  • 存在しないチャンネルには送信できない
    • 存在しないリソースに送信するのはアリ
  • MQTTでワイルドカードを指す「#」をsubscribeすることはできないっぽい
  • 「チャンネル名/#」でsubscribeするのはOK
  • outboundのメッセージも1にカウントされるので、クライアント数が多いときは要注意
    • (無料利用枠は50000通/日なので…)

mosquitto編

Ubuntuなどの場合は、apt install mosquitto-clientでインストール可能。

mosquitto_subを使ってSubscribeする手順

mosquitto_subはmosquittoに付属しているsubscribe用プログラム。 Beebotteで使う場合は、以下の要領で実行する。

$ mosquitto_sub -v -h mqtt.beebotte.com -p 1883 -u チャンネルトークン -P "" -t "チャンネル名/リソース名"

Subscribe中に別ターミナルから先のcurlを実行し、メッセージを受信できることを確認する。

$ mosquitto_sub -v -h mqtt.beebotte.com -p 1883 -u チャンネルトークン -P "" -t "test_channel_name/test_resource_name" 

※mosquitto_subがメッセージを受信すると、以下の内容が表示される
test_channel_name/test_resource_name {"data":"データ","ispublic":true,"ts":1553254109767}

mosquitto_pubを使ってPublishする手順

mosquitto_pubはmosquittoに付属しているpublish用プログラム。 Beebotteで使う場合は、以下の要領で実行する。

$ mosquitto_pub -v -h mqtt.beebotte.com -p 1883 -u チャンネルトークン -P "" -t "チャンネル名/リソース名" -m 'メッセージ'

以下は実行例。チャンネル/リソースはあらかじめ作成済みのものを使用すること。

※先に別ターミナルでmosquitto_subを起動しておく
$ mosquitto_sub -v -h mqtt.beebotte.com -p 1883 -u チャンネルトークン -P "" -t "test_channel_name/#"

※
$ mosquitto_pub -h mqtt.beebotte.com -p 1883 -u チャンネルトークン -P "" -t "test_channel_name/test_resource_name" -m '{"data":"データ"}'

※mosquitto_subがメッセージを受信すると、以下の内容が表示される
test_channel_name/test_resource_name {"data":"データ"}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment