M5StampS3、WebServerのサンプルを改造してリレーのON、OFF。




x 過去ログを見よ!!
x 3.1.0
x なぜか、なんかいか「ツール」-「シリアルモニター」を開くと成功する(windows系)
　リ、コンパイルするとリセットが掛る(ubuntu系)

目的
最小改造でリレーをオン、オフする
Webにアクセスするごとにリレーの状態がオンオフ切り替わる。
(人がいる、照明なんかを想定)


SSIDとパスワードは、修正する事


```c++

const char *ssid = "ご自宅のSSID";
const char *password = "ご自宅のパスワード";

```

ローカルドメインを使用する


```

http://esp32.local/

```



![o_coq757.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840352/196b11e8-9f39-9bd7-ec0c-3ba05d9c6da6.jpeg)





![o_coq763.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840352/c1288694-4bdf-57b9-208b-2cab3393d556.jpeg)




![o_coq765.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840352/ad0278dd-b4e8-5017-5fb6-e9f3779ca8f4.jpeg)




![o_coq764.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840352/532a401d-3d65-c230-03db-5570bcb95269.jpeg)




![o_coq766.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840352/4fa69640-b0ef-f7dc-7e31-e6f7f0bd9f61.jpeg)


![o_coq767.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840352/70757532-dd9f-e3f3-98b2-d191f040932b.jpeg)



プログラム


```c++


//WebServer_relay_V1_M5StampS3_1


//ヘッダー
#include <WiFi.h>
#include <NetworkClient.h>
#include <WebServer.h>
#include <ESPmDNS.h>

#include <math.h> //logの計算等で使う


//定義
const char *ssid = "ご自宅のSSID";
const char *password = "ご自宅のパスワード";

static volatile int OnOff = 0;

WebServer server(80);


void handleRoot() {

  //↓処理を開始

  static uint32_t msg_count = 0;

  static char data[256 + 1];

  if(OnOff != 0) {OnOff = 0;} else {OnOff = 1;}

  digitalWrite(15, OnOff);

  snprintf(data, sizeof(data), "relay = %d #%lu", OnOff, msg_count++);

  //↑処理が終了

  //転送
  server.send(200, "text/plain", data);

}

void handleNotFound() {

  String message = "File Not Found\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 += " " + server.argName(i) + ": " + server.arg(i) + "\n";
  }
  server.send(404, "text/plain", message);

}


//初期化
void setup(void) {

  pinMode(15, OUTPUT); //GPIO init

  //WiFiの初期化
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);

  //シリアルの初期化
  Serial.begin(9600);
  Serial.println("");
  //シリアルの待ちが0.5*9
  //delay(3000);//決め打ちなので、おかしかったら調整してね! wifiの待ち0.5*6
  for (int i = 0; i < (9 + 6); i++) {
    delay(500); //接続待ち
    Serial.print(".");
  }//for

  //ローカルドメインネームサーバーの設定
  MDNS.begin("esp32"); delay(2000);//決め打ちなので、おかしかったら調整してね!


  //接続情報の表示
  Serial.println("");
  Serial.print("Connected to ");
  Serial.println(ssid);
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());


  //割り込みに登録↓ start
  server.on("/", handleRoot);

  server.on("/inline", []() {
    server.send(200, "text/plain", "this works as well");
  });

  server.onNotFound(handleNotFound);
  //割り込みに登録↑ end

  server.begin(); //webサービスの初期化
  Serial.println("HTTP server started");

}//setup


//メインループ
void loop(void) {
  server.handleClient();
  delay(2);  //allow the cpu to switch to other tasks
}//loop




```