obnizBoard 1Yでは、Sleep機能で不要なタイミングの電池消費を抑えることで、単三電池でも1年程度継続して動作させることができます。
こちらはobnizBoard 1Yのみの機能です。obniz BoardやM5StickC版obnizOSでは使うことができません
1日に1度だけセンサの値を取得する
たとえば、1日に1度だけ、気温を計測してクラウドに保存するとします。obnizデバイスが稼働するのは1日1度で十分で、のこりの時間は何もすることがありません。
この何もすることがない時間でSleepすることで、電池消費を少なくすることができます。そして、時間がたったら自動的に起動して、再度温度を計測することができます。
obniz.onconnect = async function(){
var tempsens = obniz.wired("LM61", { gnd:0 , output:1, vcc:2});
var temp = await tempsens.getWait();
console.log(temp); //output tempeature
obniz.sleepMinute(60*24); // one day sleep
}
sleepMinute
を使うことで、指定した時間だけsleepします。sleepが開始されると、自動的にobnizとの接続が切断され、sleep状態に入ります。sleep状態はobnizBoard 1Yの見た目が電源をつないでいない時と同じになり、画面に何も表示されなくなります。
Sleep中のobnizBoard 1Y
指定した時間が経過したら(今回であれば24時間)、自動的にsleep状態が解除され、wifi接続をし、プログラムのonconnectが呼ばれます。
外部からの刺激で起動する
時間が来るまでのsleep以外に、"ボタンが押された"や"人が来た"などの外部要因をきっかけにSleepを解除することもできます。
obnizBoard 1Yにおいてはio0が特別なピンになっていて、このピンの電圧変化によってsleep状態を解除することができます。
obniz.onconnect = async function(){
var tempsens = obniz.wired("LM61", { gnd:0 , output:1, vcc:2});
var temp = await tempsens.getWait();
console.log(temp); //output tempeature
obniz.sleepIoTrigger(true); // wake up when rising edge on io0
}
sleepIoTrigger
でio0が 0V → 5Vに変化したときにスリープを解除します。このio0にボタンを接続して、ボタンが押されていないときは0V、ボタンが押されると5Vの電圧になるようにすれば、ボタンが押されたときにSleep状態が解除されて起動します。
センサを工夫することで、ドアが開いたらsleepを解除してslackに通知を送るプログラムも作ることができます。
https://blog.obniz.com/make/obniz-board-1y-open-close-detection/