我正在使用this tutorial。我也使用相同的节点MCU ESP8266。我将它连接到我的家庭网络。本地IP地址也被显示出来,但它并没有连接到我的事情通道,而且它还停留在等待客户端。无法连接节点MCU esp8266到Thingspeak
我也检查了我的事情API是正确的,我的家庭网络也在工作。
我正在使用this tutorial。我也使用相同的节点MCU ESP8266。我将它连接到我的家庭网络。本地IP地址也被显示出来,但它并没有连接到我的事情通道,而且它还停留在等待客户端。无法连接节点MCU esp8266到Thingspeak
我也检查了我的事情API是正确的,我的家庭网络也在工作。
看起来你正在使用的Arduino IDE到NodeMCU编程。如果是这种情况,那么您只需创建一个WiFiClient,然后构建一个HTTP POST请求,然后使用客户端将它发送给ThingSpeak。
下面是我tutorial相关线路:
之前您的设置添加这些行:
#include <ESP8266WiFi.h>
WiFiClient client;
const char* server = "api.thingspeak.com";
String writeAPIKey = "XXXXXXXXXXXXXXXX";
在你的循环中,添加以下行来读取A0并将其发送给ThingSpeak:
if (client.connect(server, 80)) {
// Measure Analog Input (A0)
int valueA0 = analogRead(A0);
// Construct API request body
String body = "field1=";
body += String(valueA0);
Serial.print("A0: ");
Serial.println(valueA0);
client.print("POST /update HTTP/1.1\n");
client.print("Host: api.thingspeak.com\n");
client.print("Connection: close\n");
client.print("X-THINGSPEAKAPIKEY: " + writeAPIKey + "\n");
client.print("Content-Type: application/x-www-form-urlencoded\n");
client.print("Content-Length: ");
client.print(body.length());
client.print("\n\n");
client.print(body);
client.print("\n\n");
}
client.stop();
// wait 20 seconds and post again
delay(20000);
还有一个官方的[ThingSpeak通信库Arduino和ESP8266](https://github.com/mathworks/thingspeak-arduino)。它包装了HTTP调用和参数格式的细节,并提供了一些附加功能。我在我的一个项目中使用它。 – leetibbett
给出下面的答案吗?测试一个工作。 – cagdas
使用ESP8266HTTPClient HTTP LIB后通过ESP8266到ThingSpeak。这是一个示例函数。有数据参数调用它来写到您的ThingSpeak频道:
#include <ESP8266HTTPClient.h>
#define TSPEAK_HOST "http://api.thingspeak.com"
#define TSPEAK_API_KEY "YOUR_THINGSPEAK_API_KEY"
#define LEN_HTTP_PATH_MAX 256
HTTPClient http;
unsigned short postThingSpeak(char* data)
{
boolean httpCode = 0;
char httpPath[LEN_HTTP_PATH_MAX];
memset(httpPath, 0, LEN_HTTP_PATH_MAX);
snprintf(httpPath, LEN_HTTP_PATH_MAX, "%s/update?api_key=%s&field1=%s", TSPEAK_HOST, TSPEAK_API_KEY, data);
Serial.printf("Path to post : %s\n", httpPath);
http.begin(httpPath);
httpCode = http.GET();
Serial.printf("Return : %d\n", httpCode);
Serial.printf("Incoming Body : %s\n", http.getString().c_str());
http.end();
return httpCode;
}
'192.168.43.40'看起来不像ThingSpeak会使用的互联网IP地址。 –