試作で作成したセンサーを稼働させていましたが、ある時からデータが止まってしまいました。原因を調べると、液晶表示は問題なく、どうもネットにデータが送れていないようです。サーバ側は問題ないので、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()から読み出していきます。これで様子を見てみることにします。



