2016-11-18 431 views
-1

我想從esp8266發送溫度數據。我已經調整了我的代碼this Instructable;這是我的代碼:發送來自esp8266的HTTP發送請求

#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") ; 
} 

我試圖發送與esp8266庫,但它不起作用。

+1

什麼不工作,你怎麼知道它不工作? –

+0

'原因沒有收到任何數據,我複製粘貼我沒有任何修改,只修改了我的參數。 – Maclos

+0

要進行調試,請將您發送至ESP的所有內容打印回PC。 –

回答

1

我讀的代碼,我發現在這行有點錯誤:

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

wifi.println("AT+CIPCLOSE") ; 

你ESP8266已準備好接收數據,但你不發送任何東西,所以加入這一行:)

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

wifi.println(Post); // this line 

wifi.println("AT+CIPCLOSE") ; 

的方法是例如如下

ARDUINO發送:

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

ESP8266響應:

CONNECT 
ok 

ARDUINO發送:

AT + CIPSEND = 45 

其中45是整個框架

ESP8266響應的大小:

> 

>表示它希望接收數據。數據在這裏發送。

最後

ARDUINO發送:

AT + CIPCLOSE 

ESP8266迴應:

Closed 

ok 
+0

但是不起作用lol:'( – Maclos