📺
Firebaseのデータをobnizのディスプレイに反映させる
Firebaseのデータをobnizのディスプレイに反映させます。
今回は
をベースに進めます。こちらで動作している前提です。
Firebaseのデータの準備
protoout/studio/obniz/display のデータを監視します。
Realtime Database に protoout/studio/obniz/display データを作ります。
obnizのソースコード
今回、obnizで動作させる firebase_data_obniz_display.js
のソースは以下のようになっています。
var admin = require("firebase-admin");
// 1. サービスアカウント鍵を生成しserviceAccountKey.jsonでリネームしてfirebaseフォルダ直下に配置
var serviceAccount = require("./serviceAccountKey.json");
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
// 2. Realtime DatabaseのページでdatabaseURLを確認して反映
databaseURL: "https://<databaseURL>.firebaseio.com"
});
var db = admin.database();
// protoout/studio/obniz/display のデータを監視する
var ref = db.ref("protoout/studio/obniz/display");
ref.on("value", function (snapshot) {
console.log("value Changed!!!");
console.log(snapshot.val());
obniz.display.clear();
obniz.display.print(snapshot.val());
},
function (errorObject) {
console.log("failed: " + errorObject.code);
}
);
// obnizの処理
var Obniz = require("obniz");
var obniz = new Obniz("Obniz_ID");
obniz.onconnect = async function () {
obniz.display.clear();
obniz.display.print("Firebase > Obniz display");
}
値を監視しているところはこちらです。
var ref = db.ref("protoout/studio/obniz/display");
で狙いを定めて
ref.on("value", function (snapshot) {
console.log("value Changed!!!");
console.log(snapshot.val());
obniz.display.clear();
obniz.display.print(snapshot.val());
},
function (errorObject) {
console.log("failed: " + errorObject.code);
}
);
で監視しています。
動かしてみる
起動するを「----」というあらかじめ設定しているデータがすぐに反映されます。
さきほどの Firebase のデータを「Hello obniz」に変更します。
監視された値が変化して obniz のディスプレイに反映されます!
ちなみに値に日本語を加えてしまうと、バックエンドでのNode.jsからの実行の場合は日本語フォントが無いため文字化けするので、英数字で行いましょう。(obniz Cloud で実行する場合はブラウザとフロントエンドの力で日本語も表示できます。)
Discussion