外部ライター ワンフットシーバス 田中正吾です。今回は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
enebularで是非やりたいと考えたのは、API Referenceにある、littleBits側でセンサー値を取得して購読する Subscriptions 機能を動作させるために、enebularでの固有アドレス機能と相性が良いためです。
littleBitsの準備をする
Getting Started with your CloudBit でセットアップ済みのCloudBitを使います。設定してない方は、Getting Started with your CloudBitに従ってセットアップしましょう。詳しいセットアップの雰囲気が気になる方はcloudBitモジュールのセットアップについてのメモも、ぜひご覧ください。
今回は、USB POWER→BUTTON→CloudBitの順に使用しました。現状のCloudBitキットにはBUTTONモジュールは入っていないので、自前のモジュールをくっつけました。
この状態でlittleBits Cloudに入力モジュールの操作が送られる状態になっていて、以後説明するAPI Referenceによっていろいろと関われます。
API Referenceから購読APIのcurlリクエストを確認
API Reference : subscriptionsで購読APIのcurlリクエストを確認します。
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を確認しましょう。
littleBits Cloud Controlから購読したいColoudBitを選択しSETTINGSをクリックします。
SETTINGSページでADVICEDという項目があり、こちらのAccess TokenとDevice IDを覚えておきましょう。
enebularでFlowをつくる
情報は揃ったのでenebularでFlowをつくります。
購読を受信するURLを把握するためにHTTPNodePathを確認しておきます。仮に、httpNodePathで https://node-red-hogehoge-12345678.herokuapp.com/ で購読URLが /subscription というURLだとhttps://node-red-hogehoge-12345678.herokuapp.com/subscription となります。
フローは以下のとおりです。
購読開始指示のフローと購読受信指示のフローで構成されています。このなかで「購読開始 changeノード」「購読開始 http requestノード」「購読受信 http 入力ノード」を説明していきます。
購読開始 changeノード
購読開始 changeノードは以下のように設定します。
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ノードは以下のように設定します。
- Method
- POST
- URL
- 空欄
購読受信 http 入力ノード
購読受信 http 入力ノードは以下のように設定します。
- Method
- POST
- URL
- subscription
ここまで設定できたらデプロイを押してフローを動作するようにしておきます。
まず購読開始をする
indectノードをクリックして購読開始します。
うまく設定されていればデバッグウィンドウに登録結果が表示されます。
この時点で購読申請がされて、littleBits CloudからenebularのURLへとデータが送られる状態になっています。
動作させてみる
いよいよ購読受信のフローの /subscription にデータが入ってくるはずです。
littleBitsに電源を入れてCloudBitが繋がった緑ランプなるまで準備します。無事に緑ランプになったら、Wi-Fi経由で接続されているということです。いよいよボタンを押してみます。
うまくいけば、こちらにデータが入ってきます。
ボタンを押したときだけデバッグウィンドウにデータが表示されて、データの受信が確認できました。
仕組みとしては、このようにデータが送られています。
まとめ
今回はenebularでlittleBits CloudBitモジュールからデータ購読する流れをお伝えしました。
こちらができると、たとえばlittleBitsの温度センサーモジュールや光センサーモジュールといった色々な入力モジュールのセンサー値やenebularで受け取れます。また、littleBit Cloud APIを駆使するとenebular側からlittleBitsを動かすこともできます。
littleBitsの手軽さを保ちつつIoTのプロトタイプをenebularでぜひ試してみてください!