WeMosを使ってみる
WiFi ManagerによるWiFi接続
WiFi Managerというツールがこち
らで公開されています。
有名なツールなので色々なところで紹介されています。
WeMosのFlashを完全初期化した後、こ
ちらのサンプルを実行するとESP8266はSoftAPモードとなり、「AutoConnectAP」のアクセスポイントが出現し
ます。
このアクセスポイントに接続後、ブラウザーで192.168.4.1を指定すると以下のUIが表示されます。

Configure WiFiを選ぶとアクセスポイントの一覧を表示します。

アクセスポイントを選んでパスワードを指定します。

saveを押すと指定したアクセスポイントに接続します。

ESP8266は前回接続したアクセスポイントの情報をフラッシュメモリの特定のセクターに書き込み、
次回起動時に再接続する機能が有ります。
このライブラリもその機能を利用し、前回接続したアクセスポイントに接続できるかどうかを試みます。
前回接続したアクセスポイントに接続できるときは、そのままStationモード、
接続できないときはSoftAPモードに切り替えます。

アクセスポイントを変えたいときは、Arduino-IDEのツール→Erase Flash→Sketch+WiFii
Settingsを指定してビルドするか、
スケッチの中で明示的にwifiManager.resetSettings()を実行する必要が有ります。
このライブラリでは新しい項目をUIに追加することができます。
項目の追加方法はこちらに
公開されています。
こ
ちらにUIに項目を追加するサンプルが公開されていますが、ArduinoJsonライブラリのVer5しか対応していません。
ArduinoJsonライブラリのVer6をインストールしている環境ではコンパイルが通りません。
こちらに、MQTT関連の項目を最
初から追加したライブラリが公開されています。
こ
ちらのサンプルを実行するとESP8266はSoftAPモードとなり、「esp8266-id[ChipID]」のアクセスポイン
トが出現し ます。
このアクセスポイントに接続後、ブラウザーで192.168.1.1を指定すると以下のUIが表示されます。
落ち着いた色合いのクラッシックなUIで、気に入っています。

Configureを選ぶとこちらを表示します。

ここで、SSIDやパスワードと同時に、MQTTのサーバ名、ポート番号、トピックを指定します。

saveを押すと指定したアクセスポイントに接続します。
また、UIで指定したMQTTの情報も表示します。

このライブラリのデバッグ出力は少し変わっていて、何もせずにスケッチをコンパイルすると、以下の様にデバッグ情報を何も表示しません。

Arduino-IDEのツール→Debug port→Serialを指定してからコンパイルすると、以下の様にデバッグ情報を表示します。
こ
ちらとこ
ちらでDEBUG_ESP_PORTの有無を判定しています。

UIから指定したアクセスポイントやMQTTの情報はSPIFFS上の/config.jsonというファイルに記録します。
このファイルが有るときは、このファイルから必要な情報を読み込んで、アクセスポイントに接続します。
wman.deleteConfig()を実行するとこのファイルを消します。
wman.forceApMode()を実行するとこのファイルが有っても、強制的にSoftAPモードに移行します。
Arduino-IDEのツール→Erase Flash→All Flash
Contentsを指定してビルドすると、Flash全体を初期化します。
デバッグポートの使い方や、SPIFFSへのJSONファイルの読み書きなど、参考になります。
こ
ちらのサンプルを実行すると、UIからMQTT関連の項目が消え、代わりにnumber password
textの3つの項目を表示します。

こちらのサンプルを実行すると、アクセスポイントの名前の変更、アクセスポイントのパスワードの追加、
UIのログインフォームの追加などを行うことができます。

続く...