Пример работы с библиотекой через протокол HTTPS на ESP32
Общие сведения
Для работы с сервисом через протокол HTTPS необходимо оборудование с поддержкой шифрования. На данный момент (Март 2020) это можно осуществить только на ESP32 и ESP8266. Данная статья рассматривает работу только с ESP32.
Нам понадобится
- Отладочная плата ESP32.
- Маршрутизатор с точкой доступа WiFi
- Подключение к сети Интернет.
Подключение оборудования
Подключите ESP32 к ПК

Скетч Arduino
Если Вы никогда не работали в среде разработки Arduino, по этой ссылке можно узнать как её установить и настроить.
Для работы в среде Arduino с платами ESP32 необходимо установить их поддержку
Установка поддержки плат ESP32
Для работы с ESP32 необходимо настроить поддержку плат ESP32. Выберите пункт меню Файл -> Настройки (или на клавиатуре нажмите ctrl+,). В поле ввода "Дополнительные ссылки для Менеджера плат" вставьте ссылку https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json. Далее необходимо выбрать пункт меню Инструменты -> Плата: -> Менеджер плат. Откроется окно Менеджера плат. В поле поиска наберите ESP32 и установите последнюю версию плат. Подробнее об установке плат можно узнать по ссылке.
Установка библиотеки
Для работы с библиотекой её необходимо установить в Arduino IDE. Для установки скачайте библиотеку и в Arduino IDE в меню выберите Скетч -> Подключить библиотеку -> Добавить .ZIP библиотеку и выберите скачанный .zip файл библиотеки. Подробнее об установке библиотек можно узнать по этой ссылке.
Скетч
// Подключаем библиотеку WiFi
#include <WiFiClientSecure.h>
// Подключаем библиотеку сервиса
#include <iocontrol.h>
// Данные точки доступа WiFi
const char* ssid = "название_точки_доступа";
const char* password = "пароль_точки_доступа";
// Сертификат SSL сайта iocontrol.ru, так же его можно получить
// из браузера или при помощи команды в WSL или linux:
// "openssl s_client -showcerts -connect iocontrol.ru:443 </dev/null"
const char* ca_cert = \
"-----BEGIN CERTIFICATE-----\n" \
"MIIGEzCCA/ugAwIBAgIQfVtRJrR2uhHbdBYLvFMNpzANBgkqhkiG9w0BAQwFADCB\n" \
"iDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0pl\n" \
"cnNleSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNV\n" \
"BAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTgx\n" \
"MTAyMDAwMDAwWhcNMzAxMjMxMjM1OTU5WjCBjzELMAkGA1UEBhMCR0IxGzAZBgNV\n" \
"BAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEYMBYGA1UE\n" \
"ChMPU2VjdGlnbyBMaW1pdGVkMTcwNQYDVQQDEy5TZWN0aWdvIFJTQSBEb21haW4g\n" \
"VmFsaWRhdGlvbiBTZWN1cmUgU2VydmVyIENBMIIBIjANBgkqhkiG9w0BAQEFAAOC\n" \
"AQ8AMIIBCgKCAQEA1nMz1tc8INAA0hdFuNY+B6I/x0HuMjDJsGz99J/LEpgPLT+N\n" \
"TQEMgg8Xf2Iu6bhIefsWg06t1zIlk7cHv7lQP6lMw0Aq6Tn/2YHKHxYyQdqAJrkj\n" \
"eocgHuP/IJo8lURvh3UGkEC0MpMWCRAIIz7S3YcPb11RFGoKacVPAXJpz9OTTG0E\n" \
"oKMbgn6xmrntxZ7FN3ifmgg0+1YuWMQJDgZkW7w33PGfKGioVrCSo1yfu4iYCBsk\n" \
"Haswha6vsC6eep3BwEIc4gLw6uBK0u+QDrTBQBbwb4VCSmT3pDCg/r8uoydajotY\n" \
"uK3DGReEY+1vVv2Dy2A0xHS+5p3b4eTlygxfFQIDAQABo4IBbjCCAWowHwYDVR0j\n" \
"BBgwFoAUU3m/WqorSs9UgOHYm8Cd8rIDZsswHQYDVR0OBBYEFI2MXsRUrYrhd+mb\n" \
"+ZsF4bgBjWHhMA4GA1UdDwEB/wQEAwIBhjASBgNVHRMBAf8ECDAGAQH/AgEAMB0G\n" \
"A1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAbBgNVHSAEFDASMAYGBFUdIAAw\n" \
"CAYGZ4EMAQIBMFAGA1UdHwRJMEcwRaBDoEGGP2h0dHA6Ly9jcmwudXNlcnRydXN0\n" \
"LmNvbS9VU0VSVHJ1c3RSU0FDZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDB2Bggr\n" \
"BgEFBQcBAQRqMGgwPwYIKwYBBQUHMAKGM2h0dHA6Ly9jcnQudXNlcnRydXN0LmNv\n" \
"bS9VU0VSVHJ1c3RSU0FBZGRUcnVzdENBLmNydDAlBggrBgEFBQcwAYYZaHR0cDov\n" \
"L29jc3AudXNlcnRydXN0LmNvbTANBgkqhkiG9w0BAQwFAAOCAgEAMr9hvQ5Iw0/H\n" \
"ukdN+Jx4GQHcEx2Ab/zDcLRSmjEzmldS+zGea6TvVKqJjUAXaPgREHzSyrHxVYbH\n" \
"7rM2kYb2OVG/Rr8PoLq0935JxCo2F57kaDl6r5ROVm+yezu/Coa9zcV3HAO4OLGi\n" \
"H19+24rcRki2aArPsrW04jTkZ6k4Zgle0rj8nSg6F0AnwnJOKf0hPHzPE/uWLMUx\n" \
"RP0T7dWbqWlod3zu4f+k+TY4CFM5ooQ0nBnzvg6s1SQ36yOoeNDT5++SR2RiOSLv\n" \
"xvcRviKFxmZEJCaOEDKNyJOuB56DPi/Z+fVGjmO+wea03KbNIaiGCpXZLoUmGv38\n" \
"sbZXQm2V0TP2ORQGgkE49Y9Y3IBbpNV9lXj9p5v//cWoaasm56ekBYdbqbe4oyAL\n" \
"l6lFhd2zi+WJN44pDfwGF/Y4QA5C5BIG+3vzxhFoYt/jmPQT2BVPi7Fp2RBgvGQq\n" \
"6jG35LWjOhSbJuMLe/0CjraZwTiXWTb2qHSihrZe68Zk6s+go/lunrotEbaGmAhY\n" \
"LcmsJWTyXnW0OMGuf1pGg+pRyrbxmRE1a6Vqe8YAsOf4vmSyrcjC8azjUeqkk+B5\n" \
"yOGBQMkKW+ESPMFgKuOXwIlCypTPRpgSabuY0MLTDXJLR27lk8QyKGOHQ+SwMj4K\n" \
"00u/I5sUKUErmgQfky3xxzlIPK1aEn8=\n" \
"-----END CERTIFICATE-----\n";
// Создаём объект клиента класса WiFiClientSecure
WiFiClientSecure client;
// Создаём объект iocontrol, передавая в конструктор название панели и клиента
iocontrol mypanel("test1", client);
void setup()
{
Serial.begin(115200);
WiFi.begin(ssid, password);
// Ждём подключения
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(500);
}
// Устанавливаем SSL/TLS сертификат
client.setCACert(ca_cert);
/* Функция setHttps() переключает порт с 80 на 443
и меняет процесс формирование строки запроса */
// Переключаем режим работы объекта библиотеки
mypanel.setHttps();
// Вызываем функцию первого запроса к сервису
mypanel.begin();
}
void loop()
{
// Если данные в памяти обновлены...
if (mypanel.readUpdate() == OK) {
// ...выводим информацию о панели в последовательный порт
Serial.println(mypanel.info());
}
}
Выберите последовательный порт к которому подключена отладочная плата нажав в меню Инструменты -> Порт -> %НОМЕР ПОРТА%, затем нажмите на кнопку загрузка или на клавиатуре ctrl+u.
Откройте монитор последовательного порта нажав левой кнопкой мыши на пункт меню Инструменты -> Монитор порта или сочетанием клавиш CTRL+SHIFT+M. В монитор последовательного порта будет выводиться информация о созданной нами тестовой панели "test1", полученная через протокол HTTPS.
