ESP8266 Zaslání dotazu GET přes příkazy AT

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

Re: ESP8266 Zaslání dotazu GET přes příkazy AT

Příspěvek od jankop » 06 dub 2018, 16:32

lachim16 píše:
06 dub 2018, 16:17
Nene, moje aplikace v PHP je určitě dobře, nastavil jsem si pro test, že pokud dostanu jen samotný GET lang tak se mi to i tak uloží do mysql. V tomhle problém není. Samotný dotaz se neodešle z ESP8266 :/ vypíše to jen chybu se špatným dotazem (který pochází přímo z modulu ESP, ne z mé webové aplikace)
Nerozumím. Tu chybovou hlášku ti přeci přes esp8266 posílá server. Odešleš GET s daty a server odpoví HTTP/1.1 400 Bad Request. Z toho plyne, že server dostane něco, čemu nerozumí.

Kód: Vybrat vše

+IPD,311:HTTP/1.1 400 Bad Request
Server: nginx
Date: Thu, 05 Apr 2018 18:37:24 GMT
Content-Type: text/html
Content-Length: 166
Connection: close

<html>
<head><title>400 Bad Request</title></head>
<body bgcolor="white">
<center><h1>400 Bad Request</h1></center>
<hr><center>nginx</center>
</body>
</html>
CLOSED

lachim16
Příspěvky: 38
Registrován: 25 led 2018, 17:07
Reputation: 0

Re: ESP8266 Zaslání dotazu GET přes příkazy AT

Příspěvek od lachim16 » 06 dub 2018, 16:38

Aha, jsem myslel že je to odpověď od ESP, že jsem zadal špatně request k odeslání. Zkusím si pohrát s GET příkazem

ohruska
Příspěvky: 235
Registrován: 08 pro 2017, 20:56
Reputation: 0

Re: ESP8266 Zaslání dotazu GET přes příkazy AT

Příspěvek od ohruska » 06 dub 2018, 16:50

Ale pokud vypíše "SEND OK", tak byla data odeslána.
Pokud, já spustím zápis z programu, vypadá to takto:

Kód: Vybrat vše

Reseting.......
RESET
enviado ==> Start cmd: AT+CIPSTART="TCP","api.thingspeak.com",80
enviado ==> lenght cmd: AT+CIPSEND=51
enviado ==> getStr: GET /update?api_key=6XFVOZRJNFSGQB4Q&field1=123


MessageBody received: +IPD,1:2CLOSED
Pokud napíšu to stejné z příkazové řádky"

Kód: Vybrat vše

AT


OK
AT+CIPSTART="TCP","api.thingspeak.com",80

CONNECT

OK
AT+CIPSEND=51


OK
> tady je zapsáno: GET /update?api_key=6XFVOZRJNFSGQB4Q&field1=123\r\n\r\n
Recv 51 bytes

SEND OK

+IPD,1:5CLOSED
Tobě to funguje stejně, ale odpověď "+IPD," je už chyba.
Zkusil bych vypsat řetězec, který posíláš z programu na monitor a potom tento samostatně poslat z příkazové řádky.
Ota

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

Re: ESP8266 Zaslání dotazu GET přes příkazy AT

Příspěvek od jankop » 06 dub 2018, 16:52

Teď jsem nakoukl na příklady, které tě inspirovaly. Domnívám se, že ta čtverka sem nepatří - String(cmd.length() + 4))

lachim16
Příspěvky: 38
Registrován: 25 led 2018, 17:07
Reputation: 0

Re: ESP8266 Zaslání dotazu GET přes příkazy AT

Příspěvek od lachim16 » 06 dub 2018, 16:57

