ESP8266 web server

Le-Ze
Příspěvky: 208
Registrován: 24 črc 2017, 08:15
Reputation: 0

ESP8266 web server

Příspěvek od Le-Ze » 19 úno 2024, 11:10

Zdravím.
https://randomnerdtutorials-com.transla ... _x_tr_hl=c

Takto mám 4 tlačitka.
Bud mužu GPIO přepinat přes ty tlačitka, nebo přes nějaký skript.
http://192.168.1.30/rele1/on
http://192.168.1.30/rele1/off

Jak k tomu dodělat, aby mi to vratili info o GPIO?

Když spustim web stranku takto http://192.168.1.30/info, aby se mi zobrazila prazdna stranka a v ní jen jeden řadek kde bude stav těch GPIO. (1011)
Vim jak na to, ale vždy se mi vykresli i stranka s těma tlačitky.

Uživatelský avatar
gilhad
Příspěvky: 788
Registrován: 07 bře 2018, 11:22
Reputation: 0

Re: ESP8266 web server

Příspěvek od gilhad » 19 úno 2024, 19:23

Podívej se na Serial, co ti přesně leze z toho http://192.168.1.30/info za hlavičky, někde v tom bude to info, tak si tam připiš na to test.

Asi jak máš ty if (header.indexOf("GET /5/on") >= 0) { tak tam mužeš dát něco jako

Kód: Vybrat vše

if (header.indexOf(".../info...") >= 0) { // podle toho, co tam leze
    hodnota="xxxx";// to si prostě poskládej nějak, treba
    hodnota[0] = digitalRead(output1) ? '1' : '0'; 
    hodnota[1] = digitalRead(output2) ? '1' : '0'; 
    hodnota[2] = digitalRead(output3) ? '1' : '0'; 
    hodnota[3] = digitalRead(output4) ? '1' : '0'; 
    client.println(hodnota); 
    
    // The HTTP response ends with another blank line
    client.println();
    // Break out of the while loop
    break;
    }; 

Le-Ze
Příspěvky: 208
Registrován: 24 črc 2017, 08:15
Reputation: 0

Re: ESP8266 web server

Příspěvek od Le-Ze » 20 úno 2024, 07:48

No jo, něco takoveho jsem zkoušel.
Uplně nahoře ma stav těch GPIO a pak celou web stranku.
Ja potřebují aby po zadaní http://192.168.1.30/info, to vykreslilo prazdnou web stranku a jen ten stav GPIO.
Takže pod to cos tu dal přidat k IF else.
Pokud přijde info, vypiše stav GPIO, a pokud ne jde do else a vykresli web stranku.

Le-Ze
Příspěvky: 208
Registrován: 24 črc 2017, 08:15
Reputation: 0

Re: ESP8266 web server

Příspěvek od Le-Ze » 21 úno 2024, 08:02

Tak to funguje. Děkují

Le-Ze
Příspěvky: 208
Registrován: 24 črc 2017, 08:15
Reputation: 0

Re: ESP8266 web server

Příspěvek od Le-Ze » 17 dub 2024, 21:56

Zdar.
Ještě jeden dotaz.
Jak docilim toho, aby se mi ta web stranka načitala třeba každou vteřinu furt dokola?
Už jsem to kdysi řešil, ale nemohu najit.
Dik.

Pablo74
Příspěvky: 48
Registrován: 03 lis 2019, 17:00
Reputation: 0

Re: ESP8266 web server

Příspěvek od Pablo74 » 18 dub 2024, 08:55

Do hlavičky stránky, tedy mezi <head> a </head> si přidáš

Kód: Vybrat vše

<meta http-equiv="refresh" content="10">
Hodnota atributu content udává čas v sekundách, v tomto případě tedy 10 s.

Le-Ze
Příspěvky: 208
Registrován: 24 črc 2017, 08:15
Reputation: 0

Re: ESP8266 web server

Příspěvek od Le-Ze » 18 dub 2024, 09:30

Děkují, funguje, ale je u toho problem.

Web server je na adrese 192.168.1.40
Zadam do prohližeče a co vteřinu se znovu načita 192.168.1.40.
Když kliknu třeba na 3 tlačitko tak se to v změní
http://192.168.1.40/rele3/off
A furt dokola se spošti http://192.168.1.40/rele3/off

Neda se to pořešit? Aby po kliknutí na ten button se ta stranka vratila na 192.168.1.40.
Děkují.

Pablo74
Příspěvky: 48
Registrován: 03 lis 2019, 17:00
Reputation: 0

Re: ESP8266 web server

Příspěvek od Pablo74 » 18 dub 2024, 09:38

Zkus tohle:

Kód: Vybrat vše

<meta http-equiv="refresh" content="10; url=http://192.168.1.40">
Mezi 10 a url je středník.

Le-Ze
Příspěvky: 208
Registrován: 24 črc 2017, 08:15
Reputation: 0

Re: ESP8266 web server

Příspěvek od Le-Ze » 18 dub 2024, 10:46

No nevim jestli je problem mezi židli a klavesnici, ale i to první mi nešlo.
client.println("<meta http-equiv="refresh" content="10">");
Compilation error: unable to find string literal operator 'operator""refresh' with 'const char [27]', 'unsigned int' arguments

Tak jsem hledal na netu podle toho cos tu dal a vyplivlo to toto a funguje to.
client.println("<meta http-equiv=\"refresh\" content=\"1\">");

U toho druheho je stejna chyba.

A toto projde ale nefunguje. Furt se to protači na http://192.168.1.40/rele3/off
client.println("<meta http-equiv=\"refresh\" content=\"1\"; URL='http://192.168.1.40'>");

Uživatelský avatar
kiRRow
Příspěvky: 1170
Registrován: 07 kvě 2019, 07:03
Reputation: 0
Bydliště: Opava

Re: ESP8266 web server

Příspěvek od kiRRow » 18 dub 2024, 14:35

Le-Ze píše:
18 dub 2024, 10:46
client.println("<meta http-equiv=\"refresh\" content=\"1\"; URL='http://192.168.1.40'>");
skoro ...
client.println("<meta http-equiv=\"refresh\" content=\"1; URL='http://192.168.1.40'\">");

když chceš do uvozovek napsat uvozovku, tak musíš rozlišit co je uvozovka od příkazu a co je uvozovka vypisovaného textu pomocí escape znaku \
Serial.print(" " "); <- špatně
Serial.print(" \" "); <- správně

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 49 hostů