Zadavaní hodnot přes web

Wiring, C++, C, Java, ...
Pravidla fóra
Toto subfórum slouží k řešení obecných otázek kolem programování (konstrukce, knihovny, alokace paměti, ...)
Le-Ze
Příspěvky: 201
Registrován: 24 črc 2017, 08:15
Reputation: 0

Zadavaní hodnot přes web

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

Zdravím.
Tady toto.
https://www.aliexpress.com/item/V3-Wire ... 41553.html?

Zatím jen zkouším a mám to k routru připojeno.

Bych potřeboval přiklad.
Web rozhraní, kde dude jedno vstupní pole pro zadavaní času - třeba 12:20 a jeden buttom.
Pok kliknutí na button se hodnota uloží jako proměnná, abych s ní mohl dal prácovat.
Najde se tu někdo, kdo poradí?
Děkují.

Uživatelský avatar
pavel1tu
Příspěvky: 2054
Registrován: 26 říj 2017, 08:28
Reputation: 0
Bydliště: Trutnov
Kontaktovat uživatele:

Re: Zadavaní hodnot přes web

Příspěvek od pavel1tu » 18 dub 2019, 11:08

- Kde bude WEB běžet - na Arduinu nebo na nějakém serveru
- KAM se má proměnná uložit - do Arduina nebo do databáze na WEB serveru ?
- pokud do Arduina KAM ? Do eeprom, ram rom ?

1) Hele, taky funguje GOOGLE
2) Vkládá se zde kod co jsi zkoušel (aby se vědělo že vůbec něco zkoušíš, nebo podle čeho čerpáš)
3) co se týče Arduina i toho ESP je toho na internetu opravdu hodně, sice ne přímo co chceš ale čerpat se z toho dá.

Jinak GURU na web+ESP tu je @martinius96 který toho má dotaženého až do konce opravdu hodně
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

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

Re: Zadavaní hodnot přes web

Příspěvek od Le-Ze » 18 dub 2019, 11:23

Na Arduinu.
Do eeprom, ale pokud ji dostanu do proměnné, tak uložit si to už zvládnu sám.
Hele, taky funguje GOOGLE
A arduino forum je nač?
Nechci po nikom, aby mi psal celý zdrojak, ale jen přiklad, kde je jen jedno vstupní pole.
Bych řek že pro někoho, kdo ještě s web rozhraním nic nedělal, je lepší se zeptat tady, než něco látat s nějakých zdrojaku.na netu.

Uživatelský avatar
pavel1tu
Příspěvky: 2054
Registrován: 26 říj 2017, 08:28
Reputation: 0
Bydliště: Trutnov
Kontaktovat uživatele:

Re: Zadavaní hodnot přes web

Příspěvek od pavel1tu » 18 dub 2019, 12:42

Aby ti třeba vypadl článek kde pochopíš jak to funguje.

Toto je forum, existují stovky článků, které ti ukáží jak to funguje a jak se to dělá.

Třeba https://arduino.cz/programovani-webovyc ... o-arduino/

Jinak
Bych řek že pro někoho, kdo ještě s web rozhraním nic nedělal, je lepší se zeptat tady, než něco látat s nějakých zdrojaku.na netu.
to se pleteš - na co přijdeš sám - to si zapamatuješ na celý život.
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

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

Re: Zadavaní hodnot přes web

Příspěvek od Le-Ze » 18 dub 2019, 15:01

pavel1tu píše:
18 dub 2019, 12:42
to se pleteš - na co přijdeš sám - to si zapamatuješ na celý život.
A nebo, když to budeš hledat týden, take na to celý život nezpomeneš. :lol:

Viš, pokud nemaš ochotu pomoct nebo poradit, raděj tento topik přeskoč, zbytečně tu spamuješ.

Uživatelský avatar
BlindP
Příspěvky: 39
Registrován: 23 črc 2017, 00:46
Reputation: 0

Re: Zadavaní hodnot přes web

