enebularでlittleBits CloudBitモジュールからデータ購読する

外部ライター ワンフットシーバス 田中正吾です。今回はenebularでlittleBits CloudBitモジュールからデータ購読します。

手軽にブロックをつなげるように電子工作をできるlittleBitsですが、CloudBitモジュールが日本でも買うことが出来るようになりました。

使い勝手はこのようになっています。

littleBits の CloudBitビットモジュールをひとまず動かすメモ – 1ft-seabass.jp.MEMO

Node-RED連携もやってみたのですが面白いです。CloudBitモジュールに対してREST APIによってやり取りできます。

littleBit cloudBitモジュールとNode-REDをつなげてCloudBitを反応させるメモ – 1ft-seabass.jp.MEMO

image

enebularで是非やりたいと考えたのは、API Referenceにある、littleBits側でセンサー値を取得して購読する Subscriptions 機能を動作させるために、enebularでの固有アドレス機能と相性が良いためです。

littleBitsの準備をする

image

Getting Started with your CloudBit でセットアップ済みのCloudBitを使います。設定してない方は、Getting Started with your CloudBitに従ってセットアップしましょう。詳しいセットアップの雰囲気が気になる方はcloudBitモジュールのセットアップについてのメモも、ぜひご覧ください。

image

今回は、USB POWER→BUTTON→CloudBitの順に使用しました。現状のCloudBitキットにはBUTTONモジュールは入っていないので、自前のモジュールをくっつけました。

image

この状態でlittleBits Cloudに入力モジュールの操作が送られる状態になっていて、以後説明するAPI Referenceによっていろいろと関われます。

API Referenceから購読APIのcurlリクエストを確認

API Reference : subscriptionsで購読APIのcurlリクエストを確認します。

image

curl "https://api-http.littlebitscloud.cc/v2/subscriptions" \
  -X POST \
  -H "Authorization: meowmeowmeow" \
  -H "Content-type: application/json" \
  -d '{ "publisher_id": "00e040000001" ,"subscriber_id": "http://YOURSERVER/endpoint" }'
  • Authorization
    • 購読したいColoudBitのAccess Token
  • publisher_id
    • 購読したいColoudBitのDevice ID
  • subscriber_id
    • IDと書いてあるが送り先のURL(今回はenebularのFlow URLに向ける)

購読したいColoudBitとAccess TokenとDevice IDを確認

購読したいColoudBitとAccess TokenとDevice IDを確認しましょう。

image

littleBits Cloud Controlから購読したいColoudBitを選択しSETTINGSをクリックします。

image

SETTINGSページでADVICEDという項目があり、こちらのAccess TokenとDevice IDを覚えておきましょう。

enebularでFlowをつくる

image

情報は揃ったのでenebularでFlowをつくります。

image

購読を受信するURLを把握するためにHTTPNodePathを確認しておきます。仮に、httpNodePathで https://node-red-hogehoge-12345678.herokuapp.com/ で購読URLが /subscription というURLだとhttps://node-red-hogehoge-12345678.herokuapp.com/subscription となります。

フローは以下のとおりです。

image

購読開始指示のフローと購読受信指示のフローで構成されています。このなかで「購読開始 changeノード」「購読開始 http requestノード」「購読受信 http 入力ノード」を説明していきます。

購読開始 changeノード

image

購読開始 changeノードは以下のように設定します。

image

curl "https://api-http.littlebitscloud.cc/v2/subscriptions" \
  -X POST \
  -H "Authorization: meowmeowmeow" \
  -H "Content-type: application/json" \
  -d '{ "publisher_id": "00e040000001" ,"subscriber_id": "http://YOURSERVER/endpoint" }'

API仕様に合わせて読み替えます。

  • 1項目目
    • 値のルール:Set
    • プロパティ対象: msg.url
    • https://api-http.littlebitscloud.cc/v2/subscriptions
  • 2項目目
    • 値のルール:Set
    • プロパティ対象: msg.headers.Authorization
    • 先ほど確認した購読したいCloudBitのAccessToken
  • 3項目目
    • 値のルール:Set
    • プロパティ対象: msg.payload
    • { “publisher_id”: “<先ほど確認した購読したいCloudBitのDeviceID>” ,”subscriber_id”: “<今回のFlowのURLに /subscription
      を加えたURL>” }’

購読開始 http requestノード

購読開始 http requestノードは以下のように設定します。

image

image

  • Method
    • POST
  • URL
    • 空欄

購読受信 http 入力ノード

image

購読受信 http 入力ノードは以下のように設定します。

image

  • Method
    • POST
  • URL
    • subscription

ここまで設定できたらデプロイを押してフローを動作するようにしておきます。

まず購読開始をする

image

indectノードをクリックして購読開始します。

image

うまく設定されていればデバッグウィンドウに登録結果が表示されます。

image

この時点で購読申請がされて、littleBits CloudからenebularのURLへとデータが送られる状態になっています。

動作させてみる

いよいよ購読受信のフローの /subscription にデータが入ってくるはずです。

image

littleBitsに電源を入れてCloudBitが繋がった緑ランプなるまで準備します。無事に緑ランプになったら、Wi-Fi経由で接続されているということです。いよいよボタンを押してみます。

image

うまくいけば、こちらにデータが入ってきます。

image

ボタンを押したときだけデバッグウィンドウにデータが表示されて、データの受信が確認できました。

image

仕組みとしては、このようにデータが送られています。

まとめ

今回はenebularでlittleBits CloudBitモジュールからデータ購読する流れをお伝えしました。

こちらができると、たとえばlittleBitsの温度センサーモジュールや光センサーモジュールといった色々な入力モジュールのセンサー値やenebularで受け取れます。また、littleBit Cloud APIを駆使するとenebular側からlittleBitsを動かすこともできます。

littleBitsの手軽さを保ちつつIoTのプロトタイプをenebularでぜひ試してみてください!