Navigation

    obniz Developer's Community Forum

    • Login
    • Search
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    1. Home
    2. Harada Hisamitsu
    3. Posts
    H
    • Profile
    • Following
    • Followers
    • Topics
    • Posts
    • Best
    • Groups

    Posts made by Harada Hisamitsu

    • BLE接続実行後にcloseを実行すると、ObnizOfflineErrorが発生する

      下記コードを実行するとObnizOfflineErrorが発生します。
      解決方法を教えてください。
      ※コマンドライン上で実行する上では、closeを実行しなければ良いのですが、
       AWSへの移植を考えると、closeを実行しないと連続実行した際に
       Obnizへの接続が失敗してしまうため、closeを実行する必要があると考えています。

      var Obniz = require("obniz");
      
      var obniz = new Obniz("ID", {auto_connect: false});
      
      obniz.onconnect = async function () {
        await obniz.ble.initWait();
      
        obniz.ble.scan.onfind = async function(peripheral) {
          console.log(peripheral.localName);
          if (peripheral.localName == "OBNZTEST") {
            await peripheral.connectWait();
            console.log("connect");
            await peripheral.disconnectWait();
            console.log("disconnect");
            await obniz.closeWait();
            console.log("close");
          } // if end
        } // onfind end
      
        let target = {
          localName: ["OBNZTEST"]
        };
      
        await obniz.ble.scan.startWait(target);
      } //onconnect end
      
      obniz.connect();
      
      

      obniz.jsは3.15.1を利用しています。
      実行ログは以下になります(一部パス情報を削除しています)

      OBNZTEST
      connect
      disconnect
      close
      ObnizOfflineError: obniz is not online.
          at node_modules/obniz/dist/src/obniz/libs/embeds/bleHci/hci.js:139:34
          at new Promise (<anonymous>)
          at ObnizBLEHci.timeoutPromiseWrapper (node_modules/obniz/dist/src/obniz/libs/embeds/bleHci/hci.js:134:30)
          at Hci.readAclStreamWait (node_modules/obniz/dist/src/obniz/libs/embeds/bleHci/protocol/hci.js:755:37)
          at AclStream.readWait (node_modules/obniz/dist/src/obniz/libs/embeds/bleHci/protocol/central/acl-stream.js:45:38)
          at Gatt.exchangeMtuWait (node_modules/obniz/dist/src/obniz/libs/embeds/bleHci/protocol/central/gatt.js:157:14)
          at node_modules/obniz/dist/src/obniz/libs/embeds/bleHci/protocol/central/bindings.js:93:56
          at processTicksAndRejections (internal/process/task_queues.js:93:5)
          at async BleRemotePeripheral.connectWait (node_modules/obniz/dist/src/obniz/libs/embeds/bleHci/bleRemotePeripheral.js:180:13)
          at async obniz.ble.scan.onfind (test.js:11:7) {
        code: 1
      }
      
      posted in Question and Troubles
      H
      Harada Hisamitsu
    • RE: AWS Lambdaからサーボを動作させるサンプルが動作しない

      遅くなりました。回答ありがとうございます。

      ですが・・・①の現象は治らずでした。

      以下、試したソースコードになります。
      ※サーボの制御は消しています。
      ※auto_connect: falseにし、obniz.connect();を追加したものも試しましたが、現象変わらずでした。

      var Obniz = require("obniz");
      
      exports.handler = function(event, context, callback) {
        var obniz = new Obniz("ID");
        obniz.onconnect = async function () {
          await obniz.wait(500)
          obniz.close();
          callback(null, "success");
        };
      };
      

      また使用しているobniz.jsは3.15.1になります。
      念のため、npm listの結果を添付します。

      └─┬ obniz@3.15.1
        ├── @types/tv4@1.2.30
        ├─┬ @types/ws@6.0.4
        │ └── @types/node@15.6.0
        ├── eventemitter3@3.1.2
        ├─┬ js-yaml@3.14.1
        │ ├─┬ argparse@1.0.10
        │ │ └── sprintf-js@1.0.3
        │ └── esprima@4.0.1
        ├─┬ node-dir@0.1.17
        │ └─┬ minimatch@3.0.4
        │   └─┬ brace-expansion@1.1.11
        │     ├── balanced-match@1.0.2
        │     └── concat-map@0.0.1
        ├── node-fetch@2.6.1
        ├── semver@5.7.1
        ├── tv4@1.3.0
        └─┬ ws@6.2.1
          └── async-limiter@1.0.1
      
      posted in Question and Troubles
      H
      Harada Hisamitsu
    • RE: AWS Lambdaからサーボを動作させるサンプルが動作しない

      context.callbackWaitsForEmptyEventLoop = false;
      を設定すれば、Node.js イベントループが空になるまで待機せずにコールバックが返るため、とりあえずタイムアウトしなくなる。

      posted in Question and Troubles
      H
      Harada Hisamitsu
    • AWS Lambdaからサーボを動作させるサンプルが動作しない

      https://obniz.com/ja/doc/guides/nodejs/aws-lambda
      に記載のサーボを動作させるサンプルを実行したところ、以下の問題が発生しました。
      ①callbackが返らず?タイムアウトになる
      ②サーボが回ったり、回らなかったりする。

      obnizOSは3.4.4
      aws側のNode.jsは14.xを選択。作成側は14.16.1を利用。
      タイムアウトは15秒としています。

      await obniz.wait(500)をコメントアウトすると、callbackは返ってくるのですが原因がわかりませんでした。
      解決する手法を教えていただけないでしょうか。

      posted in Question and Troubles
      H
      Harada Hisamitsu