ESP32 jako webový server

Odpovědět
Tommyk
Příspěvky: 12
Registrován: 03 bře 2019, 16:58
Reputation: 0

ESP32 jako webový server

Příspěvek od Tommyk » 03 bře 2019, 17:09

Ahoj, v programování ESP a arduina jsem sice začátečník, ale už jsem si pár funkčních prográmků napsal takže prosím mějte trpělivost :D .

Chtěl bych si udělat z ESPčka meteostanici a webový server.
Mělo by to fungovat asi takto:
K ESP bych připojil čidla na měření teploty, tlaku, vlhkosti, srážek a podobně. Zde problém není.
Teď, ale ta složitější část. Data bych chtěl zapisovat do webové stránky uložené v ESP což se mi zatím nedaří a také bych chtěl aby v paměti nebyla jen 1 stránka ale bylo jich třeba 10. Je mi jasné, že mám omezenou paměť tak to nesmím přehánět...
Můžete mě prosím někdo trochu nakopnout jak na to? Na internetu nacházím pořád jedny a ty samé návody s rozsvědcováním led a ty mi asi moc nepomůžou... Vím jak to asi teoreticky napsat, ale praxe je horší.

Všem díky za pomoc


jankop
Příspěvky: 1029
Registrován: 06 zář 2017, 20:04
Reputation: 0
Bydliště: Brno
Kontaktovat uživatele:

Re: ESP32 jako webový server

Příspěvek od jankop » 03 bře 2019, 20:20

Když se podíváš na můj web, tak tam najdeš barometr - server pro Arduino ESP8266, jedna stránka je barometr, druhá stránka slouží pro OTA. Myslím, že pro ESP32 je to téměř totéž. Pak je otázka, jestli do toho zapojit SPIFFS. Je sice prima tahat html soubory z file systému, ale nejde to dost dobře dynamicky. Ovšem troufám si tvrdit, že průměrnou meteostanici "as server" udělám i s ESP8266-1.
K používání Google Charts library mám stejný vztah, jako k archivu osobních fotografií někde v prčicích na cloudu.

Tommyk
Příspěvky: 12
Registrován: 03 bře 2019, 16:58
Reputation: 0

Re: ESP32 jako webový server

Příspěvek od Tommyk » 03 bře 2019, 21:01

Děkuji za odpověď pánové.
jankop píše:
03 bře 2019, 20:20
Když se podíváš na můj web, tak tam najdeš barometr - server pro Arduino ESP8266, jedna stránka je barometr, druhá stránka slouží pro OTA. Myslím, že pro ESP32 je to téměř totéž. Pak je otázka, jestli do toho zapojit SPIFFS. Je sice prima tahat html soubory z file systému, ale nejde to dost dobře dynamicky. Ovšem troufám si tvrdit, že průměrnou meteostanici "as server" udělám i s ESP8266-1.
K používání Google Charts library mám stejný vztah, jako k archivu osobních fotografií někde v prčicích na cloudu.
Na tvůj web jsem narazil koukal jsem se na něj.
SPIFFS používám, trvalo mi dost dlouho, než jsem narazil na to, že musím stáhnout soubor pro Arduino IDE, který mi soubory nahraje do ESP...
Je mi jasné, že s tou pamětí to nebude až taková výhra, ale objednal jsem si ještě slot na kartu, takže web bude v budoucnu asi na kartě.

Teď mi jde o to, že pokud vytvořím velice jednoduchý web s např. 3 stránkami, nahraju je do esp, tak se mi vždy zobrazí jen hl. stránka, po kliknutí na odkaz na další stránku se mi zobrazí jen prázdná obrazovka.
Chtěl bych se zkusit vyhnout a to nevím jestli je možné odesílání dat kamkoliv do světa nebo na jakékoliv jiné zařízení. Chtěl bych aby ESP byl mozek všeho... Je to takový oříšek :D

jankop
Příspěvky: 1029
Registrován: 06 zář 2017, 20:04
Reputation: 0
Bydliště: Brno
Kontaktovat uživatele:

Re: ESP32 jako webový server

Příspěvek od jankop » 03 bře 2019, 21:39

Nejsem expert na multistránky, ale nevidím v tom problém. Jak jsem to dělal u barometru. Vypíchnul jsem tu jediný řádek, který vidím jako stěžejní

Kód: Vybrat vše

HttpServer.on("/", HTTP_GET, SendPageWelcome);
Když server dostane požadavek GET jen s lomítkem, pak se zavolá třeba funkce SendPageWelcome, která odešle konkrétní stránku.
Když bude za lomítkem nějaká cesta,

Kód: Vybrat vše

