komunikacja między ESP8266 Arduino

Masz problem z Arduino? Tutaj możesz szukać pomocy.
ODPOWIEDZ
ptakpl
Młodszy majsterkowicz
Posty: 4
Rejestracja: 4 gru 2019, 09:32

komunikacja między ESP8266 Arduino

Post autor: ptakpl » 4 gru 2019, 09:58

Cześć,

czy ktoś mógłby mi podpowiedzieć, jakiej komendy użyć, aby wysyłać polecenia z jednego ESP na drugie? Mam zaprogramowane ESP8266 przez adruino za pomocą Konwerter USB - UART ESP01, w kodzie stały adres IP

Kod: Zaznacz cały

IPAddress ip(192,168,1,123);   
IPAddress gateway(192,168,1,1);   
IPAddress subnet(255,255,255,0);   
WiFi.config(ip, gateway, subnet);
, żeby identyfikować zaprogramowane ESP bez problemu. Do każdego z nich wchodzę wpisując adres IP zreglądarce i odpowiednio dodając za adresem /RELAYON lub RELAYOFF załączam lub wyłączam przekaźnik.

Kolejnym krokiem chciałbym, aby było sprawdzanie stanów na jednym ESP (wysoki,niski) i wysyłanie reakcji na inne ESP wykorzystując IP np. z ESP o adresie 192.168.1.123, który czyta stany i czeka na stan wysoki wysłać komendę na 192.168.1.200/RELAYON.

Czy ktoś mógłby mi podpowiedzieć co nieco?

Cały kod:

Kod: Zaznacz cały

#include <ESP8266WiFi.h>

const char* ssid = "SSID";//type your ssid
const char* password = "PASSWORD";//type your password

int relayPin = 2; // GPIO2 of ESP8266
WiFiServer ESPserver(80);//Service Port

void setup()
{
Serial.begin(115200);
pinMode(relayPin, OUTPUT);
digitalWrite(relayPin, HIGH);

Serial.println();
Serial.println();
Serial.print("Connecting to: ");
Serial.println(ssid);

WiFi.begin(ssid, password);
delay(5000);

/*
 The following four line of the
 code will assign a Static IP Address to
 the ESP Module. If you do not want this,
 comment out the following four lines. 
 */

IPAddress ip(192,168,1,254);   
IPAddress gateway(192,168,1,1);   
IPAddress subnet(255,255,255,0);   
WiFi.config(ip, gateway, subnet);
delay(5000);

while (WiFi.status() != WL_CONNECTED)
{
delay(100);
Serial.print("*");
}
Serial.println("");
Serial.println("WiFi connected");

// Start the server
ESPserver.begin();
Serial.println("Server started");

// Print the IP address
Serial.print("The URL to control ESP8266: ");
Serial.print("http://");
Serial.print(WiFi.localIP());
}

void loop()
{
// Check if a client has connected
WiFiClient client = ESPserver.available();
if (!client)
{
return;
}

// Wait until the client sends some data
Serial.println("New Client");
while(!client.available())
{
delay(1);
}

// Read the first line of the request
String request = client.readStringUntil('\r');
Serial.println(request);
client.flush();

// Match the request

int value = LOW;
if (request.indexOf("/RELAYON") != -1)
{
Serial.println("LAMP is ON");
digitalWrite(relayPin, LOW);
value = LOW;
}
if (request.indexOf("/RELAYOFF") != -1)
{
Serial.println("LAMP is OFF");
digitalWrite(relayPin, HIGH);
value = HIGH;
}

// Return the response
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println(""); //  IMPORTANT
client.println("<!DOCTYPE HTML>");
client.println("<html>");

client.print("Status of the Lamp: ");

if(value == LOW)
{
client.print("ON"); 
}
else
{
client.print("OFF");
}

delay(1);
//client.stop();
Serial.println("Client disconnected");
Serial.println("");
}

Co miesiąc do wygrania nagrody o wartości ponad 1600 zł!


gavron
Majsterkowicz
Posty: 77
Rejestracja: 17 sie 2018, 07:43

Re: komunikacja między ESP8266 Arduino

Post autor: gavron » 4 gru 2019, 11:59

Nie łatwiej wrzucić espeasy? Ma wszystko a nawet więcej niż chcesz ;)

Wysłane z mojego Neffos Y5s przy użyciu Tapatalka

ptakpl
Młodszy majsterkowicz
Posty: 4
Rejestracja: 4 gru 2019, 09:32

Re: komunikacja między ESP8266 Arduino

Post autor: ptakpl » 4 gru 2019, 12:13

jesteś mi w stanie coś więcej powiedzieć? Jaki programator powinienem mieć i jakie narzędzia? Mam coś takiego jak niżej :) i nad tym chcę mieć kontrolę. Sprawa jest bardziej skomplikowana w sumie bo chodzi mi później o podłączenie całości do centrali alarmowej Satel.

Obrazek
ptakpl
Młodszy majsterkowicz
Posty: 4
Rejestracja: 4 gru 2019, 09:32

Re: komunikacja między ESP8266 Arduino

Post autor: ptakpl » 4 gru 2019, 12:38

W sumie to nie wiem, czy nie wolałbym jednak przez Arduino... bo co centralki wtedy podepnę arduino z ethernet shield i mogę obsługiwać kilka wejść/wyjść.
ptakpl
Młodszy majsterkowicz
Posty: 4
Rejestracja: 4 gru 2019, 09:32

Re: komunikacja między ESP8266 Arduino

Post autor: ptakpl » 4 gru 2019, 19:07

Czy ktoś może mi pomóc z komendą GET? nie wiem czy to kwestia biblioteki, czy po prostu nie idzie zrobić kilku komend GET?

Kod: Zaznacz cały

#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>

const char* ssid = "T-Mobile";
const char* password = "xxxxxxxxxxxxx!";

void setup () {

  Serial.begin(115200);
  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {

    delay(1000);
    Serial.print("Connecting..");

  }

}

void loop() {

  if (WiFi.status() == WL_CONNECTED) { //Check WiFi connection status

    HTTPClient http;  //Declare an object of class HTTPClient

    http.begin("http://192.168.1.188/ledOff");  //Specify request destination
    int httpCode = http.GET();
  

    if (httpCode > 0) { //Check the returning code
      String payload = http.getString();   //Get the request response payload
      Serial.println(payload);                     //Print the response payload
    }
    http.end();   //Close connection
  }
  delay(1000);    //Send a request every 30 seconds
}
jak ten begin zamienić na zwykły GET i wstawić ich więcej?
ODPOWIEDZ

Strony partnerskie: