Обмен данными между esp8266

Если говорить коротко, то я делаю метеостанцию и мне надо что бы одна из esp8266 отправляла данные на другую esp8266 после чего отправлялись esp8266 получателем на вебсервер, так вот а) я не знаю может ли esp8266 работать одновременно как получатель и вебсервер. б) проблемы с кодом который ниже, вроде как все работает, кроме того что датчик не конектится к основной плате

     #include <ESP8266WiFi.h>
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BMP280.h>
#include <DHT.h>

const char* ssid = "ssid";
const char* password = "pass";
const char* host = "ip";

// Для датчика BMP280
Adafruit_BMP280 bmp;
float temperature;
float pressure;

// Для датчика DHT22
#define DHTPIN 2
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
float humidity;

WiFiClient client;

void setup() {
  Serial.begin(115200);
  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Connecting to WiFi...");
  }

  Serial.println("Connected to WiFi");


  bmp.begin(0x76);
  dht.begin();
}

void loop() {
  temperature = bmp.readTemperature();
  pressure = bmp.readPressure() / 100.0F;


  humidity = dht.readHumidity();


  if (client.connect(host, 80)) {
    client.print("GET /update?temperature=");
    client.print(temperature);
    client.print("&pressure=");
    client.print(pressure);
    client.print("&humidity=");
    client.print(humidity);
    client.println(" HTTP/1.1");
    client.print("Host: ");
    client.println(host);
    client.println("Connection: close");
    client.println();
    client.stop();
  } else {
    Serial.println("Connection failed");
  }

  delay(5000); 
}
//код приемника
#include <ESP8266WiFi.h>
#include <WiFiClient.h>

const char* ssid = "ssid";
const char* password = "pass";
WiFiServer server(80);

void setup() {
  Serial.begin(115200);
  WiFi.begin(ssid, password);
  


  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Connecting to WiFi...");
  }

  Serial.println("Connected to WiFi");

  server.begin();
}

void loop() {
  WiFiClient client = server.available();
  if (!client) {
    return;
  }

  while (client.connected()) {
    if (client.available()) {
      String request = client.readStringUntil('\r');
      Serial.println(request);

     
      if (request.indexOf("/update") != -1) {
        String temperature = request.substring(request.indexOf("=") + 1, request.indexOf("&"));
        String pressure = request.substring(request.indexOf("pressure=") + 9, request.lastIndexOf("&"));
        String humidity = request.substring(request.indexOf("humidity=") + 9);

        Serial.print("Temperature: ");
        Serial.println(temperature);
        Serial.print("Pressure: ");
        Serial.println(pressure);
        Serial.print("Humidity: ");
        Serial.println(humidity);
      }

      client.flush();
    }
  }

  delay(10);
}

А для чего две платы ?

Идея была сделать метеостанцию с множеством датчиков и центральным блоком где был бы дисплей куда выводилась бы вся информация

Почитай про MQTT . Если центральная плата будет общаться с датчиками по MQTT то датчиков может быть сколько угодно. Главное что бы в сети IP адресов хватило.

Дык, у человека на каждом датчике по целой esp8266 иметь планируется.

Не жирновато ли для датчика и зачем там целая esp8266 - это только ТС знает, но, имеет полное право. Как говорил поэт: “Дуб годится на паркет, так ведь нет:frowning:

Ну и я догадываюсь. У меня коробка с центральным блоком на первом этаже в одном углу дачи, а датчики есть на втором этаже и в на улице в другом углу. Тащить провода туда не хочется. Поставил два датчика на еспшках. Особенно учитывая что как то лоханулся и заказал 5 8266 вместо 32. Когда пришли сначала переживал, а сейчас уже как то почти все рассовал на такие датчики.

Я датчики планирую раскидать по участку на сколько wi-fi хватает, поэтому и несколько плат

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

Просто забавно, что такая мощная штука, как esp8266, которая до хренища чего умеет, на какой-то датчик, вот и вспомнилось: “Дуб годится на паркет, так ведь нет:slight_smile:

То есть участок настолько большой, что в разных его концах может быть разная метеорологическая картина ???

Не обязательно большой. У меня вот датчик температуры висит с одной стороны дома (где утром солнца нет) и после обеда показывает цену на овёс. Все думаю, что надо повесить второй с другой стороны дома и выбирать их показания по времени суток :slight_smile:

Вот и у меня такая же фигня. Пришлось второй датчик вешать с северной стороны, там терасса закрытая. Вот и в ней температура заодно.