アプリの実装方法

obniz-app-sdkの具体的な使い方

  • Hosted Appのトークンを取得する
  • ライブラリをインストールする
  • obnizデバイス1台分のプログラムであるworkerのプログラムを書く
  • workerを指定しながらAppインスタンスを生成する

トークンの取得

obnizCoudにてHosted Appを作り、トークンを取得します。
トークンの取得等の詳しい説明はホステッドアプリを作るを参照してください

SDKのインストール

nodejsプロジェクトを作成し、sdkをインストールします。

$ npm i obniz-app-sdk

workerのプログラム

workerはobnizデバイス1台に対して1つ作られるインスタンスです。
このworkerの中にデバイス操作のプログラムを書いていきます。

workerは継承して使用します。

class MyWorker extends Worker {
}

最小限のworkerはこれで終わりです。実際に使うときは、onObnizConnectonObnizLoopなどをオーバーライドして使用します。

class MyWorker extends Worker {

  // あるobnizに接続できたときに1度のみ呼ばれる
  // 引数の obniz は obniz.jsの各obnizのインスタンスと同じです。
  async onObnizConnect(obniz){

    //BLEの初期化や、パーツのwiredをココで行う
    await obniz.ble.initWait();
  }

  // デバイスとつながっている間は繰り返し実行される
  // obniz.onloopと同じくデバイスとのpingWait()を常時行いループする。
  // 引数の obniz は obniz.jsの各obnizのインスタンスと同じです。
  async onObnizLoop(obniz){

      //繰り返し行いたい実処理をここで行う
    const peripherals = await obniz.ble.scan.startAllWait(null, {
      duration : 10
    });
    console.log(`founded beacons by obniz ${obniz.id} length=${peripherals.length}`)
  }

}

appの起動

appの作成にはパラメータがいくつかありますが、必須のパラメーターは4つのみです。

const app = new App({
  appToken: "<<<  ココにTokenが入ります  >>>",
  workerClass: MyWorker,
  instanceType: AppInstanceType.Master,
  obnizClass: Obniz
})

app.start();
Parameter Description
appToken Hosted Appのトークンを渡します。
workerClass 作成したworkerクラスを渡します。
instanceType スケール対応のために、Master/Slaveを指定します。今回は1台のみなのでMasterを指定します。複数サーバーにて負荷分散をしたい場合は後述する負荷分散セクションを参照ください。
obnizClass 使用するobniz.jsのobnizインスタンスを渡します。

これで起動してみましょう。

ログを見るとapp-sdkがスタートしているのがわかります。

[2021-11-14T16:13:36.942] [DEBUG] obniz-app-sdk - ready id:master

しかし、この状態ではアプリがインストールされたデバイスが存在しないため、workerが存在しません。obnizCloudよりアプリをインストールさせることで、デバイスが追加されます。

[2021-11-14T16:13:37.535] [DEBUG] obniz-app-sdk - all   | added         | updated       | deleted
[2021-11-14T16:13:37.535] [DEBUG] obniz-app-sdk - 1     | 1     | 0     | 0
[2021-11-14T16:13:37.535] [DEBUG] obniz-app-sdk - synchronize sent to master idsCount=1
[2021-11-14T16:13:37.535] [INFO] obniz-app-sdk - New Worker Start id=8952-6555

このログの all:1、add:1 の部分で、新しく1台のデバイスにアプリがインストールされ、合計1台になった、ということを表しています。

その後のNew Worker Start id=8952-6555が具体的なworkerのスタートログです。

デバイスからアプリをアンインストールしてみましょう。同じ様にworkerの数が変わっているのがわかると思います。

この様に、obnizCloudのアプリインストールを行うと自動でworkerを増減させ、アプリがインストールされている分だけのworkerを起動させ続けることができます。

obniz-app-sdkについて、詳細な説明はobniz-app-sdkのドキュメントをご覧ください。

注: "インストール"について

obnizではHosted Appとデバイスを紐づけることを「デバイスにアプリを"インストール"する」と表現しています。デバイスにHosted Appをインストールすることで、対象デバイスから送られてきたデータにHosted Appで定義されたロジックが適用されます。

この"インストール"という表現には注意が必要です。iOSアプリはiPhoneデバイスに直接データを書き込みますが、obnizデバイスにアプリデータは書き込まれません。あくまでもobniz Cloud上でのデバイスとHosted Appとのマッピングに過ぎません。

インストールについて詳しくはホステッドアプリ: インストールをご覧ください。