2017-02-09 126 views
1

我正在使用this tutorial。我也使用相同的节点MCU ESP8266。我将它连接到我的家庭网络。本地IP地址也被显示出来,但它并没有连接到我的事情通道,而且它还停留在等待客户端。无法连接节点MCU esp8266到Thingspeak

我也检查了我的事情API是正确的,我的家庭网络也在工作。

enter image description here

+0

'192.168.43.40'看起来不像ThingSpeak会使用的互联网IP地址。 –

回答

0

看起来你正在使用的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); 
+0

还有一个官方的[ThingSpeak通信库Arduino和ESP8266](https://github.com/mathworks/thingspeak-arduino)。它包装了HTTP调用和参数格式的细节,并提供了一些附加功能。我在我的一个项目中使用它。 – leetibbett

+1

给出下面的答案吗?测试一个工作。 – cagdas

0

使用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; 
} 
相关问题