/ / Arduino ESP8266 + Mega utilisant SSL - ssl, arduino, esp8266

Arduino ESP8266 + Mega utilisant SSL - ssl, arduino, esp8266

J'ai des problèmes pour télécharger mon code sur mon appareil. J'utilise un Arduino Mega avec un bouclier wifi (ESP8266). Je veux utiliser le WifiClientSecure classe pour implémenter SSL dans ma connexion wifi. Voici le code que je veux télécharger sur mon appareil:

/*
HTTP over TLS (HTTPS) example sketch

This example demonstrates how to use
WiFiClientSecure class to connect to a TLS server.

This example verifies server certificate using the
root CA certificate.

We fetch and display the status of
esp8266 / Arduino project continuous integration
build.

Created by Ivan Grokhotkov, 2017.
This example is in public domain.
*/

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

const char* ssid = "........";
const char* password = "........";

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

// Root certificate used by api.github.com.
// Defined in "CACert" tab.
extern const unsigned char caCert[] PROGMEM;
extern const unsigned int caCertLen;

WiFiClientSecure client;

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());

// Synchronize time useing SNTP. This is necessary to verify that
// the TLS certificates offered by the server are currently valid.
Serial.print("Setting time using SNTP");
configTime(8 * 3600, 0, "pool.ntp.org", "time.nist.gov");
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));

// Load root certificate in DER format into WiFiClientSecure object
bool res = client.setCACert_P(caCert, caCertLen);
if (!res) {
Serial.println("Failed to load root CA certificate!");
while (true) {
yield();
}
}
}

void loop() {
// Connect to remote server
Serial.print("connecting to ");
Serial.println(host);
if (!client.connect(host, httpsPort)) {
Serial.println("connection failed");
return;
}

// Verify validity of server"s certificate
if (client.verifyCertChain(host)) {
Serial.println("Server certificate verified");
} else {
Serial.println("ERROR: certificate verification failed!");
return;
}

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

client.print(String("GET ") + url + " HTTP/1.1rn" +
"Host: " + host + "rn" +
"User-Agent: BuildFailureDetectorESP8266rn" +
"Connection: closernrn");

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(); enter code here

static int repeat = 0;
if (++repeat == 3) {
Serial.println("Done");
while (true) {
delay(1000);
}
}
delay(10000);
}

Et les erreurs que l'EDI m'envoie sont les suivantes:

avertissement: espcomm_sync a échoué

erreur: espcomm_open a échoué

erreur: espcomm_upload_mem a échoué

erreur: espcomm_upload_mem a échoué

Réponses:

0 pour la réponse № 1

La solution consiste à utiliser un module ESP8266 car Arduino Shield R3 ne prend pas en charge les méthodes ssl / tls.