WiFiClientSecure probleem sinds kort

Software vragen voor ESP chip familie
Berichten: 132
Geregistreerd: 21 Feb 2013, 16:04

WiFiClientSecure probleem sinds kort

Berichtdoor René » 11 Mei 2020, 21:25

Mijn applicatie (met veel dank aan Nico) om zonnepaneel data door te sturen naar PVoutput.org is er ineens na jaren trouwe dienst mee opgehouden. Als ik ga kijken waar het fout gaat dan lijkt het probleem te ontstaan op het moment dat ik via WiFiClientSecure een verbinding wil maken om er achter komen of het zomer tijd is. Ik probeer te verbinden met maps.googleapis.com maar krijg de melding dat de "connection fails".
Op internet vond ik een alternatief voor een verbinding maps.googleapis.com. Maar de onderstaande code geeft hetzelfde probleem.
Waar moet ik verder zoeken?

Code: Alles selecteren
/*
    HTTP over TLS (HTTPS) example sketch
    This example demonstrates how to use
    WiFiClientSecure class to access HTTPS API.
    We fetch and display the status of
    esp8266/Arduino project continuous integration
    build.
    Limitations:
      only RSA certificates
      no support of Perfect Forward Secrecy (PFS)
      TLSv1.2 is supported since version 2.4.0-rc1
    Created by Ivan Grokhotkov, 2015.
    This example is in public domain.
*/

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

#ifndef STASSID
#define STASSID "your-ssid"
#define STAPSK  "your-password"
#endif

const char* ssid = STASSID;
const char* password = STAPSK;

const char* host = "api.github.com";
const int httpsPort = 443;

// Use web browser to view and copy
// SHA1 fingerprint of the certificate
const char fingerprint[] PROGMEM = "5F F1 60 31 09 04 3E F2 90 D2 B0 8A 50 38 04 E8 37 9F BC 76";

void setup() {
  Serial.begin(115200);
  Serial.println();
  Serial.print("connecting to ");
  Serial.println(ssid);
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());

  // Use WiFiClientSecure class to create TLS connection
  WiFiClientSecure client;
  Serial.print("connecting to ");
  Serial.println(host);

  Serial.printf("Using fingerprint '%s'\n", fingerprint);
  client.setFingerprint(fingerprint);

  if (!client.connect(host, httpsPort)) {
    Serial.println("connection failed");
    return;
  }

  String url = "/repos/esp8266/Arduino/commits/master/status";
  Serial.print("requesting URL: ");
  Serial.println(url);

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

  Serial.println("request sent");
  while (client.connected()) {
    String line = client.readStringUntil('\n');
    if (line == "\r") {
      Serial.println("headers received");
      break;
    }
  }
  String line = client.readStringUntil('\n');
  if (line.startsWith("{\"state\":\"success\"")) {
    Serial.println("esp8266/Arduino CI successfull!");
  } else {
    Serial.println("esp8266/Arduino CI has failed");
  }
  Serial.println("reply was:");
  Serial.println("==========");
  Serial.println(line);
  Serial.println("==========");
  Serial.println("closing connection");
}

void loop() {
}


dit is het resultaat:
Code: Alles selecteren
connecting to ***********
.......
WiFi connected
IP address:
192.168.178.46
connecting to api.github.com
Using fingerprint '5F F1 60 31 09 04 3E F2 90 D2 B0 8A 50 38 04 E8 37 9F BC 76'
connection failed


Advertisement

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: WiFiClientSecure probleem sinds kort

Berichtdoor Koepel » 12 Mei 2020, 13:39

Er is de afgelopen jaren nogal wat verandert.
De ESP8266 code is flink onder handen genomen en verbeterd.
Google heeft dingen beter beveiligd. Zo was het vroeger mogelijk om spraaksynthese gratis te gebruiken, maar dat kan ook niet meer.
Anderen hebben dingen opgeheven. Bijvoorbeeld het lokale weer opvragen kan op steeds minder sites.
Ik heb geen oplossing voor je, maar het verbaast me niets dat allerlei gratis dingen niet meer kunnen.

Gebruik de nieuwste Arduino IDE met een up-to-date ESP8266 omgeving.

Kijk eerst bij de ESP8266 welke functies die heeft voor de tijd en het opvragen via NTP. Volgens mij heb je dan automatisch de juiste tijd.
Ik weet niet zeker of deze oude manier nog gangbaar is: https://github.com/esp8266/Arduino/blob/master/libraries/esp8266/examples/NTP-TZ-DST/NTP-TZ-DST.ino.

Op de ESP32 gebruik ik dit: https://github.com/espressif/arduino-esp32/blob/master/libraries/ESP32/examples/Time/SimpleTime/SimpleTime.ino. De ConfigTime() verzorgt bijna alles.

Dit is een voorbeeld met NTP op de ESP8266 door gebruikt te maken van een NTP library: https://randomnerdtutorials.com/esp8266-nodemcu-date-time-ntp-client-server-arduino/.

Berichten: 132
Geregistreerd: 21 Feb 2013, 16:04

Re: WiFiClientSecure probleem sinds kort

Berichtdoor René » 12 Mei 2020, 13:46

Dank voor je reactie, ik ga er mee aan de gang

Terug naar ESP Software

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 4 gasten