Пример работы с библиотекой через протокол HTTPS на ESP32

Пример работы с библиотекой через протокол 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.

О сервисе
Библиотека
    Для работы с Arduino, Piranha, ESP32 или ESP8266
  • Скачать: ZIP, GitHub