Hallo Leute, ich versuche vergeblichst, auf einen GET-Befehl per ESP8266 zu antworten. Ich nutze eine XMega am ESP via UART. Die Kommunikation funktioniert beidseitig via TCP/IP suoer, allerdings nur einseitig via HTTP PUT/GET-Befehle. Ich habe eine APP mittels MIT-App-Inventor, dieser kann nur PUT/GET, kein TCP/IP. Per PUT kann ich alles senden, entschlüsseln und verarbeiten. Allerdings wenn ich einen GET-Befehl sende, und dann Daten sende, passiert nichts, bzw. die App enthält diese nicht. Ich denke mal das liegt daran, dass ich das Protokoll nicht einhalte. Bsp: Ich sende per PUT den Befehl: "a35". Dann antwortet der XMega mit "LichtAN". Der Ablauf ist so: App: PUT "a35" App: GET XMEGA: "AT+CIPSEND,0,7:LichtAN" Die Antwort beim XMega klappt bei TCP/IP per VB-Programm. Was mache ich bei HTTP GET falsch?!
> Allerdings wenn ich einen GET-Befehl sende, und dann Daten > sende, passiert nichts, bzw. die App enthält diese nicht. Mag daran liegen, dass das HTTP-GET eben kein PUT/POST ist ;) GET holt nur. Die einzige Information, die man übermitteln kann (von HTTP-Tags ala Cookie, etc abgesehen), wird in der URL kodiert.
Hallo Verate uns doch erstmal womit dein ESP programmiert wird. Arduino, NodeMCU, Sming, SDK direkt? Marius D. schrieb: > Die Kommunikation funktioniert > beidseitig via TCP/IP suoer, allerdings > nur einseitig via HTTP > PUT/GET-Befehle. Hä?? Wer kommuniziert mit wem? Und was macht die App genau? Marius D. schrieb im Beitrag #4476192 > Per PUT kann ich alles senden, > entschlüsseln und > verarbeiten. > Allerdings wenn ich einen GET-Befehl > sende, und dann Daten > sende, passiert nichts, bzw. die App > enthält diese nicht. Ich denke mal > das liegt daran, dass ich das Protokoll > nicht einhalte. Also erstmal, du versucht anscheinend etwas über HTTP zu steuern. Dann musst du doch wissen wie du das genau willst. Marius D. schrieb im Beitrag #4476192 > Bsp: Ich sende per PUT den Befehl: "a35". Dann antwortet der XMega mit > "LichtAN". Der Ablauf ist so: > > App: PUT "a35" > App: GET > XMEGA: "AT+CIPSEND,0,7:LichtAN" > > Die Antwort beim XMega klappt bei TCP/IP per VB-Programm. Was mache ich > bei HTTP Also direkt per AT-Befehle? Was ist ein VB-Programm? Generell de ke ich das Arduino gut zu sein scheint, aber vorerst musst du uns ein paar mehr Infos geben. Gruss Felix
VB wird wohl visual basic bedeuten... gibt der ESP den ein OK zurück? also sendet er die daten auch weg? falls du die aktuelle AT drauf hast, kannst du auch CIPSENDEX benutzen... dann brauchst du keine zeichen mehr zählen... der sendet dann, wenn die angegebenen zeichen erreicht sind, oder mit \0 terminiert wird
1 | boolean sendData(String Data, char respond[]) |
2 | { |
3 | esp8266.println("AT+CIPSENDEX=200"); //für 200 bytes |
4 | if (esp8266.findUntil(respond, ">")) |
5 | { |
6 | esp8266.println(Data); |
7 | esp8266.print("\\0"); |
8 | // Serial.println("SEND: " + Data); |
9 | if (esp8266.findUntil(respond, "ERROR")) |
10 | { |
11 | return true; |
12 | } |
13 | else |
14 | { |
15 | debug("ESP DATA SEND ERROR: " + Data); |
16 | return false; |
17 | } |
18 | } |
19 | |
20 | } |
21 | |
22 | sendData("Daten", "OK"); |
zum bleistift... btw; http://netio.davideickhoff.de/editor mit der kann man auch ne menge anstellen.... und die frisst fast alles
:
Bearbeitet durch User
Hallo Leute, vielen Dank für die Antworten. Hier mal etwas zu meiner Erklärung: 1. Ich nutze einen XMega (programmiert in C, ganz normal via AtmelStuido7). Arduino mag ich absolut nicht. 2. Der ESP01 hat die Standard-SDK 1.4.0 und ist via UART am XMega angeschlossen 3. Das VB (VisualBasic-PC Programm), dient zur Steuerung des XMega. Es sendet per TCP/IP Daten an den ESP und Empfängt auch welche (funktioniert alles). 4. Zzgl. zur mobilen Steuerung habe ich eine APP mit dem Google MIT AppInventor zusammengeklickt. Dieser kann nur HTTP-Befehle (HTTP GET, POST, PUT, and DELETE). Senden mache ich mit HTTP PUT, dann bekomme ich rel. viel am µC, meine ESP-Lib macht den Rest und selektiert die Nutzdaten, auch beim GET-Befehl. Wenn ein GET-Befehl kommt, detectiert dies die lib, und der MC antwortet mit einem reinen AT+CIPSEND.... Befehl. Also wie auch bei dem TCP/IP (was dort funktioniert). Bei der App kommt nichts an, abgesendet und das OK bekomme ich vom ESP. Ich denke, dass ich nicht einfach mit AT+CIPSEND=Nutzdaten antworten kann, sondern irgendwie ein anderes Format nutzen muss.
Oh, CIPSENDEX ist für mein momentanes Projekt auch sehr nützlich. Wo hast du die Info darüber her? In den Tutorials die ich mir so ergoogelt habe war immer CIPSEND0,7 etc.
Sascha schrieb: > Oh, CIPSENDEX ist für mein momentanes Projekt auch sehr nützlich. > > Wo hast du die Info darüber her? In den Tutorials die ich mir so > ergoogelt habe war immer CIPSEND0,7 etc. die changelogs/docs beim hersteller... http://bbs.espressif.com/viewforum.php?f=51 >> http://bbs.espressif.com/viewtopic.php?f=51&t=1022 ;)
:
Bearbeitet durch User
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.