Hallo Users,
Ich versuche schon seit längerem mit einem ESP8266 (ESP-01) Daten übers
Internet zu versenden per GET.
Bei meinen Bisherigen Versuchen mit den AT befehlen konnte ich mit zwar
mit dem Server per TCP verbinden,und auch Senden, bekam aber immer ein
Bad Request zurück.
AT+CIPSTART="TCP","www.dilexa.com",80
CONNECT
OK
AT+CIPSEND=49
OK
>GET /xxxx.php?v=200 HTTP/1.1 Host: www.dilexa.com
Recv 49 bytes
SEND OK
Rückantwort:
+IPD,295:HTTP/1.1 400 Bad Request<\r>
<\n>
Server: nginx<\r>
<\n>
Date: Sun, 06 Sep 2020 12:34:40 GMT<\r>
<\n>
Content-Type: text/html<\r>
<\n>
Content-Length: 150<\r>
<\n>
Connection: close<\r>
<\n>
<\r>
<\n>
<html><\r>
<\n>
<head><title>400 Bad Request</title></head><\r>
<\n>
<body><\r>
<\n>
<center><h1>400 Bad Request</h1></center><\r>
<\n>
<hr><center>nginx</center><\r>
<\n>
</body><\r>
<\n>
</html><\r>
<\n>
CLOSED<\r>
<\n>
Als Antwort sollte eigentlich aus der aktuellen Uhrzeit sowie die GET
variable v bestehen...
Direkt über den Browser aufgerufen, funktioniert es übrigens
ordnungsgemäß.
Nach langem Versuchen, wende ich mich nur an euch. Was mache ich
möglicherweise falsch?
Die Website ist mit TLS(https) verschlüsselt,inwiefern hat das Einfluss?
Es gibt doch Programmierumgebungen, die ESP8266 direkt versorgen (ohne "Modem-Kommandos"). Ich benutze dazu Sloeber, eine Eclipse-CDT-Konfiguration, der man nur sagen muß, welche HW (ESP8266) man benutzt und die dann Compiler und Libs runterläd. Das ist dann zwar "Arduino", aber nach kurzer Zeit ist der ESP mit Internet, Netzzeit, OverTheAir-Update, Webinterface, ... ausgestattet. Wer Vorteile und Nachteile der Umgebung einordnen kann, der hat ein Tool für schnelle Ergebnisse. Und "Arduino" ist auf der ESP-CPU eher daheim, als auf einem AVR. Von wegen String, dyn.Speicher und als Pointer nutzbare Register usw.
Der Server-Log gibt bestimmt Aufschluss darüber, was eigentlich das Problem mit dem Request ist. Die TLS-Richtung klingt aber plausibel.
Lukas G. schrieb: > GET /xxxx.php?v=200 HTTP/1.1 Host: www.dilexa.com Was liefert curl zurück? Beispiel am Raspberry Pi (curl muss installiert sein) : curl --silent -X GET /xxxx.php?v=200 HTTP/1.1 Host: www.dilexa.com
Lukas G. schrieb: >GET /xxxx.php?v=200 HTTP/1.1 Host: www.dilexa.com Da fehlen Zeilenumbrüche, und zwar im DOS Format (\r\n):
1 | GET /xxxx.php?v=200 HTTP/1.1<Umbruch> |
2 | Host: www.dilexa.com<Umbruch> |
3 | <Umbruch> |
Beitrag #6395515 wurde vom Autor gelöscht.
Stefan ⛄ F. schrieb im Beitrag \#6395511: > Lukas G. schrieb: >>GET /xxxx.php?v=200 HTTP/1.1 Host: www.dilexa.com > > Da fehlen Zeilenumbrüche, und zwar im DOS Format (\r\n): > >
1 | > GET /xxxx.php?v=200 HTTP/1.1<Umbruch> |
2 | > Host: www.dilexa.com<Umbruch> |
3 | > <Umbruch> |
4 | > |
Hab ich schon ausprobiert, geht auch nicht, hinzu kommt, das ich mit hterm arbeite. Dort kann ich einstellen, das es automatisch ein \r\n am Zeilenende einfügt. Mit Curl geht es hab ich schon vorher ausprobiert, geht über den Desktop ohne Probleme. Also liegt es auch nicht am PHP Code. Also nehme ich an, das es an TLS liegt. Weis jemand ob bei jedem ESP8266 SSL/TLS integriert ist? Ich konnte zum Beispiel keine Abfrage per AT+CIPSSLCCONF? machen, schickt immer nur ERROR retour. Ich hab glaub noch ne recht frühe Version davon. Der Lag bestimmt 2-3 Jahre in der Schublade....
Lukas G. schrieb: > Also nehme ich an, das es an TLS liegt. Weis jemand ob bei jedem ESP8266 > SSL/TLS integriert ist? Der kann kein HTTPS, dafür ist er zu klein. Es gibt eine abgespeckte Variante ohne Prüfung der Zertifikate als Library. Wenn du wirklich HTTPS brauchst, dann wechsle lieber zum ESP32.
Lukas G. schrieb: > Ich versuche schon seit längerem mit einem ESP8266 (ESP-01) Daten übers > Internet zu versenden per GET. Schau mal hier. https://randomnerdtutorials.com/projects-esp8266/ mfg klaus
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.