61 lines
1.3 KiB
C
61 lines
1.3 KiB
C
#include <ESP8266WiFi.h>
|
|
#include <ESP8266HTTPClient.h>
|
|
//#include <WifiClientSecureBearSSL.h>
|
|
#include <bearssl.h>
|
|
#include <FS.h>
|
|
|
|
HTTPClient client;
|
|
BearSSL::WifiClientSecure *transport;
|
|
BearSSL::X509List cert_list;
|
|
|
|
void init_wifi() {
|
|
transport = new WifiClientSecure();
|
|
|
|
Serial.println("Attempting to (re)connect to wifi");
|
|
WiFi.disconnect();
|
|
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
|
|
int elapsed = 0;
|
|
while (WiFi.status() != WL_CONNECTED) {
|
|
Serial.print("Wifi connecting for ");
|
|
Serial.print(elapsed);
|
|
Serial.println(" seconds");
|
|
elapsed++;
|
|
delay(1000);
|
|
}
|
|
|
|
Serial.println("Wifi connected");
|
|
|
|
sync_time();
|
|
load_ca_cert();
|
|
}
|
|
|
|
void load_ca_cert() {
|
|
// read cert from file
|
|
if (!SPIFFS.begin()) {
|
|
Serial.println("Failed to mount file system.");
|
|
return
|
|
}
|
|
|
|
File cert = SPIFFS.open("/ca_cert.pem", "r");
|
|
if (!cert) {
|
|
Serial.println("Couldn't open cert file.");
|
|
return;
|
|
}
|
|
|
|
cert_list.append(strdup(cert.readString().c_str()));
|
|
netClient->setTrustAnchors(&certList);
|
|
}
|
|
|
|
void sync_time() {
|
|
// sync time
|
|
Serial.print("Syncing time");
|
|
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("");
|
|
}
|