先のソフトウェア周りの話のところ書きましたが、今回、CircuitPythonでambientへ書き込み時にCircutPythonの先の深いところでエラーが起きてアプリが落ちる事がありました。
Error自体は、Repeated socket failuresとでてadafruit_requests.pyの中で落ちているようです。色々調べて海外でのやり取りを見つけましたが、どうやらadafruit_requests.pyの先で落ちているようで、そのやり取りも途中状態でまだFixされていないような感じです。
未だ根本解決はしていないようですが、今回はPythonのtry/exceptで救える事がわかったのでその対処をしていて、どのくらいの頻度で落ちているのかを知るために失敗した次の成功した転送でその状態をサーバに送るようにしていました。
上の3枚のグラフは、2023/12/6、12/7、12/8の横軸時刻、縦軸が緑が転送にかかった時間(sec)、紫がサーバからのresponce値(失敗した場合は1000を足しているので急に立ち上がっているところが前回失敗しているところ)です。転送に要した時間は、プログラムの中で8秒でタイムアウトするように設定しているので、実際にはもっとかかっているものもありますが所望の動作です。
問題の紫のグラフですが、真ん中の12/7のお昼ころを境に明らかに挙動(頻度)が変わっています。もちろんESP32側のソフトウェア環境は継続して動作しているので変わっていません。この後も一日数回から10回程度のエラーは起きていますが頻度は以前と明らかに違います。途中経路のNetwork側の設定が変わったのか、サーバ側の設定が変わったのか、どちらにしてもESP32/CircuitPythonの外部の要因がきっかけでこのエラーの発生頻度が大きく変わる、ということはわかりました。
今回はtry/exceptでアプリ側で救えているので良いですが、複数のシステムが絡んでいるとこういうところは難しいです。
※コメント投稿者のブログIDはブログ作成者のみに通知されます