Не удается подключить узел MCU esp8266 к Thingspeak

Я использую это руководство. Я также использую тот же узел MCU ESP8266. Я подключил его к своей домашней сети. Также отображается локальный IP-адрес, но он не подключен к моему каналу thingspeak и застрял в ожидании клиента.

Я также проверил, что мой API-интерфейс thingspeak верен, и моя домашняя сеть также работает.

введите описание изображения здесь


person Abhishek Berad    schedule 09.02.2017    source источник
comment
192.168.43.40 не похож на IP-адрес в Интернете, который использовал бы ThingSpeak.   -  person gre_gor    schedule 10.02.2017


Ответы (2)


Похоже, вы используете IDE Arduino для программирования NodeMCU. В этом случае все, что вам нужно сделать, - создать WiFiClient, затем создать запрос HTTP POST и отправить его в ThingSpeak с помощью клиента.

Вот соответствующие строки из моего учебника :

Перед настройкой добавьте строки:

#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);
person iohans    schedule 22.02.2017
comment
Существует также официальная коммуникационная библиотека ThingSpeak для Arduino и ESP8266. Он содержит подробную информацию о HTTP-вызовах и форматировании параметров, а также предоставляет некоторые дополнительные функции. Я использовал его в одном из своих проектов. - person leetibbett; 15.03.2017
comment
Попробовали ответить на нижеприведенный? Протестировал рабочий. - person cagdas; 27.03.2017

Используйте HTTP-библиотеку ESP8266HTTPClient для публикации в ThingSpeak через ESP8266. Вот пример функции. Вызовите его с параметром данных для записи в ваш канал 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;
}
person cagdas    schedule 22.02.2017