ESP8266 Conexión a sitio

Saludos, estoy iniciando en el mundo del IOT, estoy intentando conectarme a una API con un ESP8266 y leer unos datos para luego mostrarlos en una pantalla de siete segmentos.
Desafortunadamente no logro establecer la conexión con la pagina, comparto el código y la pagina donde lo he descargado:

ESP8266 NodeMCU HTTPS Requests

/*
  Complete project details: https://RandomNerdTutorials.com/esp8266-nodemcu-https-requests/
  Based on the example created by Ivan Grokhotkov, 2015 (File > Examples > ESP8266WiFi > HTTPSRequests)
*/

#include <ESP8266WiFi.h>
#include <WiFiClientSecure.h>
#include <ESP8266HTTPClient.h>

// Root certificate for howsmyssl.com
const char IRG_Root_X1 [] PROGMEM = R"CERT(
-----BEGIN CERTIFICATE-----
MIIBozCCAUigAwIBAgIQX/0+7/d07u8Ma/QX1oAS5TAKBggqhkjOPQQDAjBgMS0w
KwYDVQQDDCRCaXRkZWZlbmRlciBQZXJzb25hbCBDQS5OZXQtRGVmZW5kZXIxDDAK
BgNVBAsMA0lEUzEUMBIGA1UECgwLQml0ZGVmZW5kZXIxCzAJBgNVBAYTAlVTMB4X
DTI1MDYyNzAwMDAwMFoXDTI2MDYyODIzNTk1OVowGTEXMBUGA1UEAwwOKi5yZWRz
cGlyYS5vcmcwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASXelMyZhH5UP4mt6jq
mTsQucRLXbglJKSZQNZtnHtqdsZnRqyJKXx9Uu3TT9FyKDuKnLXICQfHqhJ49h5o
xk9CoyswKTAnBgNVHREEIDAegg4qLnJlZHNwaXJhLm9yZ4IMcmVkc3BpcmEub3Jn
MAoGCCqGSM49BAMCA0kAMEYCIQC64c34g4eKWuU77PNQ2tC1WScRFUwq7+napuCH
HO2+8wIhAOPYo29LOewEgU7HTrZQDeNqsSLnohPYF09/zBuVtw9u
-----END CERTIFICATE-----
)CERT";

// Replace with your network credentials
const char* ssid = "Departamentos";
const char* password = "Depas2468";

// Create a list of certificates with the server certificate
X509List cert(IRG_Root_X1);

void setup() {
  Serial.begin(115200);
  //Serial.setDebugOutput(true);

  Serial.println();
  Serial.println();
  Serial.println();

  //Connect to Wi-Fi
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  Serial.print("Connecting to WiFi ..");
  while (WiFi.status() != WL_CONNECTED) {
    Serial.print('.');
    delay(1000);
  }

  // Set time via NTP, as required for x.509 validation
  configTime(3 * 3600, 0, "pool.ntp.org", "time.nist.gov");

  Serial.print("Waiting for NTP time sync: ");
  time_t now = time(nullptr);
  while (now < 8 * 3600 * 2) {
    delay(500);
    Serial.print(".");
    now = time(nullptr);
  }
  Serial.println("");
  struct tm timeinfo;
  gmtime_r(&now, &timeinfo);
  Serial.print("Current time: ");
  Serial.print(asctime(&timeinfo));
}

