【发布时间】:2017-05-21 23:39:32
【问题描述】:
我不想在这里问这个问题;我已经an issue on GitHub,我真的需要解决它。
基本上,我每 15 秒向 dweetPro 发送一次帖子。它可以完美运行数小时,然后随机停止,每 20 个失败的响应发送一个成功的响应。
我已经尝试了所有我能想到的东西,我很确定我的代码是正确的,但不确定它是与库有关还是什么。我可以在我的 PC 上无限期地从 Python 发送帖子并且永远不会失败,所以它绝对是在 ESP 方面。
我使用的是干净的 2A 电源,所以不是电源问题。
这里是来自 ESP 发送帖子的几个 Wireshark 日志的链接。有效和无效都在上面。
可以在 GitHub 上找到有关该问题的更多信息。这是我正在使用的代码,使用了调试行:
void send_to_server(String* time_sent, float magnitude, String status,
int earthquake_occured, float* data, int data_size)
{
int content_length;
String content = make_json_content(&content_length, magnitude,
status, earthquake_occured, data, data_size);
int s = -100;
int c = 0;
while (s<0 && c<10)
{
HTTPClient http;
http.setTimeout(1000);
bool suc = http.begin("http://dweetpro.io/v2/dweets");
Serial.print("Success?: "); Serial.println(suc);
http.addHeader("Content-Type", "application/json");
http.addHeader("Accept", "application/json");
http.addHeader("X-DWEET-AUTH", "xxx");
int timerr = millis();
Serial.println("Posting");
s = http.POST(content);
Serial.print("Posted: "); Serial.println(millis() - timerr);
Serial.print("Post len: "); Serial.println(s);
http.writeToStream(&Serial);
Serial.println("");
http.end();
++c;
}
Serial.println("Ended");
}
成功时,s 打印 200,失败时,打印 -1。
在 Wireshark 上,每个成功的帖子都会显示数据,但是对于不成功的帖子,它会显示前几个失败的帖子的一些数据,然后就停止了。这就像它超载自己或什么的。
再一次,很抱歉这个问题,但我只是不知道还能做什么。我花了这么多时间在这上面看不到尽头。非常感谢大家。
编辑:我应该添加的其他一些信息是,如果它没有发送有效的帖子,我可以重置 ESP,但它仍然无法工作。真的很奇怪,所以我很茫然。如果它正在发送有效帖子,我可以重置/拔掉它,它仍然可以工作。如果它不工作而我做同样的事情,它就不会继续工作。
有没有可能只是我家的某种干扰?
【问题讨论】:
-
最好在问题中显示这些 Wireshark 日志,而不是指向 Google 文件柜的外部链接。可以在屏幕截图中显示基本信息吗?我们倾向于不鼓励文件柜,因为它们的链接很脆弱,如果它们将来死掉,那么如果没有它,这个问题可能就没有多大意义。
标签: arduino wifi esp8266 arduino-esp8266