Arduino DDNS No-IP

Buenos días:

Ref antigua: Actualizar un DDNS desde Arduino
Apr 18, 2013, 07:01 am

Hay algo nuevo para actualizar el DDNS desde Arduino sin necesidad de un PC?
Tengo los dispositivos en red con un switch y un Router Móvil y no se puede actualizar el DDNS.
Tengo la dirección de update de No-IP, me falta hacer dinámica la solicitud del IP público.

Gracias.

http://username:password@dynupdate.no-ip.com/nic/update?hostname=mytest.testdomain.com&myip=1.2.3.4

Hace un tiempo encontré esto, pruébalo a ver si te sirve

Arduino DDNS

Me es muy complicado, mi idea era solamente actualizar el DDNS del router períodicamente, ya que mi pedido desde el exterior no va ser al Arduino, sino otro dispositivo que es el maestro y servidor web (PLC).
Gracias,

¿Has revisado los menús de configuración de tu router? Mi router (un ZTE) por ejemplo, tiene en el menu application un apartado DDNS para configurar un servidor.

ya que mi pedido desde el exterior no va ser al Arduino, sino otro dispositivo que es el maestro y servidor web (PLC).

Y si quieres activar el DNS del router porque lo preguntas acá? Que tiene que ver arduino con ello si te interesa para activar un PLC?

El Router está configurado, lo que pasa que si no hay una orden externa al servidor de No-IP este no se actualiza y queda con un IP obsoleto.
El Arduino es el medio para interactuar con el servidor No_IP, ya que está conectado a la red cómo Modbus TCP.

Sigue siendo una pregunta de Router. Pero bueno adelante.

Creo que no me hago entender, los servidores DDNS necesitan actualizar los IP públicos, para ello y lo poco que he podido hacer es saber cómo se actualiza, me falta el código para saber el IP público y agregarlo a la petición de actualización, digámos cada 5 minutos.
Su necesidad está cuándo el dispositivo (Arduino) no está en una red con ordenadores y hay que actualizar el DDNS para su acceso remoto.

Tu crees que no te entiendo?
Claro que te entiendo, yo tengo máquinas con DUC de NO-ip, Raspberry con No-ip asi que te comprendo perfectamente.

Gracias.

¿Pero has llegado a mirar la primera solución que te propuso surbyte?

Hacía lo que estás pidiendo, pero la rechazaste porque "es muy complicado", cuando hace justamente lo que estabas pidiendo.

Espero que por este camino sea mucho más fácil, en la primera línea tengo la petición de la IP pública y en la segunda el update del DDNS, cómo convierto el texto de la IP pública en una variable para colocarla en la petición?

Para esto tendré que activar Server(80) y tratarlo como html. Está en uso en el programa el puerto 502, creo que tendría que ser con una interrupción.

https://ipv4.wtfismyip.com/text
http://username:password@dynupdate.no-ip.com/nic/update?hostname=mytest.testdomain.com&myip=1.2.3.4
#include <HttpClient.h>

  String new_ip;
  String old_ip;
  String update_url;
  String httpCode;
  String ddns_choice;
// ######## GENERATE UPDATE URL ######## //
        if(ddns_choice == "noip"){
          update_url = "http://fxxxo@xxxxld.com:xxxxx@dynupdate.no-ip.com/nic/update?hostname=lxxn.ddns.net&myip="+new_ip+"";}
          else{
          Serial.println("## INPUT CORRECT DDNS SERVICE NAME ##");
          return;
         }

// ######## GET PUBLIC IP ######## //
        HttpClient http;
        http.begin("http://ipv4bot.whatismyipaddress.com/");
        int httpCode = http.get();
        if(httpCode > 0) {
          if(httpCode == HTTP_CODE_OK) {
                new_ip = http.getString();
              }
        }else{
          http.end();
          return;
        }
        http.end();

// ######## CHECK & UPDATE ######### //
    if(old_ip != new_ip){

       HttpClient http;
       http.begin(update_url);
       int httpCode = http.get();
       if(httpCode > 0) {
         old_ip = new_ip;
        }
       http.end();
     }

Estoy armando este código basado en librerías de ES8266, para usarlas en Arduino UNO, pero tengo este error:

no matching function for call to ‘HttpClient::get()’

Gracias