エラーをcatchしてresetできますか?



  • WS2812搭載のLEDを60個接続し、hsvs関数で表示制御しています。1時間ほど連続使用していると時折以下のようなエラーが発生し、制御がフリーズすることはしばしば発生します。こうしたエラーをcatchして本体resetすることは可能でしょうか?

    0_1535769500127_Screen Shot 2018-09-01 at 10.26.37 AM.png


  • administrators

    @Kazunori-Sato さん

    こちらobnizのファームウェアに問題があり、社内テスト中となります。
    来週中に新バージョンとして公開予定ですのでしばらくお待ち下さい。

    また、エラー時のハンドルとリセットですが

    var _error = obniz.error;
    obniz.error = function(obj){
      _error(obj);
      obniz.reset();
    }
    

    という方法が可能です。
    ファームウェアからエラーが返ってくることは多くないのでハンドルしにくくなっています。
    この辺りは今後改善したいと思います。



  • ありがとうございます!
    この方法を試してみます。

    ちなみに私が観測しているエラーですが、Wifi接続されたPCのブラウザから長時間実行していると出る気がします。obnizとブラウザ間の通信が滞ったときにどこかにリクエストが溜まって、、って感じかなと想像していました。


  • administrators

    @Kazunori-Sato

    おっしゃる通り長時間の通信で発生しやすいです。
    あるタイミングでTCP通信が起きたときにのみ発生するエラーで長時間使用していると遭遇することが多くなります。

    新バージョンのファームウェアは社内テストももう少しで完了しますのであと数日お待ち下さい。



  • この現象に関連しているかどうか不明ですが、長時間運用時にまた別のエラー(添付画像)が発生しています。1日に数回の割合です。お知らせまで。

    0_1536011854887_Screen Shot 2018-09-04 at 5.28.15 AM.png

    0_1536011836686_Screen Shot 2018-09-04 at 5.28.45 AM.png


  • administrators

    @Kazunori-Sato ご連絡ありがとうございます。確認します。


  • administrators

    @Kazunori-Sato すいません、上記僕のミスでした。エラー箇所はここで、

      error(msg) {
        if (this.isNode) { <================ エラー
          console.error(msg);
        } else {
          if (msg && typeof msg === 'object' && msg.alert) {
            this.showAlertUI(msg);
            msg = msg.message;
          }
          if (typeof showObnizDebugError === 'function') {
            showObnizDebugError(new Error(msg));
            console.error(new Error(msg));
          } else {
            throw new Error(msg);
          }
        }
      }
    

    お伝えしたエラーハンドリングの方法のプログラムで呼んでいた

    _error(obj)
    

    が良くなかったです。
    エラーを特別表示などする必要がなければ
    _error(obj);を呼ばないでいただければそれだけで大丈夫です。



  • @Yuki-Sato 了解です、ではこの行を外しておきます。ありがとうございます!


  • administrators

    @Kazunori-Sato さん

    obnizの新しいファームウェア 1.0.9でこのエラーとならないように対応いたしました。
    obnizを更新の後お試しください。

    よろしくお願い致します。



  • 了解です、また復活させて使ってみますね。
    ちなみに、このエラーハンドリングを入れてから安定して長期稼働できるようになりました。数時間に1回の割合でresetしているようです。


  • administrators

    @Kazunori-Sato さん

    かしこまりました。
    Updateでresetは今後起きなくなるかと思いますので、それでも起こるようでしたらまたご連絡ください。


 

Recent Projects

  • @nak435 かしこまりました。よろしくお願いします。

    read more
  • @Yuki-Sato さん、

    外部の3.3vを使うとはいえ普通にvccやgndを供給して問題なくうごくのであれば、弊社での動作確認後Flick Hatのライブラリとして公開できればと思っているのですがいかがでしょう。

    今週末に確認しますので、お待ちください。

    read more
  • @nak435 時間がかかってすいません、

    なんとか3.3vをgndにつないでFlick Largeを動かしたかったのですが、うまく動かすことができなかったです。
    3.3vをgndを繋がずに接続するというのはライブラリで推奨して伝えることは難しいと思ってます。

    Flick LargeでなくFlick Hatの方で、外部の3.3vを使うとはいえ普通にvccやgndを供給して問題なくうごくのであれば、弊社での動作確認後Flick Hatのライブラリとして公開できればと思っているのですがいかがでしょう。

    よろしくお願い致します。

    read more
  • @nak435 ありがとうございます。
    接続は3.3vのgnd以外同じでした。
    エラーはそのせいかもしれませんが、しかし電気的にはgndを繋がない場合3.3vとしてうまく供給できないはずなのでそこが不思議です。

    教えていただいたプログラムの部分を修正して試してみたいと思います。
    また少し時間がかかりそうなのですが、早めに試したいと思います。

    引き続きよろしくお願い致します。

    read more