Příspěvek od BlindP » 18 dub 2019, 15:33

Nepotřebuješ týden, stačí pár sekund... - https://tttapa.github.io/ESP8266/Chap10 ... erver.html

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

Re: Zadavaní hodnot přes web

Příspěvek od jankop » 18 dub 2019, 15:40

Napsal jsem ti demo. Je funkční, právě jsem ho vyzkoušel.
Je redukováno kvůli přehlednosti. Kompiloval jsem ho v Arduino IDE 1.8.9. a nejnovějším ESP8266 Arduino Core 2.5.
Neřešil jsem nějakou pevnou IP adresu, je na tobě najít si modul na svým routeru, pokud ovšem používáš DHCP.
Také jsem neřešil kontrolu vstupních parametrů. Tu je třeba pochopitelně udělat před konverzí časového údaje na číslo. Předávám ti stringy, rozdělil jsem časový údaj na tři části, abys neměl s parsováním moc práce. Využívám báječné fičurky knihovny ESP8266WebServer.h, která je součástí jádra. Naštěstí, co mi fungovalo kdysi, funguje i nyní. Získávat parametry parsováním není úplně triviální. Co se týče HTML, o který tady vlastně jde, tak na to je nedostižný web https://www.jakpsatweb.cz/, bez něj nedám ani ránu. Pro tebe je teď důležité to, co se týká formulářů, tedy "form". Není problém doplnit tenhle sketch o možnost aktualizace prostřednictvím OTA, tedy nahrávat sketche přes WiFi, to umím docela dobře. Co jsem zatím nedělal je https server. Pro tvoji informaci, tento sketch používá metodu POST, ale je možné parametrem HTTPMETOD nastavit GET. V příkladu také najdeš výstup parametrů na webovou stránku, je to číslo ESP8266 ID. Nezapomeň si jen přepsat SSID a password pro svůj router.
Mám u tebe pivo, dej vědět jaks dopadl.
Ještě doplním, že vložené hodnoty se pro kontrolu odesílají na sériový port.

Kód: Vybrat vše

#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#define HTTPMETHOD      "POST"     // Set "GET" or "POST" method
#define SERVERPORT      80
//const char* ssid =     "YourSSID";     // Set your router SSID
//const char* password = "YourPassword"; // Set your router password
const char* ssid =     "CYBORG";     // Set your router SSID
const char* password = "Pivo1234"; // Set your router password
String  StringHOD;
String  StringMIN;
String  StringSEC;
String  buff;
ESP8266WebServer HttpServer(SERVERPORT);
//-----------------------------------------------------------------
void setup(void) {
  Serial.begin(9600);
  WiFi.begin(ssid, password);
  /* wait for WiFi connect */
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.print(".");
  }
  Serial.println('\n');
  Serial.print("Connected to ");
  Serial.println(WiFi.SSID());
  Serial.print("IP address:\t");
  Serial.println(WiFi.localIP());
  HttpServer.on("/", HTTP_GET, SendPage);
  HttpServer.on("/", HTTP_POST, GetParam);
  HttpServer.onNotFound(handleNotFound);
  HttpServer.begin();
  //Serial.println("HTTP server started");
}
//-----------------------------------------------------------------
void loop(void) {
  HttpServer.handleClient();       // Listen for HTTP requests from clients
}
//-----------------------------------------------------------------
void SendPage() {
  buff  = "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n";
  buff += "<html><head>\n";
  buff += "<meta content=\"text/html; charset=utf-8\">\n";
  buff += "<title>TIME INPUT</title></head><body>\n";
  buff += "<center>\n";
  buff += "<form action=\"/\" method=\"" + String(HTTPMETHOD) + "\">\n";
  buff += "<h1>ESP8266 ID : " + String(ESP.getChipId()) + "<br>\n";
  buff += "<input type=\"text\" size=2 name=\"HOD\" >:\n";
  buff += "<input type=\"text\" size=2 name=\"MIN\" >:\n";
  buff += "<input type=\"text\" size=2 name=\"SEC\" >:\n";
  buff += "<input type=\"submit\" value=\"ODESLAT\">\n";
  buff += "</h1></form></center></body></html>\n";
  HttpServer.send(200, "text/html", buff);
}
/* Send HTTP status 404 Not Found */
void handleNotFound() {
  HttpServer.send(404, "text/plain", "404: Not found");
}
/* Get params */
void GetParam(void) {
  SendPage();
  StringHOD = HttpServer.arg("HOD");
  StringMIN = HttpServer.arg("MIN");
  StringSEC = HttpServer.arg("SEC");
  Serial.print(StringHOD);
  Serial.print(":");
  Serial.print(StringMIN);
  Serial.print(":");
  Serial.print(StringSEC);
  Serial.println("***");
}

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

Re: Zadavaní hodnot přes web

Příspěvek od Le-Ze » 18 dub 2019, 17:49

@jankop - už to mám na routru připojene, to neřeším.

Když bude k te ESP8266 připojene třeba rele.
Učelem všeho je ziskat přes internet přesný čas, což už mám.
https://lastminuteengineers.com/esp8266 ... -tutorial/

A přes web rozhrní si nastavít čas sepnutí a čas vypnutí toho rele.

Jsem nikdy web rozhraní přes arduino neřešil, ale jak tak čtu na netu, nemělo by to být jako klient?

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

Re: Zadavaní hodnot přes web

Příspěvek od gilhad » 18 dub 2019, 18:41

To zalezi na tom, co po tom presne chces. Predpokladam, ze ty to chces ovladat prez klasicky prohlizec, pak mas dve zakladni moznosti
  • Arduino je server, ty se na nej pripojis, ono ti da stranku s form, ty vyplnis casy a odesles, arduino to obratem zpracuje a zacne provadet
  • Arduino jako klient - ty se pripojis na nejaky server, vyplnis mu form, server ta data ulozi pro pozdejsi pouziti. Arduino se cas od casu jako klient (vlastne z pohledu serveru je to Arduino prohlizec) pripoji na ten server a stahne si jinou stranku, server do te stranky vypise ulozene hodnoty, arduino si tu stranku rozparsuje, vytahne hodnoty a zacne cosi provadet (prenastavi si treba, kdy zapnout rele)
Oboji ma sve vyhody a nevyhody:

Arduino jako server je slozitejsi, ale reaguje okamzite a potrebujes jen to Arduino. Pokud zrovna nebezi, mas smulu a pokud muze spadnout, musi si hodnoty ukladat do EEPROM a musi resit realny cas i kdyz nebezi.

Arduino jako klient je jednodussi, ale potrebujes jeste ten server a cele to reaguje az kdyz se Arduino uraci na ten server zavolat. Zase velky server (oproti Arduino je vsechno velke) muze ty hodnoty drzet u sebe, Arduinu je dat uz predparsovane tak, aby se mu snadno cetly, muze mu dat i presny cas (a pripadne i spocist, za jak dlouho to ma to Arduino udelat) a Arduino na to spotrebuje min pameti (jak programove, tak RAM) a o to vic ji muze pouzit na jine veci. Pokud spadne a nabehne, tak si presny cas a co ma delat precte ze serveru znova. Stejne tak ty si to muzes zkontrolovat z te same stranky bez dalsi prace navic.

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

Re: Zadavaní hodnot přes web

Příspěvek od Le-Ze » 19 dub 2019, 08:17

Tak jsem vyzkoušel ten přiklad od jankop a ok, děkují :D

Ale byl by ještě další dotaz.
Budou mi stačit 2 X input, třeba 12:23:11 - 14:44:44
Co když se někdo splete a vloží do toho zadávacího pole nějaký nesmysl.
Na straně arduina v té funkcí GetParam si to dovedu ošetřit, ale jak poslat nějakou zprávu na tu web. stránku tomu, co ty data zadával?

Odpovědět

Kdo je online

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