|
Библиотека thinger.io для ESP-IDF предназначена для подключения устройств на базе ESP32 к облачной IoT-платформе Thinger.io, предоставляя нативный и эффективный способ интеграции различных приложений.
Главная задача библиотеки — обеспечить прямую, нативную поддержку Thinger.io в проектах, использующих официальный фреймворк ESP-IDF, в отличие от подхода с использованием Arduino Core, который требует дополнительной прослойки.
Современная библиотека IOTMP-ESPIDF построена на протоколе IOTMP (бинарный протокол Thinger.io) и предоставляет значительно более тесную интеграцию, чем устаревший метод с Arduino-библиотекой.
[Ключевые возможности]
Библиотека предоставляет богатый функционал для работы с облачной платформой:
● Безопасное соединение: использует TLS-шифрование через esp_tls для защиты данных. ● Потокобезопасное API: методы для работы с сервером (свойства, хранилища данных, endpoints) можно вызывать из любой задачи FreeRTOS. ● Автоматическое переподключение: реализована логика повторного подключения с экспоненциальной задержкой. ● Гибкая настройка: полная интеграция с системой конфигурации ESP-IDF (idf.py menuconfig) для настройки размера стека, приоритета задачи, интервалов keep-alive и других параметров. ● Ресурсы и стриминг: позволяет определять ресурсы устройства (например, `temperature`, `relay`) и передавать их данные в облако с настраиваемыми интервалами.
[Как это работает]
Вот пример быстрого старта с использованием библиотеки IOTMP-ESPIDF:
1. Подключение компонентов
В ваш проект необходимо добавить два компонента: iotmp-espidf и iotmp-embedded. Это можно сделать, указав пути к ним в корневом CMakeLists.txt:
cmake_minimum_required(VERSION 3.16)
set(EXTRA_COMPONENT_DIRS "/path/to/iotmp-espidf" "/path/to/iotmp-embedded"
)
include($ENV{IDF_PATH}/tools/cmake/project.cmake) project(my_thinger_project)
2. Код устройства
В основном файле main.cpp после подключения к Wi-Fi инициализируется клиент Thinger.io:
#include < thinger/iotmp/client.hpp>
// ... после подключения к Wi-Fi ...
static thinger::iotmp::client thing;
thing.set_credentials("username", "device_id", "device_credential");
thing.set_host("iot.thinger.io");
// Определение ресурсов
thing["temperature"] = [](thinger::iotmp::output& out) { out["celsius"] = 23.5f; // Здесь должен быть код чтения с датчика
};
thing["relay"] = [](thinger::iotmp::input& in) { bool state = in["on"].get<bool>(); gpio_set_level(RELAY_GPIO, state);
};
// Запуск клиента (создает отдельную задачу FreeRTOS)
thing.start();
[Сравнение с Arduino-подходом]
Стоит различать два способа работы с Thinger.io на ESP-IDF:
| Характеристика |
IOTMP-ESPIDF (native) |
Arduino-Library + Arduino Core |
| Тип интеграции |
Прямая, нативная библиотека для ESP-IDF. |
Косвенная, через компонент arduino-esp32. |
| Используемый протокол |
Собственный бинарный протокол IOTMP. |
Стандартный протокол Thinger.io для Arduino. |
| Требования |
Только ESP-IDF v5.x/v6.x и компоненты IOTMP. |
ESP-IDF (версия совместимая с Arduino Core) и сам Arduino Core. |
| Производительность |
Оптимизирована для работы в среде FreeRTOS, потокобезопасна. |
Зависит от прослойки Arduino, выполняется в задаче Arduino. |
| Рекомендация |
Рекомендуемый способ для новых проектов на ESP-IDF. |
Устаревший метод, в основном для обратной совместимости. |
Использование нативной библиотеки IOTMP-ESPIDF является предпочтительным для всех новых проектов, так как она обеспечивает более тесную интеграцию, эффективность и полный контроль над ресурсами, что является ключевым преимуществом ESP-IDF.
[Ссылки]
1. How to connect an ESP32 to Thinger.io using ESP-IDF site:thinger.io. |