03 ESP8266でhttpアクセス

ESP8266をhttpクライアントとして使用します。WiFiに接続し、特定のページ情報を取得します。

準備

パソコン、ESP8266

サンプルプログラムについて

ESP8266ボードをArduino IDEに追加すると、Arduino IDEからサンプルプログラムを使用することができます。サンプルプログラムは、「ファイル」→「スケッチ例」を選択すると、下の方に、「NodeMCU1.0 (ESP-12E Module)用のスケッチ例」の項目がありますので、そこから選択します。

今回は、「ESP8266HTTPClient」の中にある、「BasicHttpClient」を用います。33行目の「WiFiMulti.addAP(“SSID”, “PASSWORD”);」には、ESP8266がアクセスするアクセスポイントの情報を記入します。

インターネットにアクセスする際にプロキシサーバを設定する必要がある場合は、46行目の

if (http.begin(client, “http://jigsaw.w3.org/HTTP/connection.html”)) {

の部分を

if (http.begin(“your-proxy.server.jp”, 8080(ポート番号), “http://jigsaw.w3.org/HTTP/connection.html”)) {

に変更します。

プロググラムをESP8266への書き込みが完了したら、シリアルモニタを開いて動作を確認しましょう。http://jigsaw.w3.org/HTTP/connection.html のhtmlファイルが表示されるはずです。


/**
   BasicHTTPClient.ino

    Created on: 24.05.2015

*/

#include <arduino.h>
#include <esp8266wifi.h>
#include <esp8266wifimulti.h>
#include <esp8266httpclient.h>
#include <wificlient.h>

ESP8266WiFiMulti WiFiMulti;

void setup() {

  Serial.begin(115200);
  // Serial.setDebugOutput(true);

  Serial.println();
  Serial.println();
  Serial.println();

  for (uint8_t t = 4; t > 0; t--) {
    Serial.printf("[SETUP] WAIT %d...\n", t);
    Serial.flush();
    delay(1000);
  }

  WiFi.mode(WIFI_STA);
  WiFiMulti.addAP("SSID", "PASSWORD");

}

void loop() {
  // wait for WiFi connection
  if ((WiFiMulti.run() == WL_CONNECTED)) {

    WiFiClient client;

    HTTPClient http;

    Serial.print("[HTTP] begin...\n");
    if (http.begin(client, "http://jigsaw.w3.org/HTTP/connection.html")) {  // HTTP

      Serial.print("[HTTP] GET...\n");
      // start connection and send HTTP header
      int httpCode = http.GET();

      // httpCode will be negative on error
      if (httpCode > 0) {
        // HTTP header has been send and Server response header has been handled
        Serial.printf("[HTTP] GET... code: %d\n", httpCode);

        // file found at server
        if (httpCode == HTTP_CODE_OK || httpCode == HTTP_CODE_MOVED_PERMANENTLY) {
          String payload = http.getString();
          Serial.println(payload);
        }
      } else {
        Serial.printf("[HTTP] GET... failed, error: %s\n", http.errorToString(httpCode).c_str());
      }

      http.end();
    } else {
      Serial.printf("[HTTP} Unable to connect\n");
    }
  }

  delay(10000);
}