SPIFFS ----------------------------------------------
https://www.mgo-tec.com/spiffs-filesystem-uploader01-html に詳しい
その応用がhttps://msr-r.net/espr-wifi-robot-1/で詳述(1〜5)
-----------------esp8266 SoftAccessPoint Webserever-------------
これは家庭内LANでなく、独自のAPをたてるので、Wifiでesp8266をえらび12345678を
入れるとOK 自宅内で監視サーバ(各種)をたてるのに便利
https://programresource.net/2020/02/26/3006.html を参照した
mDNSはウィンドウズではうまくいかんというサイトをみかけた Ubuntuでは成功した
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>
#include <DNSServer.h>
//無線LANの設定 アクセスポイントのSSIDとパスワード
const char* ap_ssid = "ESP8266AP"; //APのSSID
const char* ap_password = "12345678"; //APのパスワード 8文字以上
IPAddress ip(192, 168, 1, 100);
IPAddress subnet(255, 255, 255, 0);
const byte DNS_PORT = 53;
DNSServer dnsServer;
ESP8266WebServer server(80);
String toStringIp(IPAddress ip) {
String res = "";
for (int i = 0; i < 3; i++) {
res += String((ip >> (8 * i)) & 0xFF) + ".";
}
res += String(((ip >> 8 * 3)) & 0xFF);
return res;
}
void captivePortal() { //無効リクエストはすべてESP8266に向ける
server.sendHeader("Location", String("http://") + toStringIp(server.client().localIP()), true);
server.send(302, "text/plain", "");
server.client().stop();
}
bool handleUrl(String path) {
if (path.endsWith("/")){
char chbuffer[64];
sprintf(chbuffer,"Hello ESP8266");
server.send(200,"text/plain",chbuffer);
return true;
}
return false;
}
void setup() { //無線LAN接続APモード
WiFi.mode(WIFI_AP);
WiFi.softAPConfig(ip, ip, subnet);
WiFi.softAP(ap_ssid, ap_password);
dnsServer.start(DNS_PORT, "*", ip);
WiFi.setSleepMode(WIFI_NONE_SLEEP);
server.onNotFound([]() {
if (!handleUrl(server.uri())) {
captivePortal(); //ESP8266のページにリダイレクトする capative portalの仕組み
}
});
server.begin();
}
void loop() {
dnsServer.processNextRequest();
server.handleClient();
}
面白かったのは、espr developper では、SoftAPをえらぶとデフォルトで
192.168.4.1と固定されること!
----------------------------ST mode-------------------------------------------------
localIPでブラウザするとLEDが2秒間だけ点灯
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#define SSID ""
#define PASS ""
//80番ポートのWEBサーバー
ESP8266WebServer server(80);
void setup(){
Serial.begin(9600);
pinMode(13,OUTPUT);
//WiFiに接続
WiFi.begin(SSID, PASS);
while(WiFi.status() != WL_CONNECTED){
delay(500);
Serial.print(".");
}
Serial.println("WiFi connected");
Serial.println(WiFi.localIP());
//WEBサーバー起動
server.on("/", handleRoot);
server.begin();
Serial.println("Web Server started");
}
void loop(){
server.handleClient();
}
void handleRoot(){
server.send(200, "text/plain", "LED on about 2 second");
digitalWrite(13,HIGH);
delay(2000);
digitalWrite(13,LOW);
}
0 件のコメント:
コメントを投稿