obnizを使用するシステムを堅牢に構築する場合、いくつか気をつけるポイントがあります。
たとえば、AWS上のデータベースに、センサの値を記録していくアプリを検討します。
この場合、obniz↔EC2間の接続はEC2からobniz側にアクセスしますので、ポートを開けたりして外部からEC2にアクセスできるようにする必要はありません。
クローズドなEC2から、セキュアに保ったまま、obnizと連携を行うことができます。
プログラムの書き方や実行方法でも注意する点があります。
- アクセストークンを発行する
- 切断時、再接続時の挙動をきちんと明確にする
- プロセスが死んだら再起動するようにしましょう
詳細はセキュアでトラブルの少ないプログラムの書き方のページを参照してください。
上記を踏まえたサンプルプログラムがこちらです。
const Obniz = require("obniz");
initDb();
// access_tokenを設定します。
const obniz = new Obniz("obniz_id_here", { access_token:"xxxxxxxxxxx" })
obniz.onconnect = async ()=>{
// 接続時処理(初期設定など)
await saveObnizStatusToDb("connected");
const tempSensor = obniz.wired("LM35DZ", { gnd:0 , output:1, vcc:2});
obniz.onloop = async ()=>{
//繰り返し処理
const temp = await tempSensor.getWait();
console.log(temp);
await saveTempToDb(temp);
};
}
obniz.onclose = async ()=>{
// 切断時処理(コールバックのリセットなど)
await saveObnizStatusToDb("disconnected");
}
function initDb(temp){
}
async function saveTempToDb(temp){
}
async function saveObnizStatusToDb(status){
}
実行時は、pm2を使用して下記のように実行します。
npm install pm2 -g
pm2 start ./app.js
永続化していますので、停止もpm2を通じて停止します。
pm2 stop app