ESP32 で ping を使って無線 LAN 接続監視

ESP32 で無線 LAN 通信が行えることを監視する方法を紹介します.

はじめに

ESP32 で電動シャッターを自動制御』で作ったシステムを便利に使っていたのですが,動作してから半年くらい経過したところで,2台中の1台が応答しなくなってしまいました.

安定稼働を目指してウォッチドックタイマー監視付きの無線 LAN の再接続処理は組み込んであったのですが,それもすり抜けてしまった模様.

そこで,ゲートウェイに対して定期的に ping を行って,無線 LAN の接続状態を監視する処理を組み込むことにしました.

ping のサンプルコード

ping を行うサンプルコードは下記になります.

ping_gatway() を呼ぶと,ゲートウェイに対して ping を行い,タイムアウトの発生回数を timeout_count に格納します.

監視コード全体

無線 LAN を監視するコード全体は github の kimata/esp32_wifi_io/wifi_task.c にあります.

ゲートウェイへの ping が連続してタイムアウトした場合,リセットするようにしています.

注意事項

上のほうに掲載したコードにおいて, ping_handler() は,ping した回数 + 1回呼ばれるようです.