試作で作成したセンサーを稼働させていましたが、ある時からデータが止まってしまいました。原因を調べると、液晶表示は問題なく、どうもネットにデータが送れていないようです。サーバ側は問題ないので、Wi-Fi接続がどうも切断されたままのようです。
以前に「WiFiが切断されても環境が整えば自動的に再度、自動接続」と記載しました。これは正確には WatchDogs が働いて、wdt reset でリスタートが掛かかり、WiFiが回復してくれるためです。ただ今回、この機能は働かずリスタートが掛からなかったと判断するのが妥当だと考えました。
そこでWiFi.status()を確認し、WL_CONNECTED(=3)であるかを見て、再接続を実施。それでも接続しない場合は、ESPを再起動というルーチンを加えることにします。
void wifiCheck() { if (WiFi.status() != WL_CONNECTED) { WiFi.disconnect(); delay(50); // 前回情報で接続する… WiFi.begin(); int i = 40; // 10秒程度待つ… // 結局は、回復しないで、wdt reset になるので、直ぐ自分で restart させた方が良いかも。 while (WiFi.status() != WL_CONNECTED) { delay(250); i--; if (i < 0) { ESP.restart(); } } } }
これをloop()から読み出していきます。これで様子を見てみることにします。