Go Down

Topic: Problema Esp8266 soft AP mode + mDNS Responder (Read 278 times) previous topic - next topic

gpb01

#15
Oct 12, 2017, 11:27 am Last Edit: Oct 12, 2017, 11:52 am by gpb01
Come ho appena fatto in un altro thread che parlava SOLO di WeMos, ricordo sempre che questo è il forum di Arduino.cc dove si fornisce assistenza per problemi relativi a problematiche che coinvolgono Arduino, i suoi collegamenti e la sua programmazione.

Quindi, ben vengano domande che riguardano moduli ESP8266 collegati ad Arduino, ma domande per moduli che nulla hanno a che vedere con Arduino, basati su altri progetti che hanno semplicemente utilizzato/sfruttato l'IDE per sviluppare un loro "core" e facilitare la programmazione delle loro schede, come le schede NodeMCU, vanno poste sui relativi forum di supporto.

Grazie.

Guglielmo

P.S.: Come vedete NON ho chiuso il thread, ma ... non esagerate eh ... ;)
Search is Your friend ... or I am Your enemy !

5a2v0

Trovata soluzione guardando l'esempio CaptivePortal disponibile per gli esp. Diciamo che non funziona nel modo in cui pensavo, ma funziona. Ecco il codice completo che ho testato:

Code: [Select]
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>
#include <DNSServer.h>
const char *ssid = "ESPap";
ESP8266WebServer server(80);
byte mac[6];
IPAddress apIP(192, 168, 4, 1);
IPAddress netMsk(255, 255, 255, 0);
const byte DNS_PORT = 53;
DNSServer dnsServer;
const char *myHostname = "esp8266";

void handleRoot() {
  server.send(200, "text/html", "<h1>You are connected</h1>");
}


void setup() {
  Serial.begin(9600);
  WiFi.mode(WIFI_AP);
  WiFi.softAPConfig(apIP, apIP, netMsk);
  WiFi.softAP(ssid);
  delay(500); // Without delay I've seen the IP address blank
  IPAddress IP = WiFi.softAPIP();
  dnsServer.setErrorReplyCode(DNSReplyCode::NoError);
  dnsServer.start(DNS_PORT, "*", apIP);
  server.on("/", handleRoot);
  server.begin();
  if (!MDNS.begin("esp8266", IP)) {
    Serial.println("Error setting up MDNS responder!");
    while (1) {
      delay(1000);
    }
  }
  MDNS.addService("http", "tcp", 80);
  WiFi.macAddress(mac);
  Serial.print("MAC: ");
  Serial.print(mac[0],HEX);
  Serial.print(":");
  Serial.print(mac[1],HEX);
  Serial.print(":");
  Serial.print(mac[2],HEX);
  Serial.print(":");
  Serial.print(mac[3],HEX);
  Serial.print(":");
  Serial.print(mac[4],HEX);
  Serial.print(":");
  Serial.println(mac[5],HEX);
}

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


In pratica così facendo, metto il modalità AP l'esp, mi collego alla sua rete ed una volta fatto qualsiasi pagina venga richiesta mi rimanda al suo ip.

Anche la stringa dell'hostname rimanderà quindi a quell ip, ottenendo l'apertura della pagina.
Solo che non è proprio una soluzione pulita.

zoomx

Se quando ti connetti come Access Point l'ESP è l'unico dispositivo a cui ti vuoi collegare è invece la soluzione migliore e l'MDNS sarebbe uno spreco.
Ha anche il pregio di funzionare anche con Windows e con tutti i dispositivi che non hanno il supporto nativo per l'MDNS.

I dispositivi che si configurano mettendo a disposizione un Access Point fanno tutti così.

Go Up