Коректный синтаксис для setCACert ESP8266
Я пытаюсь использовать сертификат с ESP8266, идентичный код отлично работает на ESP32, но для ESP8266 я получаю ошибки.
Я установил сертификат следующим образом
const char *ROOT_CERT PROGMEM = R"EOF(= "-----BEGIN CERTIFICATE-----
MIIFYDCCBEigAwIBAgIQQAF3ITfU6UK47naqPGQKtzANBgkqhkiG9w0BAQsFADA/
MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT
...
-----END CERTIFICATE--------)EOF";
Для ESP32, который я использую
wifiClient.setCACert(ROOT_CERT)
Это работает нормально, но на 8266 я получаю.
no matching function for call to 'BearSSL::WiFiClientSecure::setCACert(const char*&)'
Я провел некоторое исследование, и есть некоторые предположения, что требуется длина, поэтому я также попробовал это
wifiClient.setCACert(ROOT_CERT,sizeof(ROOT_CERT)-1);
Но это приводит к следующей ошибке.
invalid conversion from 'const char*' to 'const uint8_t* {aka const unsigned char*}' [-fpermissive]
Я использую библиотеку плат 2.7.4 8266, так как слышал, что у 3.X есть аналогичные проблемы.
Я пробовал V 3.X, но получаю следующее
class BearSSL::WiFiClientSecure' has no member named 'setCACert'
@maxum, 👍1
1 ответ
Я не мог использовать setCACert с 8266. Вам нужно сделать это по-другому, и мне пришлось поискать в Интернете.
Но, наконец, я заставил свой тест телеграммы работать с esp32 на 8266,
вот что я сделал и надеюсь, что вы сможете это адаптировать
вам нужно:
#include <ESP8266WiFi.h>
после ваших определений добавьте:
X509List cert(TELEGRAM_CERTIFICATE_ROOT);
WiFiClientSecure client;
UniversalTelegramBot bot(BOTtokenValue,client);
в настройках мне пришлось добавить ОБЕ эти строки (сначала я не думал, что мне нужна 1-я строка, но, видимо, вам это нужно):
configTime(0, 0, "pool.ntp.org"); // получить время UTC через NTP
client.setTrustAnchors(&cert); // Добавляем корневой сертификат для api.telegram.org
это преобразовало мой код ESP32 из ESP32 в 8266
- Как читать и записывать EEPROM в ESP8266
- Как сделать выводы Tx и Rx на ESP-8266-01 в выводах GPIO?
- Как навсегда изменить скорость передачи данных ESP8266 (12e)?
- Как заставить 5-вольтовое реле работать с NodeMCU
- Как исправить: Invalid conversion from 'const char*' to 'char*' [-fpermissive]
- ESP8266 не подключается к Wi-Fi
- AT-команда не отвечает на последовательный монитор
- Разница между этими двумя платами NodeMCU?
PS- замените WiFi.h на ESP8266WiFi.h, @Jim Barat