2016-11-18 3 views
-1

Ich möchte Temperaturdaten von einem esp8266 senden. Ich habe meinen Code von this Instructable angepasst; das ist mein code:Senden HTTP-Anfrage von einem esp8266

#include "SoftwareSerial.h" 
#include "ESP8266.h" 

String ssid = "Red Wi-Fi de Alexis" ; 
String password = "adrian2003" ; 

SoftwareSerial wifi(4, 2) ; 

String Host = "mail.interseccion.com.mx:8901" ; 
String Url = "/Ws_Temperatura" ; 

void setup() 
{ 
    wifi.begin(9600) ; 
    Serial.begin(9600) ; 
    wifi.println("AT+RST") ; 
    wifi.println("AT+CWJAP=\"" + ssid + "\",\"" + password + "\"") ; 
} 

void loop() 
{ 
    float tmp = 22.22 ; 

    //URL Temperatura 
    //URL: mail.interseccion.com.mx:8901/Ws_Temperatura?Id_temp=0&Id_Device=1&Valor=00.00&Temperatura_Action=Insert 
    String urluno = String("Id_temp=0&Id_Device=2&Valor="); 
    String temp = String(tmp); 
    String urldos = String("&Temperatura_Action=Insert"); 
    String urlfinal = String(String(urluno) + String(tmp) + String(urldos)); 

    int tamano = urlfinal.length() ; 

    wifi.println("AT+CIPSTART=\"TCP\",\"" + Host + "\", 8901") ; 

    String Post = "POST" + Url + "HTTP/1.1\r\n" + 
    "Host: " + Host + "\r\n" + 
    "Content-Type: application/x-www-form-urlencoded" + 
    "Content-Length: " + tamano + "\r\n" + urlfinal ; 


    wifi.println("AT+CIPSEND= " + Post.length()) ; 

    wifi.println("AT+CIPCLOSE") ; 
} 

Ich habe versucht, mit esp8266 Bibliothek zu senden, aber es funktioniert nicht.

+1

Was nicht funktioniert, und wie Sie wissen, es funktioniert nicht? –

+0

'Ursache erhält keine Daten, und ich kopiert und eingefügt habe ich keine Änderung, nur meine Parameter geändert. – Maclos

+0

Um es zu debuggen, drucken Sie alles, was Sie an das ESP senden, zurück zum PC. –

Antwort

1

las ich den Code, und ich entdeckt einen kleinen Fehler in diesen Zeilen:

wifi.println("AT+CIPSEND= " + Post.length()) ; 

wifi.println("AT+CIPCLOSE") ; 

Ihre Esp8266 bereit ist, Daten zu empfangen, aber Sie sind nicht etwas zu senden, so fügen Sie diese Zeile :)

wifi.println("AT+CIPSEND= " + Post.length()) ; 

wifi.println(Post); // this line 

wifi.println("AT+CIPCLOSE") ; 

Das Verfahren ist beispielsweise wie folgt

ARDUINO sendet:

AT + CIPSTART = "TCP", www.google.com, 80 

Esp8266 reagiert:

CONNECT 
ok 

ARDUINO sendet:

AT + CIPSEND = 45 

wo 45 die Größe des gesamten Rahmens ist

Esp8266 reagiert:

> bedeutet, dass es Daten empfangen erwartet. Die Daten werden hier gesendet.

und schließlich

ARDUINO sendet:

AT + CIPCLOSE 

Esp8266 antwortet:

Closed 

ok 
+0

Aber funktioniert nicht lol: '( – Maclos