Я хотел бы поделиться с вами своим опытом отправки POST-запросов с использованием NodeMCU (ESP8266) и библиотеки HTTPClient. В моем проекте мне нужно было отправить SMS через API при нажатии кнопки. Запрос включает в себя авторизацию с использованием Bearer токена, а также отправляется по HTTPS.
После некоторых экспериментов, вот рабочий скетч, который я написал:
Код
#include <ESP8266WiFi.h> // Подключаем библиотеку для работы с Wi-Fi #include <ESP8266HTTPClient.h> // Подключаем библиотеку для HTTP-запросов #include <WiFiClientSecure.h> // Подключаем библиотеку для HTTPS-запросов
// Замените эти строки на SSID и пароль вашей Wi-Fi сети const char* ssid = "YOUR_SSID"; const char* password = "YOUR_PASSWORD";
// Bearer токен для авторизации const char* bearerToken = "YOUR_BEARER_TOKEN";
// Настройки кнопки const int buttonPin = D1; bool buttonState = HIGH; // Состояние кнопки
void setup() { // Инициализируем последовательный порт для отладки Serial.begin(9600); delay(10);
// Настраиваем пин кнопки как вход pinMode(buttonPin, INPUT_PULLUP);
// Подключаемся к Wi-Fi сети Serial.println(); Serial.println(); Serial.print("Connecting to "); Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); }
void sendSMS() { if (WiFi.status() == WL_CONNECTED) { // Проверяем соединение с Wi-Fi WiFiClientSecure client; // Создаем объект WiFiClientSecure client.setInsecure(); // Отключаем проверку сертификата (для простоты, не рекомендуется для production)
ESP8266HTTPClient.h: для выполнения HTTP-запросов.
WiFiClientSecure.h: для выполнения HTTPS-запросов.
Константы для Wi-Fi и авторизации:
ssid и password: ваши SSID и пароль для подключения к Wi-Fi.
bearerToken: ваш Bearer токен для авторизации.
Настройки кнопки:
buttonPin определяет пин, к которому подключена кнопка.
buttonState отслеживает состояние кнопки.
Функция setup():
Инициализация последовательного порта для отладки.
Настройка кнопки как вход с подтягивающим резистором.
Подключение к Wi-Fi сети и вывод IP-адреса.
Функция loop():
Проверяет состояние кнопки и вызывает sendSMS(), когда кнопка нажата.
Функция sendSMS:
Проверяет соединение с Wi-Fi.
Создает объект WiFiClientSecure для HTTPS-запроса и отключает проверку сертификата (для простоты).
Создает объект HTTPClient, устанавливает URL и добавляет необходимые заголовки.
Формирует JSON-payload и отправляет POST-запрос.
Выводит код ответа и тело ответа в последовательный монитор.
Завершает запрос.
Не забудьте заменить YOUR_SSID, YOUR_PASSWORD, и YOUR_BEARER_TOKEN на актуальные данные вашей сети и токена, а также SENDER_NUMBER и RECIPIENT_NUMBER на актуальные номера. Теперь при нажатии кнопки, подключенной к пину D1, NodeMCU отправит POST-запрос и выведет результат в последовательный монитор.
Таким образом, вы можете настроить любые сценарии отправки SMS из NodeMCU, будь то уведомления, оповещения или другие автоматические сообщения.
Надеюсь, это поможет кому-то, кто столкнулся с похожей задачей. Если у вас есть вопросы или предложения по улучшению, не стесняйтесь делиться!
Отдельная благодарность что отредактировали и добавили ссылку на Github:) Ждем еще от вас интересных решений