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?

Мы очень признательны за любые рекомендации. Мне очень нравится заниматься кодированием, но я считаю этот шаг довольно сложным, если не сказать больше!

Спасибо!

, 👍0

Обсуждение

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


1 ответ


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;

}
,