2016-04-15 9 views
0

私はESP8266とArduino Unoを使ってwundergroundに接続し、JSONファイルを取得して現在の天気を取得しようとしています。私のコードでは、サーバーに接続しています。問題と思われるのは、それが私にすべてのリターンファイルを与えていないということです。このコードを実行するESP8266を使ってArduinoをwundergroundに接続

#include <SoftwareSerial.h> 
#include <ArduinoJson.h> 

SoftwareSerial esp8266(8, 9); 
bool flag = true; 

void setup() { 
    // put your setup code here, to run once: 
    Serial.begin(9600); 
    esp8266.begin(9600); 
} 

void loop() { 
    if (flag) { 
    String cmd; 
    int length; 
    cmd = "AT+CIPSTART=\"TCP\",\""; 
    cmd += "api.wunderground.com"; 
    cmd += "\",80"; 
    esp8266.println(cmd); 
    Serial.println(cmd); 
    delay(2000); 
    Serial.write(esp8266.read()); 
    if (esp8266.find("CONNECT")) { 
     Serial.println("CONNECT found so your connected"); 
    } 
    String action; 
    action = "GET http://api.wunderground.com/api/APIKEY/conditions/q/Canada/Regina.json HTTP/1.0\r\n\r\n"; 
    length = action.length(); 
    cmd = "AT+CIPSEND="; 
    cmd += length; 
    esp8266.println(cmd); 
    Serial.println(cmd); 
    delay(5000); 
    if (esp8266.find(">")) { 
     Serial.print(">"); 
    } else { 
     esp8266.println("AT+CIPCLOSE"); 
     Serial.println(F("connect timeout")); 
    } 

    esp8266.println(action); 
    Serial.println(action); 
    delay(700); 

    String test = ""; 
    while (esp8266.available()) { 
     char c = esp8266.read(); 
     test += c; 
    } 
    Serial.println(test); 
    flag = false; 
    Serial.println("Flag is false"); 
    } 
} 

は私に次のような結果を与える:+ CIPSTART = "TCP" AT

を、 "api.wunderground.com"、80 ACONNECTは= + CIPSEND ATので、あなたの接続 を見つけました97 GET http://api.wunderground.com/api/7287eb3ace065563/conditions/q/Canada/Regina.json HTTP/1.0

忙しいの...

のRecv 97バイト

+ IPD、1460 OK SEND:HTTP/1.0: "0.1"、 "termsofService": "http://www.wunderground.com/weather/api/d/terms.html" あなたは私が取得のみ見ることができるように、 「 フラグ

偽でありますJSONファイルのスニペット。私は問題が何であるか分かりません。

答えて

0

JSONを送信していません。あなたのArduino/ESPコンボが人間ではないことを発見し、http://www.wunderground.com/weather/api/d/terms.htmlで説明されているように、あなたがサービス利用規約に違反していることを知らせる、あなたを叱っています。いくつかのヘッダーを設定し、ブラウザとして装って、人間のユーザーとして渡す必要があります。

+0

私はこれに尋ねた後、あなたが誰かがもっとヘッダを設定しなければならないと言ったようなものに出くわしました。私はもう少しこれを調べなければならないでしょう。私が設定しなければならないことをあなたが知っている特定のヘッダーがありますか? –

+0

https://www.whatismybrowser.com/detect/what-http-headers-is-my-browser-sending目的のものはUSER_AGENTです。 – dda

関連する問題