2017-02-09 4 views
1

this tutorial을 사용하고 있습니다. 나는 또한 같은 노드 MCU ESP8266을 사용하고있다. Ii를 홈 네트워크에 연결했습니다. 로컬 IP 주소도 표시되지만 내 thingspeak 채널에 연결되지 않으며 클라이언트를 기다리는 데 방해가됩니다.Node MCU esp8266을 ThingsPeak에 연결할 수 없습니다.

또한 내 thingspeak API가 정확하고 내 홈 네트워크도 작동하는지 확인했습니다.

enter image description here

+0

'192.168.43.40'은 ThingSpeak이 사용할 인터넷 IP 주소처럼 보이지 않습니다. –

답변

0

Arduino IDE를 사용하여 NodeMCU를 프로그래밍 한 것처럼 보입니다. 이 경우에는 Wi-Fi 클라이언트를 만들고 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

공식 [Arduino 및 ESP8266을위한 ThingSpeak 통신 라이브러리] (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; 
}