Controlar la placa IOT ESSP8266 a través de un punto de acceso móvil wifi [cerrado]

0

Estoy usando el siguiente código para controlar mi ESP8266 usando el punto de acceso de mi teléfono celular.

/*
 * ESP8266 NodeMCU LED Control over WiFi Demo
 *
 * 
 */
#include <ESP8266WiFi.h>
#include <WiFiClient.h>

//ESP Web Server Library to host a web page
#include <ESP8266WebServer.h>

//---------------------------------------------------------------
//Our HTML webpage contents in program memory
const char MAIN_page[] PROGMEM = R"=====(
<!DOCTYPE html>
<html>
<body>
<center>
<h1>by J.Mehdinia</h1><br>
Ciclk to turn <a href="ledOn" target="myIframe">LED ON</a><br>
Ciclk to turn <a href="ledOff" target="myIframe">LED OFF</a><br>
LED State:<iframe name="myIframe" width="100" height="25" frameBorder="0"><br>
<hr>
</center>

</body>
</html>
)=====";
//---------------------------------------------------------------
//On board LED Connected to GPIO2
int LED=5;  

//SSID and Password of your WiFi router
const char* ssid = "Jms";
const char* password = "ab12";

//Declare a global object variable from the ESP8266WebServer class.
ESP8266WebServer server(80); //Server on port 80

//===============================================================
// This routine is executed when you open its IP in browser
//===============================================================
void handleRoot() {
 Serial.println("You called root page");
 String s = MAIN_page; //Read HTML contents
 server.send(200, "text/html", s); //Send web page
}

void handleLEDon() {
 Serial.println("LED on page");
 digitalWrite(LED,HIGH); //LED is connected in reverse
 server.send(200, "text/html", "ON"); //Send ADC value only to client ajax request
}

void handleLEDoff() { 
 Serial.println("LED off page");
 digitalWrite(LED,LOW); //LED off
 server.send(200, "text/html", "OFF"); //Send ADC value only to client ajax request
}
//==============================================================
//                  SETUP
//==============================================================
void setup(void){
  Serial.begin(115200);
  WiFi.begin(ssid, password);     //Connect to your WiFi router
  Serial.println("");

  //Onboard LED port Direction output
  pinMode(LED,OUTPUT); 
  //Power on LED state off
  digitalWrite(LED,LOW);

  // Wait for connection
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  //If connection successful show IP address in serial monitor
  Serial.println("");
  Serial.print("Connected to ");
  Serial.println(ssid);
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());  //IP address assigned to your ESP

  server.on("/", handleRoot);        //Which routine to handle at root location. This is display page
  server.on("/ledOn", handleLEDon);  //as Per  <a href="ledOn">, Subroutine to be called
  server.on("/ledOff", handleLEDoff);

  server.begin();                  //Start server
  Serial.println("HTTP server started");
}
//==============================================================
//                     LOOP
//==============================================================
void loop(void){
  server.handleClient();          //Handle client requests
}

Todo funciona bien usando la dirección IP de ESP8266 en una página html a través de dispositivos que usan mi punto de acceso compartido para conectarse a Internet. Pero no puedo acceder a esa página html utilizando Internet que proviene de otros puntos de acceso a Internet. Soy nuevo en ESP8266 . ¿Cuál es la razón y cómo puedo resolverlo? No tengo otro tipo de acceso a Internet para probar ahora.

    
pregunta user3724490

1 respuesta

1

Esta no es exactamente una pregunta de electrónica, sino una de redes.

En pocas palabras, cuando está conectado a un enrutador (aquí, su teléfono), un dispositivo tiene una dirección privada o local, que usa cuando se conecta con dispositivos que también usan la zona de conexión o la red de su teléfono. Generalmente están entre 192.168.0.0 y 192.168.255.255 o 10.0.0.0 y 10.255.255.255 . La dirección privada generalmente la proporciona su enrutador, a través de un servidor DHCP. Para conectarse a Internet y navegar en sitios web como stackexchange, necesita una dirección pública que le proporcione su proveedor de servicios de Internet (ISP) a su enrutador. Al acceder a Internet, todos los dispositivos conectados al mismo enrutador enviarán solicitudes al enrutador, que luego reenviará la solicitud a Internet. Como resultado, todos los dispositivos conectados al mismo enrutador accederán a Internet con la misma dirección pública.

Esto significa que no puede acceder a un dispositivo a través de su IP privada con otro dispositivo en otro enrutador, ya que son redes completamente diferentes y las direcciones privadas de uno no significan nada para el otro. Al crear un punto de acceso con su teléfono, creó lo que se llama una intranet. Como es, tampoco puede acceder a ella con su dirección pública, porque hay varios dispositivos en la misma dirección y el enrutador no podrá saber a qué dispositivo desea conectarse si solo usa la dirección IP .

En su caso, no podrá acceder a su placa desde otra red, ya que las redes de teléfonos celulares son restrictivas. Sin embargo, si tiene una red doméstica (no su teléfono sino un ISP regular), es posible que pueda configurar reenvío de puertos para acceder a su dispositivo desde otros puntos de acceso, con la dirección pública del enrutador. Sin embargo, el procedimiento exacto es diferente para cada ISP, por lo que tendrá que investigar un poco.

    
respondido por el Alex

Lea otras preguntas en las etiquetas