ESP8266-01 - Error al conectar al localhost por puerto 80

Buenos días amig@s,
He creado un firmware para mi ESP8266-01 el cual captura y envía los valores de sensor DHT11 a una página web donde se muestran.
El tema es que estoy recibiendo dos errores distintos.

El primero relacionado con el “void setup()”, y es pasajero hasta que se logra conctar con la red WiFi, este error es:

ets Jan  8 2013,rst cause:4, boot mode:(3,6)

wdt reset
load 0x4010f000, len 3456, room 16 
tail 0
chksum 0x84
csum 0x84
va5432625
~ld

Y el segundo relacionado con el “void loop()”, este si es permanente, no se logra conectar con el localhost por el puerto 80, ya comprobé la dirección del localhost en el navegador y funciona perfectamente, lo que deja como única opción de error el puerto 80, los datos que obtengo siempre por monitor serial son:

Connecting to Pedraz 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 

Connected [OK]

[Connecting to 192.168.0.11 ... Connection failed...

[Connecting to 192.168.0.11 ... Connection failed...

[Connecting to 192.168.0.11 ... Connection failed...

[Connecting to 192.168.0.11 ... Connection failed...

El código completo del sketch es el ejemplo del “ESP8266 Arduino Core” claro, un tanto modificado para mi conveniencia, los datos de mi plataforma son: Linux raspberrypi 5.4.44-v7+ #1320 SMP Wed Jun 3 16:07:06 BST 2020 armv7l GNU/Linux.
Pero quizás este haciendo algo mal en el código y si alguien tiene experiencia con este problema de conexión y sería tan amable de ayudarme, se lo agradecería mucho.
Les adjunto el sketch que cargue al ESP8266-01 con la línea que me genera el error de conexión en negritas y color rojo, desde ya les agradezco su ayuda.
Saludos cordiales.

// incluimos libreria esp8266 y dht
#include <ESP8266WiFi.h>
#include <DHT.h>

// parametros WiFi
const char* ssid = "mi-WiFi";
const char* pass = "mi-password";

// parámetros host
const char* host = "192.168.0.11"; // IP localhost
const int port = 80;

// definimos los parámetros del sensor DHT y el pin de conexión
#define DHTTYPE DHT11         // DHT21, DHT22
#define DHTPIN 2              // GPIO 2 del ESP8266
DHT dht(DHTPIN, DHTTYPE, 11); // 11 works fine for ESP8266 threshold => MHZ CPU

// definimos las variables para temperatura y humedad
float temperatura;
float humedad;



void setup() {

  // iniciamos comunicación serial a 115200 baudios
  Serial.begin(115200);
  Serial.println();

  // iniciamos comunicación con el módulo DHT11
  dht.begin();

  // intentamos conectarnos al WiFi
  Serial.printf("Connecting to %s ", ssid);
  WiFi.begin(ssid, pass);
  int i = 1;
  while(WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.print(i++);
    Serial.print(" | ");
  }

  // si tiene exito la conexión al WiFi, mostramos conexión
  Serial.println("\n");
  Serial.println("Connected [OK]");

}



void loop() {

  // creamos una instancia para client
  WiFiClient client;

  // intentamos conectarnos con el host
  Serial.printf("\n[Connecting to %s ... ", host);

  // si la conexión tiene exito
  [b][color=red]if(client.connect(host, port)) {[/color][/b]

    Serial.println("connected]");

    // Leemos la los datos de temperatura y humedad del módulo DHT11
    temperatura = dht.readTemperature();
    humedad = dht.readHumidity();

    // enviamos la petición desde el módulo ESP8266 al servidor
    Serial.println("[Sending a request]");
    client.print(String("GET /servidor1_esp8266/?Temp=") + temperatura +
                        "&Hume=" + humedad + " HTTP/1.1\r\n" +
                        "Host: " + host + "\r\n" +
                        "Connection: close\r\n" + "\r\n"
                        );

    // esperamos respuesta
    Serial.println("[Response:]");

    // mientras haya conexión
    while(client.connected()) {

      // si existen datos
      if(client.available()) {

        String line = client.readStringUntil('\n');
        Serial.println(line);
        
      }
      
    }

    client.stop();
    Serial.println("\n[Discconected]");
    
  } else {

    Serial.println("Connection failed...");
    client.stop();
    
  }

  //retardo
  delay(5000);
  
}

Traté de modificar el archivo controlador de puertos “/etc/apache2/ports.conf”, añadiendo la línea “Listen 8081” por debajo de línea ya existente “Listen 80”.
Hice lo propio para “/etc/apache2/sites-enabled/000-default.conf”, modificando la linea “<VirtualHost *:80>” a “<VirtualHost *:8081>”.
Luego de eso reinicie el servidor con “systemctl restart apache2” para que tome los cambios pero persiste el error.

Bien,
Ahora después de haber restablecido los valores por defecto de los controladores de puerto, cargue el nuevamente el programa original de “ESP8266 Arduino Core”.

// incluimos libreria esp8266
#include <ESP8266WiFi.h>

// parametros WiFi
const char* ssid = "mi-WiFi";
const char* pass = "mi-password";

const char* host = "www.example.com";

void setup() {
  
  // iniciamos l puerto serial a 115200 baudios
  Serial.begin(115200);
  
  // nos conectamos al WiFi
  WiFi.begin(ssid, pass);
  
  // verificamos conexion
  while(WiFi.status() != WL_CONNECTED) {
    delay(300);
    Serial.print(".");
  }

  // si la conexion tiene exito mostramos datos de la red
  Serial.println("");
  Serial.println("WiFi conectado...");
  Serial.println(WiFi.localIP());
}

void loop() {

  // declaramos o instanciamos un cliente que se conectara al Host
  WiFiClient client;

  Serial.printf("\n[Conectando a %s ... ", host);

  // intenatamos conectarnos
  if(client.connect(host, 80)) {

    Serial.println("conectado]");

    Serial.println("[Enviando petición]");

    client.print(String("GET /") + " HTTP/1.1\r\n" +
                 "Host: " + host + "\r\n" +
                 "Connection: close\r\n" +
                 "\r\n");

    Serial.println("[Respuesta:]");

    //mientras la conxión perdure
    while(client.connected()) {

      // si existen datos disponibles
      if(client.available()) {

        String line = client.readStringUntil('\n');
        Serial.println(line);
        
      }
      
    }

    // una vez que el servidor envía los datos, nos desconectamos
    client.stop();
    Serial.println("\n[Desconectado]");
    
  } else {

    Serial.println("Conexión fallida...]");
    client.stop();
    
  }

  delay(5000);
}

Mismo error pasajero en el “void setup()” hasta que se conecta a la red WiFi.

load 0x4010f000, len 3456, room 16 
tail 0
chksum 0x84
csum 0x84
va5432625
~ld
.... 8 2013,rst cause:2, boot mode:(3,6)

Lluego se logra conectar con el servidor “www.example.com” pero no me envía repuesta por varios intentos, hasta que en una de esas me envía la respuesta solicitada.

[Conectando a www.example.com ... conectado]
[Enviando petición]
[Respuesta:]
[Conectando a www.example.com ... conectado]
[Enviando petición]
[Respuesta:]
HTTP/1.1 200 OK

Age: 441457

Cache-Control: max-age=604800

Content-Type: text/html; charset=UTF-8

Date: Wed, 10 Jun 2020 19:49:00 GMT

Etag: "3147526947+ident"

Expires: Wed, 17 Jun 2020 19:49:00 GMT

Last-Modified: Thu, 17 Oct 2019 07:18:26 GMT

Server: ECS (mic/9ACE)

Vary: Accept-Encoding

X-Cache: HIT

Content-Length: 1256

Connection: close



<!doctype html>
<html>
<head>
    <title>Example Domain</title>

    <meta charset="utf-8" />
    <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <style type="text/css">
    body {
        background-color: #f0f0f2;
        margin: 0;
        padding: 0;
        font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
        
    }
    div {
        width: 600px;
        margin: 5em auto;
        padding: 2em;
        background-color: #fdfdff;
        border-radius: 0.5em;
        box-shadow: 2px 3px 7px 2px rgba(0,0,0,0.02);
    }
    a:link, a:visited {
        color: #38488f;
        text-decoration: none;
    }
    @media (max-width: 700px) {
        div {
            margin: 0 auto;
            width: auto;
        }
    }
    </style>    
</head>

<body>
<div>
    <h1>Example Domain</h1>
    <p>This domain is for use in illustrative examples in documents. You may use this
    domain in literature without prior coordination or asking for permission.</p>
    <p><a href="https://www.iana.org/domains/example">More information...</a></p>
</div>
</body>
</html>

[Desconectado]

Entonces analizando la situación, el problema pasa por la definición de la constante “host”, al parecer acepta los puntos separadores, pero tiene problemas entre números y letras.

Por ejemplo:

Funciona con:
const char* host = “www.example.com

Pero no funciona con:
const char* host = “999.999.9.99”

Y la verdad, en este punto estoy perdido.

En la documentación de Connect()
client.connect(ip, port) aclaran que si quieres pesarle una IP debes hacerlo como un array de bytes

byte host[] = { 64, 233, 187, 99 }

Saludos

**Moderador:**Hola, bienvenido al foro Arduino.
En la sección proyectos tienes estos dos hilos que debiste haber leído antes de postear

Creo que es el 2do mensaje en pocos dias que muevo de Proyectos a Software de tu autoría.
Por favor, un proyecto es algo mas largo en tiempo que tu consulta. No uses Proyectos para postear consultas.

Gracias.

Gracias por su observación, voy a tener más cuidado la próxima vez.
Saludos cordiales.

@PeterKantTropus
Si había visto esa pagina pero la declaración de la IP en un Array esta relacionado con la librería "Ethernet" me parece, la verdad aún no hago pruebas con esa librería.
Creo que no lo había mencionado pero estoy trabajando con una Raspberry Pi 3 y el ESP8266-01.
Pero ya solucione el problema, lo que hice fue crear un servidor virtual y un dominio con sus permisos, y ahora si se conecta.
De todas formas te agradezco la intervención y si voy a tener en cuenta tu consejo cuando trabaje con la librería "Ethernet".

Saludos.

Es cierto, no es la misma librería, pero la librería ESP8266WiFi fue construida para respetar la sintaxis de la librería Ethernet.
Pero cuando hay duda, lo mejor es bucear en la fuente

Donde
virtual int connect(IPAddress ip, uint16_t port) override;
Por lo tanto esta esperando una clase especial: IPAddress
En tu caso

IPAddress ip(64, 233, 187, 99);
.
.

if(client.connect(ip, 80)) {
.
.

Saludos