ESP8266 odesilaní dat

Odpovědět
Le-Ze
Příspěvky: 66
Registrován: 31 kvě 2017, 15:37

ESP8266 odesilaní dat

Příspěvek od Le-Ze » 20 zář 2019, 14:34

Zdravím.
By byl dotaz.
ESP8266 ESP-12E, která při připojení klienta, vypiše data přes client.println();
Každou minutu si ty hodnotu stahuje raspberry.

Šlo by to opačně?
Že by každou minutu ty data odeslala ta ESP8266 a na raspi se to uložilo někam do text souboru?
Na raspi mám Lighttpd servr.

DavidO
Příspěvky: 759
Registrován: 01 kvě 2013, 21:27

Re: ESP8266 odesilaní dat

Příspěvek od DavidO » 22 zář 2019, 09:50

Stručná odpověď: Ano.
Obšírnější odpověď: Můžeš použít třeba třídu EthernetClient, viz příklad WebClientRepeating.ino

Le-Ze
Příspěvky: 66
Registrován: 31 kvě 2017, 15:37

Re: ESP8266 odesilaní dat

Příspěvek od Le-Ze » 23 zář 2019, 17:07

Bych řek že by mi na to měl stačit WiFiClient.
https://arduino-esp8266.readthedocs.io/ ... mples.html
Potřebuji spustit toto stranku
http://192.168.1.5:8181/data.php
A nějak nevim jak na ten port?

Kód: Vybrat vše

const char* host = "http://192.168.1.5/data.php";
WiFiClient client;

if (client.connect(host, 8181))
{
  client.println("jsem tu");
}
else
{
  // connection failure
}
Zkoušim a někak se to nechce spojit.

tomasp
Příspěvky: 43
Registrován: 15 dub 2014, 23:01

Re: ESP8266 odesilaní dat

Příspěvek od tomasp » 23 zář 2019, 18:11

S ESP jsem ještě nepracoval, ale podle tebou odkazované dokumentace pro connect se jako argument zadává pouze host z celé URL, tedy

Kód: Vybrat vše

const char* host = "http://192.168.1.5";
a po připojení se pak podle příkladu zavolá ta zbylá část URL, tedy "/data.php" viz upravený řádek z příkladu:

Kód: Vybrat vše

...
client.print(String("GET /data.php") + " HTTP/1.1\r\n" +
...
Ale upozorňuji, že ten příklad uvádí pouze HTTP GET požadavek. Tím si může ESP vyžádat a stáhnout data z raspberry. Ale ty, jak jsem pochopil, chceš poslat data data z ESP do raspberry. K tomu potřebuješ požadavek HTTP POST a rovnou do něj zabalit posílaná data (raspberry se je rozbalí a uloží, kam chce).

Takový příklad v dokumentaci není, a ačkoliv by to asi nebylo nemožné, dalo by to dost práce. Lepší by bylo použít nějakou knihovnu pro HTTP Clienta, která má rovnou pro POST podporu.

DavidO
Příspěvky: 759
Registrován: 01 kvě 2013, 21:27

Re: ESP8266 odesilaní dat

Příspěvek od DavidO » 23 zář 2019, 18:56

Nedalo by to moc práce - v GET se parametry píšou rovnou do URI, pro POST/PUT v těle, tj. přidá se jeden prázdný řádek a řádek s datama, baj voko nějak takhle:

Kód: Vybrat vše

POST /adresa/skriptu/na/serveru HTTP/1.1
Host: nazev.serveru.nekde

parametr=hodnota&jinej=jiná
Jestli mě paměť neklame, tak v hlavičce musí být jen řádek s metodou, měl by tam být host a to je snad všechno.
(dokonce by to nejspíš fungovalo i s GET, protože pochybuju, že by to server nebo klient kešoval. Rozdíl mezi POST a PUT v tomhle případě asi moc není, logicky to je podle mě spíš POST, když to je na časovač posílání nových a nových dat, ale prakticky to vyjde nastejno)

Odpovědět

Kdo je online

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