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は返ってくるのですが原因がわかりませんでした。
    解決する手法を教えていただけないでしょうか。



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



  • context.callbackWaitsForEmptyEventLoop = false; にてコールバックが変えるようになったことから、プログラムは正常に動いていて、obniz.close後のコネクションのリトライにてイベントループが発生していると思われます。

    こちらはobniz.js 3.14.0にて修正した項目になりますので、最新のobniz.jsにて試して頂けないでしょうか。

    また、

    ②サーボが回ったり、回らなかったりする。

    こちらについては、いくつか考えられますが

    1. プログラム実行前のサーボモータの状態によっては動かないことがあります。
      サーボモーターは角度を指定するモーターになっていますので、もともとその角度の状態になっていた場合は、動かず、そのままの状態になります。

    2. サーボモーターへの指示を出してから切断(obniz.close)までの時間が短すぎて、サーボモーターが回る前に切断されている可能性があります。obniz.wait(500);などをobniz.close()の前に設定いただければと思います。

    obnizBoardではコネクションがつながったらQR表示がPinAssignの表示に変わりますので、コネクションが張られているかどうかの参考にしていただければと思います。


Log in to reply
 

SUGGESTED TOPICS