random nerd ESP8266 WEB Server with Arduino IDE

Sekcia určená pre Arduino nadšencov

Moderátor: Moderátori

boro
Stály člen
Stály člen
Príspevky: 118
Dátum registrácie: 10 Nov 2010, 00:00
Vek: 80

random nerd ESP8266 WEB Server with Arduino IDE

Príspevok od používateľa boro » 22 Dec 2018, 09:35

Dobrý deň,som začiatočník vo WiFi komunikácii a experimentujem s ovládaním portov ESP8266 cez WiFi.Odskúšal som dva programy s ESP-01 a tie mi fungujú.Zapáčil sa mi program random nerd ESP8266 Web Server with arduino IDE,kde sú 2 tlačítka.Program sa riadne prihlási,vypíše čo má vypísať,vytvorí novú Web stránku na IP adrese s tlačítkami,ale pri kliknutí na tlačítko síce prebehne komunikácia cez WiFi,ale sa nezmení stav tlačítka ani portu.Program som už niekoľkokrát porovnal s originálom,žiadny rozdiel som nenašiel.Sám ho neviem skontrolovať,lebo poznám len programovanie v IDE pre Arduino.Preto prosím niekoho,kto takémuto programu rozumie,aby sa na to pozrel a poradil mi.Ďakujem a želám všetkým príjemne prežitie Vianoc a veľa šťastia a zdravia v Novom Roku.
Boro
Program viď dolu

#include <ESP8266WiFi.h>
const char* ssid="Mám tam meno";
const char* password="Mám tam heslo";
WiFiServer server(80);
String header;
String output5State="off";
String output4State="off";
const int output5=5;
const int output4=4;

void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
pinMode(output5,OUTPUT);
pinMode(output4,OUTPUT);
digitalWrite(output5,LOW);
digitalWrite(output4,LOW);
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid,password);
while(WiFi.status() !=WL_CONNECTED){
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected.");
Serial.println("IP adress:");
Serial.println(WiFi.localIP());
server.begin();
}

void loop() {
// put your main code here, to run repeatedly:
WiFiClient client=server.available();
if(client){
Serial.println("New Client.");
String currentLine="";
while (client.connected()){
if(client.available()){
char c=client.read();
Serial.write(c);
header +=c;
if(c=='\n'){
if(currentLine.length()==0){
client.println("HTTP/1.1 200 OK");
client.println("Content-type:text/html");
client.println("Connection:close");
client.println();
if(header.indexOf("GET/5/on")>=0){
Serial.println("GPIO 5 on");
output5State="on";
digitalWrite(output5,HIGH);
}else if(header.indexOf("GET/5/off")>=0){
Serial.println("GPIO 5 off");
output5State="off";
digitalWrite(output5,LOW);
}else if(header.indexOf("GET/4/on")>=0){
Serial.println("GPIO 4 on");
output4State="on";
digitalWrite(output4,HIGH);
}else if(header.indexOf("GET/4/off")>=0){
Serial.println("GPIO 4 off");
output4State="off";
digitalWrite(output4,LOW);
}
client.println("<!DOCTYPE html><html>");
client.println("<head><meta name=\"viewport\"content=\"width=device-width,initial-scale=1\">");
client.println("<link rel=\"icon\"href=\"data:,\">");
client.println("<style>html{font-family:Helvetica;display:inline-block;margin:0px auto;text-align:center;}");
client.println(".button{background-color:#195B6A;border:none;color:white;padding:16px 40px;");
client.println("text-decoration:none;font-size:30px;margin:2px;cursor:pointer;}");
client.println(".button2{background-color:#77878A;}</style></head>");
client.println("<body><h1>ESP8266 Web Server</h1>");
client.println("<p>GPIO 5 - State" + output5State + "</p>");
if(output5State=="off"){
client.println("<p><a href=\"/5/on\"><button class=\"button\">ON</button></a></p>");
}else{
client.println("<p><a href=\"/5/off\"><button class=\"button button2\">OFF</button></a></p>");
}
client.println("<p>GPIO 4-State" + output4State + "</p>");
if(output4State=="off"){
client.println("<p><a href=\"/4/on\"><button class=\"button\">ON</button></a></p>");
}else{
client.println("<p><a href=\"/4/off\"><button class=\"button button2\">OFF</button><a></p>");
}
client.println("</body></html>");
client.println();
break;
}else{
currentLine="";
}
}else if(c !='\r'){

currentLine =currentLine+ c;
}
}
}
header="";
client.stop();
Serial.println("Client disconnected.");
Serial.println("");

}}





[/code
0

Používateľov profilový obrázok
Dr.Martin
Zaslúžilý člen
Zaslúžilý člen
Príspevky: 1361
Dátum registrácie: 15 Jún 2011, 00:00
Vek: 29

Re: random nerd ESP8266 WEB Server with Arduino IDE

Príspevok od používateľa Dr.Martin » 22 Dec 2018, 10:37

Vymaz si to Get z tychto riadkov if (header.indexOf("GET/5/on") >= 0) {
Ked mas esp 01 tak tam mas pini 0 a 2 a nie 4 a 5.
Aspon tie piny si nastuduj to su zaklady.
Pises ze poznas len IDE pre arduino v čom si teda programoval toto.
0
Ľudovít Štúr opustil túto konverzáciu.
Nemám rád špenát, Tdi a moralistov.
GitHub

boro
Stály člen
Stály člen
Príspevky: 118
Dátum registrácie: 10 Nov 2010, 00:00
Vek: 80

Re: random nerd ESP8266 WEB Server with Arduino IDE

Príspevok od používateľa boro » 22 Dec 2018, 11:42

Ďakujem pekne Dr.Martinovi,už to funguje.V programe som samozrejme pri experimentoch s ESP_01 zamenil GPIO 5 za GPIO 2 a GPIO4 za GPIO 0.Ten program som len opísal a nahral do ESP.Rozumiem len príkazom pre Arduino.Príkazom pre komunikáciu cez WiFi len čiastočne podľa vysvetliviek v programe.Tvorbe Web stránky vôbec.Budem sa snažiť doštudovať.Rád by som sa ešte opýtal prečo autor tam dal tie výrazy GET,keď to spôsobovalo,že program riadne nefungoval a bez nich to funguje?
Ešte raz ďakujem.
Boro
0

Používateľov profilový obrázok
marioo
Zaslúžilý člen
Zaslúžilý člen
Príspevky: 1112
Dátum registrácie: 15 Júl 2012, 12:28
Bydlisko: SVK
Vek: 50

Re: random nerd ESP8266 WEB Server with Arduino IDE

Príspevok od používateľa marioo » 22 Dec 2018, 22:43

Keď chceš robiť ON OFF a kopec ďalších vecí pozri si BLYNK.CC a čokoľvek spravíš za pár minút...

(samozrejme ak sa chceš učiť choď pekne od začiatku)
0

Napísať odpoveď
  • Podobné témy
    Odpovedí
    Zobrazení
    Posledný príspevok