先日の enebular developer Meetup Vol.4 で参考としてお披露目させていただいた、obnizとenebularをFirebaseでつないでみるナレッジをまとめました。
今回の仕組み
enebularからFirebase経由でobnizでメッセージが表示します。
obnizから操作するとFirebase経由でenebularで操作が反応します。
このようにメッセージのやり取りをしつつ、操作をenebularに記録します。
enebularのほうの仕組み
Discover Flowよりフローを持ってきます。
https://enebular.com/discover/flow/19db4bfa-0671-4f23-9671-4a8e7b64cf2e
Firebase 設定方法
Firebaseのセットアップ方法はこちらをご覧ください。
最初にフローを編集しようとすると以下のようになっています。
invalid credencialsになっていて、まだFirebaseの設定がされてないので設定します。
ダブルクリックして設定を開きます。
Add new firebase configをクリックして設定を加えます。
上記のセットアップが済んでいるとAuth TypeはNoneで行けるので、プロジェクトIDを入力して設定します。
2つFirebaseを設定するところがあるので、先ほど設定したFirebaseの設定を反映させます。
設定できたらデプロイします。
readyとなれば成功です。
obniz のソースコード
obniz Cloudではこのようなコードを書きます。
<html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <script src="https://obniz.io/js/jquery-3.2.1.min.js"></script> <script src="https://unpkg.com/obniz@1.10.0/obniz.js" crossorigin="anonymous"></script> <script src="https://www.gstatic.com/firebasejs/5.4.2/firebase.js"></script> <script> // Initialize Firebase var config = { apiKey: "apiKey", authDomain: " .firebaseapp.com", databaseURL: "https:// .firebaseio.com", projectId: "projectId", storageBucket: " appspot.com", messagingSenderId: "messagingSenderId" }; firebase.initializeApp(config); </script> </head> <body> <h1>enebular + Firebase + obniz</h1> <h3 id="status">status</h3> <script> var obniz = new Obniz("<YOUR_CONTROL_OBNIZ_ID>"); var enebularRef = firebase.database().ref('enebular/meetup/status'); enebularRef.on('value', function(snapshot) { console.log(snapshot.val()); obniz.display.clear(); obniz.display.print("response : "); obniz.display.print(snapshot.val()); }); var obnizRef = firebase.database().ref('obniz'); obnizRef.on('value', function(snapshot) { console.log(snapshot.val().state); }); obniz.onconnect = async function () { obniz.display.clear(); obniz.display.print("switch start"); obniz.switch.onchange = function(state) { if (state === "push") { obniz.display.clear(); obniz.display.print("push"); } else if (state === "right") { obniz.display.clear(); obniz.display.print("right"); } else if (state === "left") { obniz.display.clear(); obniz.display.print("left"); } else { obniz.display.clear(); obniz.display.print("--"); } // firebase.database().ref('obniz').set({ state: state, timestamp:new Date().getTime() }); } } </script> </body> </html>
こちらをコピーペーストして使ってください。
Firebaseの設定
// Initialize Firebase var config = { apiKey: "apiKey", authDomain: " .firebaseapp.com", databaseURL: "https:// .firebaseio.com", projectId: "projectId", storageBucket: " appspot.com", messagingSenderId: "messagingSenderId" };
Firebaseのアプリ設定を参考に反映します。
Fireabaseコンソールのこちらですね。
動かしたい obniz のIDを設定
var obniz = new Obniz("<YOUR_CONTROL_OBNIZ_ID>");
この行は動かしたい obniz のIDを設定を設定します。
実際に動かしてみる
準備が整いました。
obniz側で起動しておきます。
ボタンを押すと反応します!
FirebaseでRealtime Databaseを見てみると値が入っています。無事記録されていますね。
今度は文字を送ってみましょう!
無事反応しましたね! 手軽!
ということで、 obniz はインターネットと連携したIoTの仕組みがこのように簡単に作れます。
そして、JavaScriptで動かせるのでブラウザからプログラム画面をスマホやPCからページを開くだけで試すことができるのは、他のIoT機器と違ったアプローチで面白いですね。実際、デモをする際に、ブラウザでの作業に注力できるので、なにか調整したいときに安心です。
ブラウザで手軽にデータの流れを作れるenebularとの相性も良いと感じました!