Acceso WAN varios nodemcu (SOLUCIONADO)

Hola a tod@s y felices fiestas.

Tengo una duda, que seguramente sea una tontería, pero es por dejarlo claro.

El tema es que tengo un control de calefacción montado con un nodemcu, me va muy bien, consigo que funcione desde una red LAN o WAN, pero realmente no sé cómo funciona…

Mi módulo nodemcu tiene una ip asignada tal: 192.168.1.134

Para acceder desde fuera de mi casa lo hago asignando un nombre a mi ip variable con duckDns. Hasta aquí todo bien.

Para poner, por ejemplo el salón a 21 grados digo algo tal que así:

http://heater.duck.org/192.168.1.134/salon25

Peeeeeroooo aquí viene el asunto, da igual la ip que tenga el módulo asignado, o sea, si yo escribo, en vez de 192.168.1.134, escribo 192.168.1.135, o cualquier número 192.168.1.xxx si al final pongo lo de /salon25, el módulo nodemcu recibe ese código y me pone en marcha la calefacción.

Repito que seguramente esté haciendo una pregunta de pandereta, pero es que no entiendo entonces la ip de qué me vale ponerla. Sí que es la identificación del cacharro en mi red doméstica, pero, ¿cómo es posible que poniendo cualquier ip en la llamada al nodemcu me haga caso?.

Quiero que se me quede claro, puesto que me gustaría montar el mismo circuito para hacer prueebas, usando los mismismos comandos, pero con un nodemcu diferente, por supuesto con otra ip.

Os dejo la parte del código con la que hago la petición para que el nodemcu reciba la orden.

P.D.: Disculpar el uso de la jerga de informática

/ Read the first line of the request
  String req = client.readStringUntil('\r');
  Serial.println(req);
  client.flush();


      int  val;
      
      if (req.indexOf("/Salon21") != -1){
      Salon = 21;
      val = 1;
      } else if (req.indexOf("/Salon22") != -1){
      Salon = 22;
      val = 1;
      } else if (req.indexOf("/Salon23") != -1){
      Salon = 23;
      val = 1;
      } else if (req.indexOf("/Salon24") != -1){
      Salon = 24;
      val = 1;
      } else if (req.indexOf("/Salon25") != -1){
      Salon = 25;
      val = 1;
      } else if (req.indexOf("/Salon26") != -1){
      Salon = 26;
      val = 1;
      } else if (req.indexOf("/Salon27") != -1){
      Salon = 27;
      val = 1;
      } else if (req.indexOf("/Salon00") != -1){
      Salon = 00;
      val = 0;
      }

          } else {
      Serial.println("peticion invalida");
      client.stop();
      return;      
      }

      calderaHabilitada = val;
      client.flush();

  // Prepare the response
  String s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>\r\nCaldera habilitada? ";
  s += (val)?"SI":"NO";
  s += "</html>\n";

  

  // Send the response to the client
  client.print(s);
  delay(1);
  client.stop();
  Serial.println("Client disonnected");

Tu DNS debe ser heater.duck.org, por lo que al poner esto siempre estas direccionando a tu nodemcu, y al usar un indexOf siempre que tengas las palabras que buscas en el GET te va a funcionar, da igual donde este.

Prueba así seguramente también te funcione http://heater.duck.org/jdsklfhkjhsdlkfjh/salon25kjhfdskljhfkslda

Si quieres conectar a varios lo fácil es cambiarle el puerto server, también puedes hacer que lo reciba todo el mismo y lo reenvie al que toca con otro get o puerto serie.
Yo le pondría password de acceso.

krnlpanic:
Prueba así seguramente también te funcione http://heater.duck.org/jdsklfhkjhsdlkfjh/salon25kjhfdskljhfkslda

Vaya, nunca te acostarás sin saber una cosa mas.

Entiendo y acabo de comprobar que da igual la ip que utilizo, lo que importa es que el texto que ponga sea diferente entre nodemcus y con eso entiendo que sobra.

O sea, si por ejemplo pongo /salon25 accedo a ese nodemcu.

Pero si pongo por ejemplo /salon2-25 y lo tengo así programado en otro nodemcu, accedo al segundo nodemcu.

Así que relamente la ip me da exactamente igual, tan solo es la dirección que usa el router y el cacharro para decirse, "hola estoy aquí, hola te veo".

Muchas gracias, feliz navidad.

No podrás acceder a los 2 nodemcu desde internet si en los 2 usas el puerto 80 ya que el router no sabrá donde tiene que dirigirlo, puedes usar el puerto 81 por ejemplo, tendrás que abrirlo en el router para que redireccione a la otra ip y acceder a el así http://heater.duck.org:81/salon25

krnlpanic:
No podrás acceder a los 2 nodemcu desde internet si en los 2 usas el puerto 80 ya que el router no sabrá donde tiene que dirigirlo, puedes usar el puerto 81 por ejemplo, tendrás que abrirlo en el router para que redireccione a la otra ip y acceder a el así http://heater.duck.org:81/salon25

Mil gracias, ya lo tengo todo en marcha.