HttpServer.on("/barometer", HTTP_GET, SendPageBarometer);
HttpServer.on("/hygrometer", HTTP_GET, SendPageHygrometer);
zavolají se prostě jiné funkce, které odešlou jiné stránky. Zdá se mi to velmi jednoduché. Žádné parsování požadavku, to si server udělá sám. Samozřejmě ten server musí napřed existovat.
Ty moje prográmky obsahují docela dost informací, počínaje OTA přes použití HTTP BASIC autentifikace a třeba v tomhle odkazu najdeš, jak snadno získat parametry odeslané klientem v požadavku GET nebo POST.
http://esp8266.fancon.cz/esp8266-http-s ... duino.html
A k tomu využití file systému jsem docela skeptický, protože není problém vygenerovat třeba obrázek nahé slečny, ale udělat pěkné jdoucí hodiny přes filesystém prakticky nejde. Nejlepší by bylo tvořit web v SVG formátu, ale manuálně je to nesmírně pracné a editory generují příšerné velikosti.
Co ti brání sem dát nějaký svůj pokus? Do ESP8266 bych to dostal taky? Můžu to vyzkoušet.

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

Re: ESP32 jako webový server

Příspěvek od gilhad » 03 bře 2019, 22:40

Pak je tu ještě varianta, že tvůj esp-server bude minimalistický a bude poskytovat data v nějakém snadno zpracovatelném formátu (ideálně textovém, aby to šlo použít i napřímo) a na nějakém webu zdarma s nějakým skriptovacím jazykem uděláš zobrazování, které se při dotazu na stránku nejdřív zeptá tvého esp-serveru na data a z nich to potom vykreslí v plné palbě a mašličkama, co poskytuje velký počítač. Případně to i postahuje do databáze a bude kreslit grafy s historií.

takže např. http://esp-server/barometr vrátí jen

Kód: Vybrat vše

cas= 21:47
teplota= 5.7 °C
vitr= 3 km/h
tlak= 1010.4 hPa
vlhkost= 84 %
a webový server při dotazu na počasí si načte http://esp-server/barometr a na základě toho nakreslí budíky, dá data do databáze, nakreslí průběh za dnešek, včerejšek, celý týden, měsíc a rok (protože to každý wehosting v pohodě jak uloží, tak upočítá, tak má dost místa pro grafiku a všechny vygenerované pozlátka).

Pokud jednoho dne ten web zdarma skončí, tak jen vezmeš zálohu databáze a ten program v PHP a hodíš ho na jiný web zdarma a pojedeš dál.

Pokud bude ten web zdarma jen dočasně nedostupný (nebo mít jiné problémy, nebo budeš chtít šetřit mobilní data), tak se kdykoli můžeš připojit na ten http://esp-server/barometr a uvidíš čísla hned a přeneseš jen pár desítek bytů.

Tommyk
Příspěvky: 12
Registrován: 03 bře 2019, 16:58
Reputation: 0

Re: ESP32 jako webový server

Příspěvek od Tommyk » 05 bře 2019, 06:37

jankop píše:
03 bře 2019, 21:39
Nejsem expert na multistránky, ale nevidím v tom problém. Jak jsem to dělal u barometru. Vypíchnul jsem tu jediný řádek, který vidím jako stěžejní

Kód: Vybrat vše

HttpServer.on("/", HTTP_GET, SendPageWelcome);
Když server dostane požadavek GET jen s lomítkem, pak se zavolá třeba funkce SendPageWelcome, která odešle konkrétní stránku.
Když bude za lomítkem nějaká cesta,

Kód: Vybrat vše

HttpServer.on("/barometer", HTTP_GET, SendPageBarometer);
HttpServer.on("/hygrometer", HTTP_GET, SendPageHygrometer);
zavolají se prostě jiné funkce, které odešlou jiné stránky. Zdá se mi to velmi jednoduché. Žádné parsování požadavku, to si server udělá sám. Samozřejmě ten server musí napřed existovat.
Ty moje prográmky obsahují docela dost informací, počínaje OTA přes použití HTTP BASIC autentifikace a třeba v tomhle odkazu najdeš, jak snadno získat parametry odeslané klientem v požadavku GET nebo POST.
http://esp8266.fancon.cz/esp8266-http-s ... duino.html
A k tomu využití file systému jsem docela skeptický, protože není problém vygenerovat třeba obrázek nahé slečny, ale udělat pěkné jdoucí hodiny přes filesystém prakticky nejde. Nejlepší by bylo tvořit web v SVG formátu, ale manuálně je to nesmírně pracné a editory generují příšerné velikosti.
Co ti brání sem dát nějaký svůj pokus? Do ESP8266 bych to dostal taky? Můžu to vyzkoušet.


Rád bych ti něco poslal, jen jsem jsem te'd ve fázi, kdy sbírám informace a zkouším jak co udělat. Ale až neco bude napsané určo pošlu :)

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Mojmir a 12 hostů