超小型ボードM5Atom Liteをつかう その5:POSTのアクションをうけとる

shuzo-kino.hateblo.jp
の続き

WEBサーバがたてられるなら、POSTアクションもいけるのが道理。
設定値の書き換えを模したものをつくります、

実際のところ

前回の記事をベースに、handleRootを改編する形で。
なんか記述が冗長な気がしますが、後で見返して確実に再現できる気もしないので……。

const char* ssid = "ssid";
const char* password = "pass";

void handleRoot() {
 if (server.method() == HTTP_POST) {
   String buff_ssid = server.arg("ssid");
   String buff_pass = server.arg("pass");
   if (buff_ssid && buff_pass) {
    Serial.print("ssid:\t");
    Serial.println(buff_ssid);
    Serial.print("pass:\t");
    Serial.println(buff_pass);
   }
 }
 String mes = "";
 mes += "<html>";
 mes += "<meta charset='utf-8'>";
 mes += "<meta name='viewport' content='width=device-width, initial-scale=1.0'>";
 mes += "<head><title>Config Page</title></head>\n";
 mes += "<body style='font-family: sans-serif; background-color: #ffeeaa ;' >\n";
 mes += "<h1>User Config</h1>\n";
 mes += "<p>\n";
 //wifi form
 mes += "<form action='' method='post'>";
 mes += "<div>";
 mes += "<label for='inputssid'>ssid</label>";
 mes += "<input id='inputssid' type='text' name='ssid' value='";
 mes += ssid;
 mes += "'>";
 mes += "</div>\n";
 mes += "<div>";
 mes += "<label for='inputpass'>psss</label>";
 mes += "<input id='inputpass' type='password' name='pass' value='";
 mes += password;
 mes += "'>";
 mes += "</div>\n";

 mes += "<div>";
 mes += "<input type='submit' value='send' accesskey='s'>";
 mes += "</div>\n";
 mes += "</form>\n";
 mes += "</p>\n";
 mes += "</body>\n";
 mes += "</html>\n";

 server.send(200, "text/html", mes);
}

前回mDNSで割り付けたURLのROOTをみると……
http://m5atom.local/
初期値に設定した値が反映された状態で、ページが表示されます。
f:id:shuzo_kino:20210225001100p:plain

コンソールをみると

ssid:	ssid
pass:	pass

蛇足

HTML書くのがあまりに久しぶりすぎて、FormにPOSTアクションを割り付けずURLオプションにSSIDだのPASSだのがぶら下がるだけのクソ雑魚状況を延々とやっていました。
……使わない技術も、定期的になにか作って勘戻さないとダメですね。