ESP32マイコンボードとMAX7219 LEDディスプレイ4連x2でNTPクロックを作ってみた の続き Wi-Fi自動再接続

Wi-Fiが見つからない
©いらすとや.

以前に作成したESP32マイコンボードとMAX7219 LEDディスプレイ4連x2でNTPクロックを作ってみたの時計は現在もデスク用の時計として活躍している。ただし、Wi-Fi接続が切れた後に再接続する処理を入れなかったので、何かあってWi-Fi接続が切れるとその後はずっとNTPサーバから正しい時刻を取得できなくなっていた。そして、この状態になると日付表示のスクロールが異常に遅くなったり時間がどんどん狂っていく。発生する症状が異なることがあって、日付表示のスクロールがあまり遅くならずに時刻だけ狂う場合がある。そのとき、見た目で異常が判らないので時計が正常に動作しているものだと思って時刻を見てしまうと酷い目に合うことも。
つまり実害があるので、やはりWi-Fiの再接続処理だけは入れておくべき。

[SOLVED] Reconnect ESP32 to Wi-Fi Network After Lost Connection という記事に書いてあったコードを利用させて貰った。

変更前のWi-Fi接続の処理

#include <WiFi.h>

#define SSID "APのSSID"
#define WIFIKEY "APのKey"

void setup() {
  WiFi.begin(SSID, WIFIKEY);

  while ( WiFi.status() != WL_CONNECTED ) {
    delay ( 500 );
  }
}

void loop(){
  //ループの処理 Wi-Fi関係は無し
}

Wi-Fi周りの処理は起動時に単純にAPに接続して終わりなので何かあって接続が途切れるとその後は切れたまま。

変更後のWi-Fi接続の処理

#include <WiFi.h>

#define SSID "APのSSID"
#define WIFIKEY "APのKey"

void WiFiStationDisconnected(WiFiEvent_t event, WiFiEventInfo_t info){
  WiFi.begin(SSID, WIFIKEY);
  delay(2000);
}

void setup() {
  WiFi.disconnect(true);
  delay(1000);

  //Wi-Fi接続切れで発生するイベント ↑の任意関数WiFiStationDisconnected()を呼ぶ
  WiFi.onEvent(WiFiStationDisconnected, WiFiEvent_t::ARDUINO_EVENT_WIFI_STA_DISCONNECTED);

  WiFi.begin(SSID, WIFIKEY);
}

void loop(){
  //ループの処理 Wi-Fi関係は無し
}

接続切れが発生するとイベントが発生して再接続のための関数が実行される。ループ内でゴチャゴチャやらなくて済むのでカンタン。

なお、Wi-Fi接続切れの時間が短い場合(1分以内程度?)は再接続されて正常な時計の動作に戻りますが、Wi-Fi接続が切れた状態で長い時間再接続できなかった場合は必ずではありませんが時計がハングアップしてしまうことがあります。この場合はWi-Fiの再接続も行われません。電源入れ直しが必要です。

関連記事:

マイクロソフト PCマネージャというアプリを触ってみた

マネージャー
©いらすとや.

マイクロソフト PCマネージャというアプリのベータ版が公開されているので触ってみた。

PC Manager 1
ブラウザでhttps://pcmanager.microsoft.com/enを開く。
マイクロソフトのサイトであることを確認。
Download for freeをクリック。MSPCManagerSetup.exeがダウンロードされるのでクリックして実行する。

PC Manager 2
MSPCManagerSetup.exeを実行するとUACの画面が表示される。
とつぜん中国語で「微软电脑管家」と表示されるのでギョッとするが、「微软」はマイクロソフト、「电脑」はコンピュータ(PC)、「管家」はマネージャのこと。Microsoft PC Managerで、ようするにこのアプリの名前。マイクロソフトの中国の拠点で開発されている?

PC Manager 3
インストールの確認を求められるので左下の「I accept」にチェックして中央の「Install」をクリック。

PC Manager 4
インストールにはそれほど長い時間はかからない。

PC Manager 5
インストールが終わると「Launch Now」でPC Managerを起動できる。また、デスクトップにアイコンが作成されるのでそれでも起動できる。

PC Manager 6
PC managerのメイン画面。メモリの使用状況が40%、テンポラリファイルが137MBというのが表示されている。右のBoostをクリックすると確認なしで不要なテンポラリファイルの削除を一気に行う。同時に不使用のメモリがあると開放してくれるのかもしれないが、使用中のメモリは開放されないのでメモリ側は数字が殆ど変わらないかも。(メモリ開放機能があるのかはよく判らない)
Health chackとStrage managementは幾つかの機能が集めらたもの、Process managementは起動中のアプリを停止させるもの、Startup appsはシステム起動時に自動起動するアプリの管理のよう。
右下のSecurityはウイルススキャン。

PC Manager 7
ヘルスチェックはキャッシュファイルや更新関係のファイル、ブラウザのキャッシュファイル、ウイルススキャン用ファイルを調べて無駄を抽出する。

PC Manager 8
必要に応じてチェックを付けるまたは外して右上のProceedをクリックするとしつこい確認なしでサクっと削除される。

PC Manager 9
ストレージマネージメントの「Deep cleanup」は項目別に無駄なファイルを抽出して削除可能。

PC Manager 10
ストレージマネージメントで無駄なファイルを削除したところ。

PC Manager 11
ストレージマネージメントの中の「Storage sense」をクリックしたところ、Windowsの設定のシステムから記憶域のストレージセンサーが開いた。

PC Manager 12
昔からWindowsにある「ディスク クリーンアップ」。これとPC ManagerのDeep Cleanと何が違うのかしら?

Windowsが標準で持つ機能とかぶってたり既存のメニューを開くだけだったりで、正直あまり存在価値がわからないツールだった。メモリ開放がしっかり行われてその効果が実感できるとか不要なレジストリを削除する機能があるだとかであれば有用なアプリになるかもしれないけど。
なお、MSPCManager Serviceというサービス名で常駐することから常時無駄なファイルを監視(削除?)したり、無駄なメモリを開放するなどしてくれれば何かと重くなりがちなWindowsを軽く維持できるようになるのかもしれない。

まだベータバージョンということで意図した性能や機能を実現できていないかもしれないので正式リリース後に改めて触ってみたいかも。もしかしたらWindowsの大型アップデートでWindows本体に組み込まれるのかもしれないけど。

Up