ここでは業務や運用で使ったこともなくobniz1台、ゲートウェイ1台しか持っていない僕がまとめてるものになります。
obnizでアプリを動かす
動かす方法としては
- ブラウザ上で動かす
- NodeJSなどサーバ上で動かす
- アプリをインストールしてクラウド実行する
などがあります。
今回は3番目について書きます。
クラウド実行
これはイメージとしてクラウド上にブラウザがあって、それを設定したトリガーで開いてくれるイメージで、Lambdaのようなサーバサイドのプログラムを作って…というのではなく、通常の開発と同じでhtmlタグがあるコードそのままを動かすことになります。
なんとなく別で作るのかな?って個人的に思いこんでたんですが、なるほどそういうことか。ということを理解するまで時間がかかりました。
利用制限
- 1回の実行は30秒
- 1日150回まで
上記制限を超えると強制終了になるので要注意です。
なお、Obniz.App.done();しないとタイムアウトするので、通常の開発ではちゃんと動いてたのに!という点は気をつけてください。
トリガー
- Webhook
- 決められたある時間
- 決められた時間の間隔
- デバイスがオンラインになったら
- デバイスのスイッチが押されたら
があります。
上記の制限から決められた時間の間隔だと約10分の設定が最短になります。
利用用途
- 定期的にセンサーなどの値を読み取ってクラウドにあげておく
- 室温など環境の変化を定期的に調べる
- 機器の死活監視として定期的に調べる
- 電源復旧時に機器の状況を確認する
- スマホやサーバなどからの指示でセンサーの値を確認する
- 帰宅前に現在の部屋の温度を確認してクーラーなどいれるか判断する
クラウド実行では適さないもの
- [✕ 適さない] 接続するBLE機器からのトリガーでデータを送信する
- MESHのボタンを押したことを取得する
- [✕ 適さない] 接続するBLE機器が不定期でデータを投げるのでそれを即時で取得して送信する
- 異常があった時に即時にイベントを飛ばす
基本的には接続するBLE端末からPUSHはクラウド実行では適さないということです。
これらは常時電波を受信してチェックする必要になります。ですが、30秒制限がある、決められた時間の間隔だと10分毎にしか起動できないため、ループして常時BLEの監視をしてというアプリが動きません。それと、obnizの特性上、端末だけで処理をしアクションを起こすというのが出来ません。
(パイプラインアプリなど使えばいけるのかもしれませんが問い合わせ前提のため試せてません。)
そのため、こういう用途の場合はNodejsなどで自分でサーバを起動させループさせチェックをさせる、Webhookでなんらかしらアクションを起こして30秒以内にそのアクションが行われるという方法が必要です。ですが、Webhookのアクションベースだと別のシステムで扉があいたらWebhookを投げてなど別のシステムも必要になり大掛かりになる可能性があるのでおすすめはできません。
ゲートウェイの使い方
個人的にいろいろな動作確認済みBLEデバイスがあり、単体でBLEデータを必要なタイミングでアップしてくれるのかと思いこんで obniz BLE/Wi-Fi Gateway Gen2.0 をMakerFaireTokyo2022 で売っていたので衝動買いしてみました。
ですが、使ってみてクラウド実行が自分で使いたい方法には適さないと気づくまで時間がかかってしまいました。
そのあたり含めて利用用途と制限など事前にまとめておきたく記事にしました。
ただこれによってobnizでいろいろなAPIがあったりということを知りました。もしかしたら僕がやりたかったものはもしかしたら他のobnizの機能の何かでできるかもしれないし、M5Stackなどを利用してobnizOSのプラグイン開発などで対応できるものがあるかもしれないなと思っていますがまだ試せてません。
イメージしてたよりも全然奥が深いぜ…obniz…