Skip to content

Instantly share code, notes, and snippets.

@prasertsakd
Created April 14, 2015 06:53
Show Gist options
  • Save prasertsakd/13358cff7ddbfedad479 to your computer and use it in GitHub Desktop.
Save prasertsakd/13358cff7ddbfedad479 to your computer and use it in GitHub Desktop.
Thinkspeak Post Data
#include <ESP8266WiFi.h>
const char* ssid = "-----------";
const char* password = "-----------";
// ThingSpeak Settings
char thingSpeakAddress[] = "api.thingspeak.com";
String writeAPIKey = "----------------------";
const int updateThingSpeakInterval = 15 * 1000; // Time interval in milliseconds to update ThingSpeak (number of seconds * 1000 = interval)
// Variable Setup
long lastConnectionTime = 0;
boolean lastConnected = false;
int failedCounter = 0;
int value = 0;
// Initialize Arduino Ethernet Client
WiFiClient client;
void setup()
{
// Start Serial for debugging on the Serial Monitor
Serial.begin(115200);
delay(10);
// We start by connecting to a WiFi network
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
}
void loop()
{
String strValue0 = (String) value ;
// Read value from Analog Input Pin 0
//String analogValue0 = String(analogRead(A0), DEC);
// Print Update Response to Serial Monitor
if (client.available())
{
//char c = client.read();
//Serial.print(c);
//see all response
while ( client.available() > 0 ) {
char c = client.read();
Serial.print(c);
}
}
// Disconnect from ThingSpeak
if (!client.connected() && lastConnected)
{
Serial.println("...disconnected");
Serial.println();
client.stop();
}
// Update ThingSpeak
if(!client.connected() && (millis() - lastConnectionTime > updateThingSpeakInterval))
{
updateThingSpeak("field1="+strValue0);
Serial.println (strValue0);
if (value > 256) value = 0;
value++;
}
lastConnected = client.connected();
}
void updateThingSpeak(String tsData)
{
if (client.connect(thingSpeakAddress, 80))
{
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(tsData.length());
client.print("\n\n");
client.print(tsData);
lastConnectionTime = millis();
if (client.connected())
{
Serial.println("Connecting to ThingSpeak...");
Serial.println();
failedCounter = 0;
}
else
{
failedCounter++;
Serial.println("Connection to ThingSpeak failed ("+String(failedCounter, DEC)+")");
Serial.println();
}
}
else
{
failedCounter++;
Serial.println("Connection to ThingSpeak Failed ("+String(failedCounter, DEC)+")");
Serial.println();
lastConnectionTime = millis();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment