Если говорить коротко, то я делаю метеостанцию и мне надо что бы одна из 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);
}