void loop() {
  WiFiClientSecure client;

  // wait for WiFi connection
  if ((WiFi.status() == WL_CONNECTED)) {

    client.setTrustAnchors(&cert);

    HTTPClient https;

    Serial.print("[HTTPS] begin...\n");
    if (https.begin(client, "https://app.redspira.org/api/")) {  // HTTPS

      Serial.print("[HTTPS] GET...\n");
      // start connection and send HTTP header
      int httpCode = https.GET();

      // httpCode will be negative on error
      if (httpCode > 0) {
        // HTTP header has been send and Server response header has been handled
        Serial.printf("[HTTPS] GET... code: %d\n", httpCode);

        // file found at server
        if (httpCode == HTTP_CODE_OK || httpCode == HTTP_CODE_MOVED_PERMANENTLY) {
          String payload = https.getString();
          Serial.println(payload);
        }
      } else {
        Serial.printf("[HTTPS] GET... failed, error: %s\n", https.errorToString(httpCode).c_str());
      }

      https.end();
    } else {
      Serial.printf("[HTTPS] Unable to connect\n");
    }
  }

  Serial.println();
  Serial.println("Waiting 2min before the next round...");
  delay(10000);
}

Cambie la URL de la pagina y el certificado raiz en el codigo, pero aun así no me deja conectarme, cabe mencionar que el codigo original lo cargue y conectó a la pagina ejemplo.

Esto es lo que me arroja en el puerto serial.

Waiting for NTP time sync: .
Current time: Sun Jul 27 01:05:05 2025
[HTTPS] begin...
[HTTPS] GET...
[HTTPS] GET... failed, error: connection failed

Esto es lo que me dio con el ejemplo.

...Waiting for NTP time sync: .
Current time: Sun Jul 27 01:01:39 2025
[HTTPS] begin...
[HTTPS] GET...
[HTTPS] GET... code: 200
{"given_cipher_suites":["TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256","TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256","TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256","TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256","TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384","TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384","TLS_ECDHE_ECDSA_WITH_AES_128_CCM","TLS_ECDHE_ECDSA_WITH_AES_256_CCM","TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8","TLS_ECDHE_ECDSA_WITH_AES_256_CCM_8","TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256","TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256","TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384","TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384","TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA","TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA","TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA","TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA","TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256","TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256","TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384","TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384","TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256","TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256","TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384","TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384","TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA","TLS_ECDH_RSA_WITH_AES_128_CBC_SHA","TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA","TLS_ECDH_RSA_WITH_AES_256_CBC_SHA","TLS_RSA_WITH_AES_128_GCM_SHA256","TLS_RSA_WITH_AES_256_GCM_SHA384","TLS_RSA_WITH_AES_128_CCM","TLS_RSA_WITH_AES_256_CCM","TLS_RSA_WITH_AES_128_CCM_8","TLS_RSA_WITH_AES_256_CCM_8","TLS_RSA_WITH_AES_128_CBC_SHA256","TLS_RSA_WITH_AES_256_CBC_SHA256","TLS_RSA_WITH_AES_128_CBC_SHA","TLS_RSA_WITH_AES_256_CBC_SHA","TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA","TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA","TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA","TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA","TLS_RSA_WITH_3DES_EDE_CBC_SHA"],"ephemeral_keys_supported":true,"session_ticket_supported":false,"tls_compression_supported":false,"unknown_cipher_suite_supported":false,"beast_vuln":false,"able_to_detect_n_minus_one_splitting":false,"insecure_cipher_suites":{},"tls_version":"TLS 1.2","rating":"Probably Okay"}

Agradezco cualquier comentario que me guíe para lo que me hace falta.

Saludos.

Desde mi navegador recibo un alerta de software malicioso, podés explicarlo?

Saludos, no tengo idea porque tu navegador muestra ese mensaje, la app pertenece a una AC que monitorea la calidad del aire, y tiene un mapa con los valores registrador por los sensores.

La URL que uso en el programa a la cual me quiero conectar es la API de esa app para poder pedirle posterior los valores del sensor que me interesa.

Si alguien mas pudiera confirmar el dato del compañero se lo agradecería.

Accedí sin problemas, seguramente es un falso positivo del antivirus.

Agradezco el apoyo, seguí intentando conectarme y al parecer es tema del certificado, baje uno nuevo y pude conectarme exitosamente.

Gracias por sus respuestas.

Bueno yo no puedo accesarlo y por lo tanto, no puedo ayudarte.

1 Like