ESP8266 — це мікроконтролер, який широко використовується для побудови Інтернету Речей (IoT) і проектів з вбудованими системами. Він має можливість підключення до Wi-Fi і взаємодії з веб-серверами. Одним із завдань, які можна виконати з ESP8266, є надсилання HTTP POST запитів з JSON даними.
HTTP POST запити з JSON даними часто використовуються для взаємодії з веб-серверами, передачі даних із мікроконтролера до сервера та зворотньо. ESP8266 разом з бібліотекою ArduinoJson дозволяє легко виконувати ці завдання.
Для надсилання HTTP POST запиту з ESP8266 і JSON даними, спочатку потрібно підключити ESP8266 до мережі Wi-Fi. Після цього можна використовувати бібліотеку ArduinoJson для створення JSON об’єкту з даними, які потрібно надіслати. Після цього об’єкт можна серіалізувати в рядок JSON.
Нижче наведено приклад коду для надсилання HTTP POST запиту з JSON даними за допомогою ESP8266 і бібліотеки ArduinoJson:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
const size_t capacity = JSON_OBJECT_SIZE(2) + JSON_OBJECT_SIZE(1) + 120; DynamicJsonDocument jsonDocument(capacity); JsonObject transaction_details = jsonDocument.createNestedObject("transaction_details"); transaction_details["order_id"] = "ORDER-101"; transaction_details["gross_amount"] = 10000; String jsonString; serializeJson(jsonDocument, jsonString); http.begin(serverPath); http.addHeader("Content-Type", "application/json"); http.addHeader("Accept", "application/json"); http.addHeader("Authorization", "Basic " + String(serverKey)); int httpResponseCode = http.POST(jsonString); if (httpResponseCode > 0) { String response = http.getString(); Serial.println(httpResponseCode); Serial.println(response); } else { Serial.print("Error on sending POST: "); Serial.println(httpResponseCode); } http.end(); |
У цьому коді спочатку створюється JSON об’єкт, який містить дані про транзакцію, такі як ідентифікатор замовлення та загальна сума. Потім об’єкт серіалізується в рядок JSON, і цей рядок використовується як тіло запиту для HTTP POST запиту.
Після налаштування JSON даних і запиту встановлюється з’єднання з веб-сервером і надсилається POST запит із встановленими заголовками для передачі JSON даних. Після відправлення запиту з’єднання закривається, і результат опрацювання запиту може бути виведений у вбудований порт (наприклад, використовуючи Serial).
Варто зазначити, що для використання бібліотеки ArduinoJson разом з ESP8266 необхідно її спочатку встановити. Крім того, важливо враховувати обмежену пам’ять ESP8266, особливо при роботі з великими об’ємами даних.
У випадку, якщо під час компіляції виникає помилка “Multiple libraries were found for ‘ArduinoJson.h’,” слід перевірити коректність установки бібліотек і уникнути конфліктів між ними.
Загалом, використання ESP8266 для надсилання HTTP POST запитів з JSON даними є досить поширеною задачею в розробці Інтернету Речей. З використанням бібліотеки ArduinoJson і зазначеного методу, реалізація цієї задачі стає досить простою та ефективною.