LoginSignup
3
3

More than 5 years have passed since last update.

MeshbluのRESTとMQTTのメッセージをWebブラウザで直接受信する

Last updated at Posted at 2015-05-04

MeshbluにはWebブラウザで使うMeshblu.jsのJavaScriptライブラリがあります。ArduinoなどからMQTTでpublishしたセンシングデータを通常のWebブラウザ上で受信できるようになります。JavaScriptが使える環境は多いのでコネクテッドデバイス間のメッセージングの選択肢が広がります。

デバイスの作成

Meshbluのデバイス情報のprotocolキーに使用しているプロトコルが記述されています。同じデバイスを使ってWebSocketとMQTTのメッセージ送信をする場合はprotocolを書き換える必要があります。WebSocketとMQTTのテスト用にデバイスを2つ用意します。

WebSocket用のデバイスを作成します。

$ curl -X POST \
  "http://localhost/devices" \
  -d "name=websocket-pubsub&uuid=websocket-pubsub&protocol=websocket&token=A9plQrTH"

MQTT用のデバイスを作成します。

$ curl -X POST \
  "http://localhost/devices" \
  -d "name=mqtt-pub&uuid=mqtt-pub&protocol=mqtt&token=RdHBvvYZ"

index.html

Meshbluのブローカーからメッセージを受信するJavaScriptを書きます。ローカルの適当な場所に配置するだけです。WebSocketでSubscribeするデバイスはwebsocket-pubsubをIDに持ちます。createConnectionのserverはMeshbluが起動しているホスト名またはIPアドレスを指定します。

~/Documents/meshblu/index.html
<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="utf-8">
    <title>Meshblu.js</title>
    <script src="http://meshblu.octoblu.com/js/meshblu.js"></script>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
    <script>
      var conn = meshblu.createConnection({
        "uuid": "websocket-pubsub",
        "token": "A9plQrTH",
        "server": "{MESHBLU_BROKER}}",
        "port": 80
      });
      conn.on('ready', function(data){
        console.log('UUID AUTHENTICATED!');
        console.log(data);
        conn.on('message', function (message) {
          console.log('message received', message);
          $(".activity").prepend(JSON.stringify(message) + '<br />');
        });
      });
    </script>
  </head>
  <body>
   <p>Subscribe Messages</p>
   <div class="activity"></div>
  </body>
</html>

WebSocketとMQTTのテスト

日本語を含んだpayloadがWebブラウザで正常に表示されるかも試します。Chromeブラウザから先ほど作成したローカルのindex.htmlファイルを開きます。

最初にcurlコマンドからメッセージをHTTP POSTします。payloadに"川崎"という日本語を追加しました。

$ curl -X POST  \
  http://localhost/messages  \
  -d '{"devices": ["websocket-pubsub"], "payload": {"temperature":25,"city":"川崎"}}'  \
  --header "meshblu_auth_uuid: websocket-pubsub"  \
  --header "meshblu_auth_token: A9plQrTH"

次にMosquittoからメッセージをMQTT publishします。同様にpayloadには日本語を含んでいます。

$ mosquitto_pub \
  -h localhost  \
  -p 1883 \
  -t message \
  -m '{"devices": "websocket-pubsub", "payload": {"temperature":26,"city":"横浜"}}' \
  -u mqtt-pub \
  -P RdHBvvYZ \
  -d

ブラウザに2つの日本語を含むメッセージが正常に表示されました。

Meshblujs.png

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