Arduino Polska Forum
Wysyłanie danych na serwer w ESP8266 - Wersja do druku

+- Arduino Polska Forum (https://forum.arduinopolska.pl)
+-- Dział: "Projekt Arduino Polska" (https://forum.arduinopolska.pl/dzial-projekt-arduino-polska)
+--- Dział: Arduino dla domu (https://forum.arduinopolska.pl/dzial-arduino-dla-domu)
+--- Wątek: Wysyłanie danych na serwer w ESP8266 (/watek-wysy%C5%82anie-danych-na-serwer-w-esp8266)



Wysyłanie danych na serwer w ESP8266 - Askabius - 03-08-2018

Witam, jest to mój pierwszy post na forum, dlatego proszę o wyrozumiałość jeśli jest on w złej zakładce itd. Przejdę do rzeczy. Posiadam płytkę RobotDyn z układem Atmega oraz esp8266 (Oba układy na tej samej płytce). Jakiś czas temu napisałem programy do starowania światłem poprzez przekaźniki. Komunikację między esp i Atmegą mam też w miarę opanowaną. Na ESP postawiłem serwer, za pomocą którego wysyłam do Atmegi informacje z telefonu (przez WiFi) o tym, które przekaźniki włączyć itd. Napisałem również aplikację na androida do tego celu. Jednak, chciałbym aby dane odnośnie tego, który przekaźnik jest włączony były aktualizowane na wszystkich telefonach. Aby to zrobić muszę wstawić na serwer esp informację odnośnie tego, które przekaźniki są włączone (oraz aktualizować tą informację za każdym razem gdy coś się zmieni). Problem polega na tym, że nie wiem jak to zrobić. Może ktoś z was drodzy użytkownicy ma jakiś pomysł? A może jest inny sposób? (Pytam wyłącznie o kod do ESP) 

Kod:
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>

MDNSResponder mdns;

// Replace with your network credentials
const char* ssid = "B593-5478"; //B593-5478
const char* password ="658B9D5B29F";



ESP8266WebServer server(80);
IPAddress ip(192, 168, 1, 155);
IPAddress gateway(192, 168, 1, 1);
IPAddress subnet(255, 255, 255, 0);
IPAddress dns(192, 168, 1, 1);


String webPage = "";
int zmienna1;
int zmienna2;
int zmienna3;
int zmienna4;

void setup(void){

 
  webPage += "<h1>ESP8266 Web Server</h1> <p>Dolne-ogrod  <a href=\"socket1On\"><button>ON</button></a>&nbsp;<a href=\"socket1Off\"><button>OFF</button></a></p>";
  webPage += "<p>Gorne-ogrod  <a href=\"socket2On\"><button>ON</button></a>&nbsp; <a href=\"socket2Off\"><button>OFF</button></a></p>";
  webPage += "<p>Altana  <a href=\"socket3On\"><button>ON</button></a>&nbsp; <a href=\"socket3Off\"><button>OFF</button></a></p>";
  webPage += "<p>Obwod_4  <a href=\"socket4On\"><button>ON</button></a>&nbsp; <a href=\"socket4Off\"><button>OFF</button></a></p>";
  webPage += "<p>Wylacznik_awaryjny  <a href=\"WYL\"><button>OFF</button>";
 

 
 Serial.begin(9600);
 WiFi.mode(WIFI_STA);
 WiFi.config(ip, gateway, subnet);
 WiFi.begin(ssid, password);
 // Wait for connection
 while (WiFi.status() != WL_CONNECTED) {
   delay(500);
   Serial.print(".");
 }
 Serial.println("");
 Serial.print("Connected to ");
 Serial.println(ssid);
 Serial.print("IP address: ");
 Serial.println(WiFi.localIP());

 if (mdns.begin("esp8266", WiFi.localIP())) {
   Serial.println("MDNS responder started");
 }


 
 delay(200);


 server.on("/", [](){
   server.send(200, "text/html", webPage);
 });
 server.on("/socket1On", [](){
   server.send(200, "text/html", webPage);
   Serial.write("OB1_ON");
   zmienna1 = 1;
   delay(200);
 });
 server.on("/socket1Off", [](){
   server.send(200, "text/html", webPage);
   Serial.write("OB1_OFF");
   zmienna1 = 0;
   delay(200);
 });
 
 server.on("/socket2On", [](){
   server.send(200, "text/html", webPage);
   Serial.write("OB2_ON");
   zmienna2 = 1;
   delay(200);
 });
 server.on("/socket2Off", [](){
   server.send(200, "text/html", webPage);
   Serial.write("OB2_OFF");
   zmienna2 = 0;
   delay(200);
 });

 server.on("/socket3On", [](){
   server.send(200, "text/html", webPage);
   Serial.write("OB3_ON");
   zmienna3 = 1;
   delay(200);
 });
 server.on("/socket3Off", [](){
   server.send(200, "text/html", webPage);
   Serial.write("OB3_OFF");
   zmienna3 = 0;
   delay(200);
 });

 server.on("/socket4On", [](){
   server.send(200, "text/html", webPage);
   Serial.write("OB4_ON");
   zmienna4 = 1;
   delay(200);
 });
 
 server.on("/socket4Off", [](){
   server.send(200, "text/html", webPage);
   Serial.write("OB4_OFF");
   zmienna4 = 0;
   delay(200);
 });

 server.on("/WYL", [](){
   server.send(200, "text/html", webPage);
   Serial.write("ALL_OFF");
   delay(200);
 });
 
 server.begin();
 Serial.println("HTTP server started");

 
}

 

void loop(void){
IPAddress ip(192, 168, 1, 155);
IPAddress gateway(192, 168, 1, 1);
IPAddress subnet(255, 255, 255, 0);
IPAddress dns(192, 168, 1, 1);
 server.handleClient();
     
}



RE: Wysyłanie danych na serwer w ESP8266 - Askabius - 03-08-2018

Poradziłem sobie w następujący sposób:

Kod:
server.on("/", [](){
   server.send(200, "text/html", webPage);
 });
 server.on("/socket1On", [](){
   zmienna1 = "OB1=1";
   server.send(200, "text/html", webPage+zmienna1+" "+zmienna2+" "+zmienna3+" "+zmienna4);
   Serial.write("OB1_ON");
   delay(200);
 });
 server.on("/socket1Off", [](){
   zmienna1 = "OB1=0";
   server.send(200, "text/html", webPage+zmienna1+" "+zmienna2+" "+zmienna3+" "+zmienna4);
   Serial.write("OB1_OFF");
   delay(200);
 });
 
 server.on("/socket2On", [](){
   zmienna2 = "OB2=1";
   server.send(200, "text/html", webPage+zmienna1+" "+zmienna2+" "+zmienna3+" "+zmienna4);
   Serial.write("OB2_ON");
   delay(200);
 });
 server.on("/socket2Off", [](){
   zmienna2 = "OB2=0";
   server.send(200, "text/html", webPage+zmienna1+" "+zmienna2+" "+zmienna3+" "+zmienna4);
   Serial.write("OB2_OFF");
   delay(200);
 });

 server.on("/socket3On", [](){
   zmienna3 = "OB3=1";
   server.send(200, "text/html", webPage+zmienna1+" "+zmienna2+" "+zmienna3+" "+zmienna4);
   Serial.write("OB3_ON");
   delay(200);
 });
 server.on("/socket3Off", [](){
   zmienna3 = "OB3=0";
   server.send(200, "text/html", webPage+zmienna1+" "+zmienna2+" "+zmienna3+" "+zmienna4);
   Serial.write("OB3_OFF");
   delay(200);
 });

 server.on("/socket4On", [](){
   zmienna4 = "OB4=1";
   server.send(200, "text/html", webPage+zmienna1+" "+zmienna2+" "+zmienna3+" "+zmienna4);
   Serial.write("OB4_ON");
   delay(200);
 });
 
 server.on("/socket4Off", [](){
   zmienna4 = "OB4=0";
   server.send(200, "text/html", webPage+zmienna1+" "+zmienna2+" "+zmienna3+" "+zmienna4);
   Serial.write("OB4_OFF");
   delay(200);
 });

Temat uważam za zamknięty.