« Arduino の ESP8266をwebサーバーでip address を固定する | トップページ | Arduino の ESP8266をwebサーバーでSDカードのファイルを返す »

2015年8月 8日 (土)

Arduino の ESP8266をwebサーバーで定義以外のファイルが指定され場合の処理

Arduino の ESP8266をwebサーバーで定義以外のファイルが指定され場合の処理

「  server.on("xxx",yyy);」で定義していないファイルが呼ばれた場合に呼ばれた アドレス、メソッド、アーギュメントを表示します。

  1. onNotFound_() 関数を追加します。最後に"_"が付いているのはIDEのエディタがonNotFoundと間違えて色が関数の色に変ってしまうためです。
    onNotFound_()の内容はSDWebServerスケッチの内容を参考に(ほぼコピー)しています。
  2. server.onNotFound(onNotFound_); 定義を server.begin(); の直前に追加する。

全体のソースコードは以下の通りです。

#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include "myssid.h"

ESP8266WebServer server(80);

void onRoot() {
  String msg = "<html><head><title>ESP8266WebSerber</title></head><body><h1>Hello</h1></body></html>";
  server.send(200,"text/html",msg);
}
void onNotFound_() {
  String message = "Not Detected\n\n";
  message += "URI: ";
  message += server.uri();
  message += "\nMethod: ";
  message += (server.method() == HTTP_GET) ? "GET" : "POST";
  message += "\nArguments: ";
  message += server.args();
  message += "\n";
  for (uint8_t i = 0; i < server.args(); i++) {
    message += " NAME:" + server.argName(i) + "\n VALUE:" + server.arg(i) + "\n";
  }
  server.send(404, "text/plain", message);
}
void setup() {
  Serial.begin(115200);
  delay(100);
  Serial.println("");
 
  pinMode(5, OUTPUT);  // オリジナルは13だがテスト環境の都合で5に変えてある。
  WiFi.mode(WIFI_STA);
  WiFi.begin(mySSID, myPASSWORD);
  while(WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
 
  WiFi.config(IPAddress(192, 168, 0, 99), WiFi.gatewayIP(), WiFi.subnetMask());
 
  Serial.println("");
  Serial.print(WiFi.localIP());
 
  server.on("/",onRoot);
  server.on("/index.htm",onRoot);
  server.on("/index.html",onRoot);
  server.onNotFound(onNotFound_);
  server.begin();
}

void loop() {
  server.handleClient();
}

« Arduino の ESP8266をwebサーバーでip address を固定する | トップページ | Arduino の ESP8266をwebサーバーでSDカードのファイルを返す »

Arduino」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/569662/62024295

この記事へのトラックバック一覧です: Arduino の ESP8266をwebサーバーで定義以外のファイルが指定され場合の処理:

« Arduino の ESP8266をwebサーバーでip address を固定する | トップページ | Arduino の ESP8266をwebサーバーでSDカードのファイルを返す »