ohruska píše:
06 dub 2018, 16:50
Zkusil bych vypsat řetězec, který posíláš z programu na monitor a potom tento samostatně poslat z příkazové řádky.
Zadávám to teď ručně, program teď nepoužívám.
jankop píše:
06 dub 2018, 16:52
Domnívám se, že ta čtverka sem nepatří - String(cmd.length() + 4))
Teď nepoužívám program a zadávám to ručně - délku jsem nastavil tak, aby mi ESP odpovědělo "OK" a ne "busy", tzn. že délka, kterou mi vypočítá program je například 81 bytů, ale aby to fungovalo, musím odeslat 89 bytů - což mi příjde taky divné.

EDIT: teď co si hraju je alespoň odpověď trochu srozumitelnější :D

Kód: Vybrat vše

+IPD,499:HTTP/1.1 400 Bad Request
Date: Fri, 06 Apr 2018 14:48:54 GMT
Server: Apache/2.4.10 (Debian)
Content-Length: 317
Connection: close
Content-Type: text/html; charset=iso-8859-1

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
</p>
<hr>
<address>Apache/2.4.10 (Debian) Server at domena-fake.core.ignum.cz Port 80</address>
</body></html>
Ještě bych mohl zkusit napsat na fórum podpory hostingu, třeba budou vědět, jaký dotaz zaslat - přece jen je to jejich server :)

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

Re: ESP8266 Zaslání dotazu GET přes příkazy AT

Příspěvek od jankop » 06 dub 2018, 17:09

To je zbytečné. Zkoušel jsem to zadat přes příkazový řádek browseru a server to uloží do databáze, to přece víš. Ty víš, jak to tam poslat, ale posíláš to nějak jinak. Tak je na tobě, abys to tam stejně poslal z esp8266. Já bych vzal notebook, nainstaloval na něj hot spot, pokud to OS neumí defaultně a k tomu WireShark. Přes NB bych se připojil modulem esp8266 k serveru a viděl bych do byte co na server odesílám. Podle toho bych se zařídil.
Vidím to buď na problém s délkou řetězce, nebo tam někde přebývají znaky \r\n.
Prostě to chce odchytit.

lachim16
Příspěvky: 38
Registrován: 25 led 2018, 17:07
Reputation: 0

Re: ESP8266 Zaslání dotazu GET přes příkazy AT

Příspěvek od lachim16 » 06 dub 2018, 17:25

jankop píše:
06 dub 2018, 17:09
Já bych vzal notebook, nainstaloval na něj hot spot, pokud to OS neumí defaultně a k tomu WireShark. Přes NB bych se připojil modulem esp8266 k serveru a viděl bych do byte co na server odesílám.
Vyzkouším, díky za tip :)

lachim16
Příspěvky: 38
Registrován: 25 led 2018, 17:07
Reputation: 0

Re: ESP8266 Zaslání dotazu GET přes příkazy AT

Příspěvek od lachim16 » 06 dub 2018, 18:27

Je to ono?

Obrázek

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

Re: ESP8266 Zaslání dotazu GET přes příkazy AT

Příspěvek od jankop » 07 dub 2018, 09:35

To je jedna část, odpověď serveru s hlavičkou, ty potřebuješ zobrazit hlavně dotaz esp8266. Je to pár, esp8266 se zeptá a server odpoví.
Ten dotaz by měl mít hlavičku vypadající takhle:

Kód: Vybrat vše

GET /data&lang=cs&info=5*0123456789*25.6*30.1*1020*900*none HTTP/1.1 Host: weatherstation.michalmasarik.cz

lachim16
Příspěvky: 38
Registrován: 25 led 2018, 17:07
Reputation: 0

Re: ESP8266 Zaslání dotazu GET přes příkazy AT

Příspěvek od lachim16 » 07 dub 2018, 13:09

Mám tu více méně pro ESP asi tyto dotazy?
Obrázek

Dotaz GET se mi podařilo zobrazit jen pod: Pravé tlačítko myši -> follow -> TCP nebo HTTP stream

Oba výpisy jsou totožné a stejně to neprojde přes server. Na Endoře (hosting webu) mi poradily zkusit HTTP/1.0 - taktéž ale zatím nepomohlo :/

Odpovědět

Kdo je online

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