• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Нужна помощь Ответ на исходящий POST запрос

skyax

New member
Приветствую!

Имеется Arduino Leonardo + esp8266 и удаленный веб-сервер.

Аrduino cчитывает данные с датчиков, AT командами подключает esp-шку к WiFi (esp на борту Arduino, в данном случае это не самостоятельный МК), esp отправляет POST запрос на сервер. Тут проблем нет. Все работает корректно.

Веб-сервер (node.js + express) парсит тело запроса, складывает данные в JSON. Последним, задается ответ со статусом 200 и значением 1. Ответ уходит именно с этим статусом и именно с этим значением. Со стороны сервера проблем нет.

Теперь задача: Как получить это значение из ответа? Дело в том что отталкиваясь от него нужно включать реле, да или хотя бы просто вывести его в Serial . Но как бы я не старался, ничего не получается. Возможно дело во времени ожидании этого самого ответа?

Проще говоря, как мне отправлять данные на включение реле с сервера?

Ниже код POST запроса :

Код:
void httppost () {
  Serial1.println("AT+CIPSTART=\"TCP\",\"" + server + "\",80");

  while (Serial1.available()) Serial.write(Serial1.read());
  if( Serial1.find("OK")) {
    Serial.println("TCP connection ready");
  }
  delay(1000);

  String postRequest =
  "POST " + postUri + " HTTP/1.0\r\n" +
  "Host: " + server + "\r\n" +
  "Accept: *" + "/" + "*\r\n" +
  "Content-Length: " + data.length() + "\r\n" +
  "Content-Type: application/x-www-form-urlencoded\r\n" +
  "\r\n" + data;

  String sendCmd = "AT+CIPSEND=";
  Serial1.print(sendCmd);
  Serial1.println(postRequest.length());
  delay(500);

  if(Serial1.find(">")) {
    Serial.println("Отправка данных..");
    Serial1.print(postRequest);

    if(Serial1.find("SEND OK")) {
      Serial.println("Данные отправлены");
    }
  }
}
 
Сверху Снизу