can not upload data to thingspeak even while the data is displaying in serial moniter

#include <ESP8266WiFi.h>
#include <DHT.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
String apiKey = "AAABBBCCCDDD"; // Enter your Write API key from ThingSpeak
const char *ssid = "Mattath-Fi"; // replace with your wifi ssid and wpa2 key
const char *pass = "12345678";
const char* server = "api.thingspeak.com";
#define DHTPIN 0 //pin where the dht11 is connected
DHT dht(DHTPIN, DHT11);
WiFiClient client;
void setup()
{
Serial.begin(115200);
delay(10);
dht.begin();
Serial.println("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, pass);
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
}
void loop()
{
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t))
{
Serial.println("Failed to read from Sensors!");
return;
}
if (client.connect(server,80)) // "184.106.153.149" or api.thingspeak.com
{
String postStr = apiKey;
postStr +="&field1=";
postStr += String(t);
postStr +="&field2=";
postStr += String(h);
postStr += "\r\n\r\n";
client.print("POST /update HTTP/1.1\n");
client.print("Host: api.thingspeak.com\n");
client.print("Connection: close\n");
client.print("X-THINGSPEAKAPIKEY: "+apiKey+"\n");
client.print("Content-Type: application/x-www-form-urlencoded\n");
client.print("Content-Length: ");
client.print(postStr.length());
client.print("\n\n");
client.print(postStr);
Serial.print("Temperature: ");
Serial.print(t);
Serial.print(" degrees Celcius, Humidity: ");
Serial.print(h);
Serial.println("%. Send to Thingspeak.");
}
client.stop();
Serial.println("Waiting...");
delay(1000);
}

Antworten (1)

What are you seeing on the serial monitor?
I think the problem is that you are stopping the client before the server acknowleges the post. You could add delay before disconencting, or wait for a response.
We strongly reccomend using the ThingSpeak library by the way. It takes care of all the HTTP interactions and waiting for you.

8 Kommentare

#include <ThingSpeak.h>
#include <ESP8266WiFi.h>
#include <DHT.h> // Including library for dht
#include <WiFiClient.h>
String apiKey = "REDACTED"; // Enter your Write API key from ThingSpeak
const char *ssid = "Haridas KP"; // replace with your wifi ssid and wpa2 key
const char *pass = "9096562712";
const char* server = "api.thingspeak.com";
#define DHTPIN 0 //pin where the dht11 is connected
DHT dht(DHTPIN, DHT11);
WiFiClient client;
void setup()
{
Serial.begin(115200);
delay(10);
dht.begin();
Serial.println("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, pass);
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
}
void loop()
{
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t))
{
Serial.println("Failed to read from DHT sensor!");
return;
}
if (client.connect(server,80)) // "184.106.153.149" or api.thingspeak.com
{
String postStr = apiKey;
postStr +="&field1=";
postStr += String(t);
postStr +="&field2=";
postStr += String(h);
postStr += "\r\n\r\n";
client.print("POST /update HTTP/1.1\n");
client.print("Host: api.thingspeak.com\n");
client.print("Connection: close\n");
client.print("X-THINGSPEAKAPIKEY: "+apiKey+"\n");
client.print("Content-Type: application/x-www-form-urlencoded\n");
client.print("Content-Length: ");
client.print(postStr.length());
client.print("\n\n");
client.print(postStr);
Serial.print("Temperature: ");
Serial.print(t);
Serial.print(" degrees Celcius, Humidity: ");
Serial.print(h);
Serial.println("%. Send to Thingspeak.");
}
client.stop();
Serial.println("Waiting...");
// thingspeak needs minimum 15 sec delay between updates, i've set it to 30 seconds
delay(10000);
}
I have also included thinkspeak library still same issue can't upload data to thinkspeak
I can see my temperature and humidity data on serial moniter
Please try to understand the code you are copy-pasting so you can debug it on your own. Your comment says you've set the delay to 30 seconds, but, the code is actually only delaying for 10 seconds. Why?
%// thingspeak needs minimum 15 sec delay between updates, i've set it to 30 seconds
delay(10000);
Please use the examples from the ThingSpeak library to get started, and respect the rate limits associated with your free ThingSpeak account (minimum 15s delay between posts).
i have pushed my temperature and humidity data to thinkspeak from ardino ide . now i need a communication between thinkspeak and nodemcu . for example after analysising the data if there is gad in the data then thinkspeak should notify the arudino ide .
Is there any way to help me out?
Perhaps start a new question with the details of what you want to do.
I added the thingspeak libraries and also changed delay as 30sec which was 10 at first. but still the parameters are not being posted on thingspeak
@Ayesha Fatima perhaps you culd start a new post/thread so we can help you? I would describe what you are trying to do, what you have tried, and what you see.

Melden Sie sich an, um zu kommentieren.

Communitys

Weitere Antworten in  ThingSpeak Community

Kategorien

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by