Stránka 2 z 3
Re: ESP8266 Zaslání dotazu GET přes příkazy AT
Napsal: 06 dub 2018, 16:32
od jankop
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
Re: ESP8266 Zaslání dotazu GET přes příkazy AT
Napsal: 06 dub 2018, 16:38
od lachim16
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
Re: ESP8266 Zaslání dotazu GET přes příkazy AT
Napsal: 06 dub 2018, 16:50
od ohruska
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
Re: ESP8266 Zaslání dotazu GET přes příkazy AT
Napsal: 06 dub 2018, 16:52
od jankop
Teď jsem nakoukl na příklady, které tě inspirovaly. Domnívám se, že ta čtverka sem nepatří - String(cmd.length() + 4))
Re: ESP8266 Zaslání dotazu GET přes příkazy AT
Napsal: 06 dub 2018, 16:57
od lachim16
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ší
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

Re: ESP8266 Zaslání dotazu GET přes příkazy AT
Napsal: 06 dub 2018, 17:09
od jankop
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.
Re: ESP8266 Zaslání dotazu GET přes příkazy AT
Napsal: 06 dub 2018, 17:25
od lachim16
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

Re: ESP8266 Zaslání dotazu GET přes příkazy AT
Napsal: 06 dub 2018, 18:27
od lachim16
Je to ono?

Re: ESP8266 Zaslání dotazu GET přes příkazy AT
Napsal: 07 dub 2018, 09:35
od jankop
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
Re: ESP8266 Zaslání dotazu GET přes příkazy AT
Napsal: 07 dub 2018, 13:09
od lachim16
Mám tu více méně pro ESP asi tyto dotazy?
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 :/