HTTP-команда Arduino — ESPEasy
Я новичок в Arduino, и хотя я начинаю и создаю некоторые базовые проекты, моей конечной целью сейчас является возможность включать и выключать мой Sonoff с помощью переключателя мгновенного действия, подключенного к моей плате Arduino с поддержкой Wi-Fi (Particle Photon). . Я не ищу код, который я просто хотел бы указать в правильном направлении.
Я прошил свой Sonoff, чтобы он теперь запускал ESPeasy, и настроил его так, чтобы я мог управлять им из своего браузера с помощью http ://10.0.1.35/control?cmd=event,TurnOn, чтобы включить его, и http://10.0 .1.35/control?cmd=event,TurnOff, чтобы отключить его. Я читал об использовании запросов POST или GET, но ни один из примеров, которые я нашел, не отправляет команду, аналогичную тому, как я сейчас настроил свой Sonoff.
Мой вопрос: на что мне следует обратить внимание и прочитать, чтобы иметь возможность отправлять эти типы команд через Arduino?
Мы очень признательны за любые рекомендации. Мне очень нравится заниматься кодированием, но я считаю этот шаг довольно сложным, если не сказать больше!
Спасибо!
@iamfelix, 👍0
Обсуждение1 ответ
Спасибо за предупреждение о том, что запрос GET был действительно правильным. Сегодня мне удалось немного поработать над этим, чтобы запрос GET заработал. Я также подключил кнопку и получил ее для отправки двух запросов как при нажатии, так и при отпускании. Я знаю, что этот код предназначен для Photon, но я надеюсь, что он поможет кому-то другому
// TCPClient
#define LIB_DOMAIN "10.0.1.252"
TCPClient client;
// Эта константа не изменится:
const int buttonPin = D1; // контакт, к которому прикреплена кнопка
const int ledPin = D7; // внутренний вывод светодиода
// Переменные изменятся:
int buttonState = 0; // текущее состояние кнопки
int lastButtonState = 0; // предыдущее состояние кнопки
void setup() {
pinMode(ledPin, OUTPUT); // Инициализировать контакт D7 как выход
pinMode(buttonPin, INPUT_PULLUP);
// Инициализируем вывод D1 как вход с внутренним подтягивающим резистором
// инициализируем последовательную связь:
Serial.begin(9600);
}
void loop() {
// прочитать входной контакт кнопки:
buttonState = digitalRead(buttonPin);
// сравниваем состояние кнопки с предыдущим состоянием
if (buttonState != lastButtonState) {
// если состояние изменилось, включаем или выключаем
if (buttonState == HIGH) {
digitalWrite(ledPin, LOW);
//TCPClient
client.connect(LIB_DOMAIN, 80);
client.println("GET /control?cmd=event,TurnOff HTTP/1.0");
client.println("Host:" LIB_DOMAIN);
client.println("Content-Length: 0");
client.println();
} else {
digitalWrite(ledPin, HIGH);
//TCPClient
client.connect(LIB_DOMAIN, 80);
client.println("GET /control?cmd=event,TurnOn HTTP/1.0");
client.println("Host:" LIB_DOMAIN);
client.println("Content-Length: 0");
client.println();
}
// Небольшая задержка, чтобы избежать подпрыгивания
delay(50);
}
// сохранить текущее состояние как последнее состояние для следующего прохода цикла
lastButtonState = buttonState;
}
- Проанализировать большой ответ json с помощью ESP8266
- Библиотека Arduino для выполнения http post запроса с аутентификацией носителя (bearer)
- Запрос POST (HTTPClient) с ESP8266, не работающим на локальном хосте (код http = -1)
- HTTPS-клиент с MKR1000
- Невозможно установить связь между модулем ESP-12E и мобильным устройством через маршрутизатор ESP-12E.
- Mkr1010 отключается и снова подключается нормально до тех пор, пока не достигнет точки, где он никогда больше не подключится снова
- ESP8266 загружает данные на облачную платформу Google
- ESP32-S3 — HttpClient возвращает только код состояния 200 без данных полезной нагрузки JSON
Particle Photon — это не Arduino. с Arduino вы должны использовать библиотеку WiFi для своего адаптера WiFi. в библиотеках Arduino WiFi есть примеры, @Juraj
Прошу прощения, я полагаю, что это не так, но я работаю на основе того, что решение будет одинаковым для Arduino и платы Photon, которую я использую., @iamfelix
https://www.arduino.cc/en/Tutorial/WiFiWebClient, @Juraj
Вы пытались выполнить HTTP-запрос Get точно с теми URL-адресами, которые вы уже использовали в своем браузере? Браузер также просто выполняет запрос Get, @chrisl