【问题标题】:Connecting Arduino to wunderground using ESP8266使用 ESP8266 将 Arduino 连接到 wunderground
【发布时间】:2016-08-07 01:33:09
【问题描述】:

我正在尝试使用 ESP8266 和 Arduino Uno 连接到 wunderground 并获取 JSON 文件以获取当前天气。使用我的代码,我可以很好地连接到服务器。问题似乎是它没有给我整个返回文件。

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

运行此代码给我以下结果:

AT+CIPSTART="TCP","api.wunderground.com",80 找到了 ACONNECT,因此您已连接 AT+CIPSEND=97 GEThttp://api.wunderground.com/api/7287eb3ace065563/conditions/q/Canada/Regina.jsonHTTP/1.0

忙...

接收 97 个字节

发送确定

+IPD,1460:HTTP/1.0:"0.1", "服务条款":"http://www.wunderground.com/weather/api/d/terms.html", " 标志为假

如您所见,我只得到了 JSON 文件的 sn-p。我不确定是什么问题。

【问题讨论】:

    标签: json arduino esp8266


    【解决方案1】:

    它根本不发送 JSON。它检测到您的 Arduino/ESP 组合不是人类,并在责骂您,让您知道您违反了服务条款,如 http://www.wunderground.com/weather/api/d/terms.html 中所述。您需要设置一些标题,以伪装成浏览器,从而作为人类用户传递。

    【讨论】:

    • 在我问这个之后,我遇到了类似你提到的有人必须设置更多标题的事情。我将不得不对此进行更多研究。您是否知道我必须设置的特定标头?
    • whatismybrowser.com/detect/… 你要的是USER_AGENT。
    猜你喜欢
    • 2016-07-08
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-02
    相关资源
    最近更新 更多