Как отправить данные датчика с одного Arduino на другой Arduino, который является веб-сервером, чтобы опубликовать его?

Я ищу уже более 2 часов и никак не могу понять. Я очень смущен тем, как это сделать. Решение, которое я нашел, заключалось в использовании HTTP POST. Но я просто не могу заставить его работать. Честно говоря, я предполагаю, что это должно быть очень просто. Я использую переменную

sensorValue = analogRead(0); 

А затем хочу отправить эту переменную на свой веб-сервер с IP-адресом 172.20.10.5

Затем я хочу сохранить эту переменную в массив на своем веб-сервере. Прошу прощения за этот запрос. Я, конечно, просмотрел не менее 20 разных сайтов и вопросов и не могу найти решение.

#include <SPI.h>
#include <Ethernet.h>
#include "ESP8266WiFi.h"

IPAddress server(172,20,10,5);
 if(client.connect(server, 80)) {
  client.println("POST /Raum1 HTTP/1.1");
  client.println("Host: 172.20.10.5");
  client.println("User-Agent: Arduino/1.0");
  client.println("Connection: close");
  client.print("Content-Length: ");
  client.println(sensorValue.length());
  client.println();
  client.println(sensorValue);
}
void setup(){
Serial.begin(9600);                            // устанавливаем последовательный порт на 9600
  WiFi.begin("iPad von Tobias", "12345678");  //Подключаемся к сети Wi-Fi

  while (WiFi.status() != WL_CONNECTED) {  // Ждем соединения

    delay(500);
    Serial.println("Waiting to connect…");

  }

  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());  // Печатаем локальный IP
 }

//сервер байтов[] = {172, 20, 10, 5}; //IP
void loop(){
sensorValue = analogRead(0);       // прочитать аналоговый входной контакт 0
Serial.print("AirQuality=");
Serial.print(sensorValue, DEC);               // печатает прочитанное значение
Serial.println(" PPM");
delay(1000);

Это мой текущий код на ESP8266, на котором датчик включен. Ошибка, которую я получаю больше всего: «клиент» не был определен в этом контексте. У меня был HTTP POST в цикле, вне цикла, в настройке, он просто не работает. Я пробовал разные методы, чтобы написать IP-адрес, который тоже не помог. Я также не знаю, как сохранить эти данные на веб-сервере. Они подключены через WIFI. Может быть, способ http совершенно неверен? Я ничего не могу найти для этого.

Скорее всего, это выглядело бы так, но это тоже не работает.

#include <SPI.h>
#include <Ethernet.h>
#include "ESP8266WiFi.h"
int sensorValue;

void setup(){
Serial.begin(9600);                            // устанавливаем последовательный порт на 9600#
WiFi.begin("iPad von Tobias", "12345678");  //Подключаемся к сети Wi-Fi

  while (WiFi.status() != WL_CONNECTED) {  // Ждем соединения

    delay(500);
    Serial.println("Waiting to connect…");

  }

  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());  // Печатаем локальный IP
 }

 IPAddress server(172,20,10,5);
 client.connect(server, 80)
void loop(){sensorValue = analogRead(0);       // прочитать аналоговый входной контакт 0
Serial.print("AirQuality=");
Serial.print(sensorValue, DEC);               // печатает прочитанное значение
Serial.println(" PPM");
delay(1000);
  client.println("POST /Api/AddParking/3 HTTP/1.1");
  client.println("Host: 172.20.10.5");
  client.println("User-Agent: Arduino/1.0");
  client.println("Connection: close");
  client.print("Content-Length: ");
  client.println(sensorValue.length());
  client.println();
  client.println(sensorValue);
}

Спасибо за вашу помощь, мне не нужно прямое решение, если вы можете указать мне литературу, которая поможет мне решить эту проблему.

, 👍-1

Обсуждение

используйте запрос GET для публикации одного значения, @Juraj

И как мне это сделать? @Юрай, @MrAeRoZz

попробуйте адаптировать этот пример https://github.com/arduino-libraries/WiFi/blob/master/examples/WiFiWebClient/WiFiWebClient.ino, @Juraj

В первом блоке кода у вас есть оператор if, который не находится внутри функции. Это сразу после IPAddress server(.... Это недопустимый синтаксис. Если операторы должны быть внутри функции, и это вполне может быть источником ошибки о том, что клиент не определен. Кроме того, вы никогда не объявляете клиента, вы можете начать с примеров и попробуй их приспособить..., @GMc


1 ответ


Лучший ответ:

-1

Если обнаружено, что вы также можете использовать UDP, чтобы делать то, что я хочу.

,