2017-05-02 20 views
0

私はarduinoとesp8266を十分に理解していません。私は、URLからデータを受信して​​いるASP.NET WebAPIを開発しましたASP.NETへの投稿要求を送信するArduinoからesp8266を使用して安心なWeb API

http://iotworkshop.somee.com/api/Data/PostData?Temperature=67 

私は自分のAPIをフィドラーからテストしましたが、すべてうまくいきました。今、arduinoとesp8266 wifiモジュールからAPIにhttpリクエストを送信する必要があります。 私は多くのものを検索しましたが、何も私を助けてくれませんでした。ほとんどの人が、HTTPリクエストをPHPページに送信しています。私はesp8266を直接プログラミングしたくありません。 arduinoがATコマンドをesp8266に送信するような方法でPOSTリクエストを送信したい。私は、コード

`#include <SoftwareSerial.h> 

#define DEBUG true 

SoftwareSerial esp8266(3,2); 
void setup() 
{ 
Serial.begin(9600); 
esp8266.begin(115200); // your esp's baud rate might be different 
sendData("AT+RST\r\n",2000,DEBUG); // reset module 
sendData("AT+CWMODE=1\r\n",1000,DEBUG); 
sendData("AT+CWJAP=\"Wifi\",\"blackday\"\r\n",9000,DEBUG); 
sendData("AT+CIPSTART=\"TCP\",\"iotworkshop.somee.com\",80\r\n", 
5000,DEBUG); 
String toSend = "POST /api/Data/PostData?Temperature=45 HTTP/1.1\r\n"; 
toSend += "Host: iotworkshop.somee.com\r\n" ; 
toSend += "User-Agent:Arduino\r\n"; 
toSend += "Accept-Version: ~0\r\n"; 
toSend += "Content-Type: application/json\r\n"; 

sendData("AT+CIPSEND="+toSend.length(),3000,DEBUG); 

sendData(toSend,3000,DEBUG); 
sendData("AT+CIPCLOSE", 1000, DEBUG); 
} 

void loop() 
{ 

} 


    String sendData(String command, const int timeout, boolean debug) 
{ 
    String response = ""; 

esp8266.print(command); // send the read character to the esp8266 

long int time = millis(); 

while((time+timeout) > millis()) 
{ 
    while(esp8266.available()) 
    { 

    // The esp has data so display its output to the serial window 
    char c = esp8266.read(); // read the next character. 
    response+=c; 
    } 
} 

if(debug) 
{ 
    Serial.print(response); 
} 

return response; 
}` 

しかし、私はプットを出し、次の取得しています以下の書いた数日の検索後

AT+RST 


    OK 
    WIFI DISCONNECT 

    ets Jan 8 2013,rst c`use:2, boot mode:(3,7) 

load 0x40100000, len 1396, room 16 
t`il 4 
    chkstm 0x89 
loaf 0x3ffe8000, len 776, room tail 4 
    cmf0t`il 
so1ez p2r 
    ⸮⸮(j5⸮! 
    -⸮1%1⸮ 

    j 
    ⸮sl⸮⸮o⸮ 
    @i-Thinker Tdchnology Co/ Ltd. 

    invalhd 
    AT+CW⸮ODQOLCC⸮C⸮j⸮H⸮AT+CWJAP="Wifi","blackday" 

WIFI CONNDCTED 
WIFI GOT IP 

OK 
    AT+AIPSTART="TCP","iotworkshop.somee.com",80 

    CONOECT 

    OK 

    ⸮jE⸮)⸮⸮UW^Y⸮zure=44 PQA⸮⸮(Q⸮H⸮.]'Z]K⸮..⸮⸮V⸮⸮⸮HH׮Dɩ⸮ծYKPY]⸮P 
    ol 
    AT+CIPCLOSD 

この点については、どのようなヘルプや完全なリンクを使用していますか? asp.net安らかなAPIと

答えて

1

最後の数日後、私は首尾よく伝えarduinoの

#include "SoftwareSerial.h" 
String ssid ="PTCL-BB"; 

String password="1122334455"; 

SoftwareSerial esp(3,2);// RX, TX 

String data; 

String server = "myservername"; // www.example.com 

String uri = "/api/Data/PostData?Temperature=70"; 
void setup() { 


esp.begin(115200); 

Serial.begin(9600); 

reset(); 

    connectWifi(); 

} 
void reset() { 

esp.println("AT+RST"); 

delay(1000); 

if(esp.find("OK")) Serial.println("Module Reset"); 

} 
void connectWifi() { 

String cmd = "AT+CWJAP=\"" +ssid+"\",\"" + password + "\""; 

    esp.println(cmd); 

    delay(4000); 

if(esp.find("OK")) { 

    Serial.println("Connected!"); 

    } 

    else { 

        connectWifi(); 

    Serial.println("Cannot connect to wifi"); } 

     } 
    void loop() 
    { 
     senddata(); 
     delay(3000); 

     } 

     void senddata() 
    { 
    data = "temperature= 34"; 
     esp.println("AT+CIPSTART=\"TCP\",\"" + server + "\",80");//start a 
     TCP connection. 

    if(esp.find("OK")) { 

     Serial.println("TCP connection ready"); 

     } delay(1000); 

     String postRequest = 

     "POST " + uri + " HTTP/1.0\r\n" + 

     "Host: " + server + "\r\n" + 

     "Accept: *" + "/" + "*\r\n" + 

     "Content-Length: " + data.length() + "\r\n" + 

     "Content-Type: application/x-www-form-urlencoded\r\n" + 

     "\r\n" + data; 

     String sendCmd = "AT+CIPSEND=";//determine the number of c  
     aracters to be sent. 

     esp.print(sendCmd); 

     esp.println(postRequest.length()); 

     delay(500); 

     if(esp.find(">")) { Serial.println("Sending.."); 
    esp.print(postRequest); 

    if(esp.find("SEND OK")) { Serial.println("Packet sent"); 

     while (esp.available()) { 

     String tmpResp = esp.readString(); 

     Serial.println(tmpResp); 

     } 

     // close the connection 

     esp.println("AT+CIPCLOSE"); 

      } 

      } 

      } 
関連する問題