Connected arduino with thingspeak (simple)
hello, name arief. indonesia. have project , having trouble uploading data thingspeak via w5100 ethernet.
i not make ip static connect thingspeak. thingspeak managed display data. after 3 minutes, thingspeak not display data. procedure wrong?
i have code :
#include <spi.h>
#include <ethernet.h>
int pin = 0; // analog pin
int tempc = 0,tempf=0; // temperature variables
int samples[8]; // variables make better precision
int maxi = -100,mini = 100; // start max/min temperature
int i;
// local network settings
byte mac[] = { 0xd4, 0xa8, 0xe2, 0xfe, 0xa0, 0xa1 }; // must unique on local network
byte ip[] = { 192,168,0,230 }; // must unique on local network
byte gateway[] = { 192,168,0,1};
byte subnet[] = { 255, 255, 255, 0 };
// thingspeak settings
char thingspeakaddress[] = "api.thingspeak.com";
string writeapikey = "c09ircihkmpf19hp"; // write api key thingspeak channel
const int updateinterval = 10000; // time interval in milliseconds update thingspeak
// variable setup
long lastconnectiontime = 0;
boolean lastconnected = false;
int failedcounter = 0;
// initialize arduino ethernet client
ethernetclient client;
void setup()
{
serial.begin(9600);
ethernet.begin(mac, ip, gateway, subnet);
delay(1000);
serial.print("ethernet shield ip is : ");
serial.println(ethernet.localip());
// start ethernet on arduino
startethernet();
}
void loop()
{
tempc = ( 5.0 * analogread(pin) * 100.0) / 1024.0;
string analogpin0 = string(tempc);
// print update response serial monitor
if (client.available())
{
char c = client.read();
serial.print(c);
}
// disconnect thingspeak
if (!client.connected() && lastconnected)
{
serial.println();
serial.println("...disconnected.");
serial.println();
client.stop();
}
// update thingspeak
if(!client.connected() && (millis() - lastconnectiontime > updateinterval))
{
updatethingspeak("field1="+analogpin0);
}
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 thingspeak...");
serial.println();
failedcounter = 0;
}
else
{
failedcounter++;
serial.println("connection thingspeak failed ("+string(failedcounter, dec)+")");
serial.println();
}
}
else
{
failedcounter++;
serial.println("connection thingspeak failed ("+string(failedcounter, dec)+")");
serial.println();
lastconnectiontime = millis();
}
}
void startethernet()
{
client.stop();
serial.println("connecting arduino network...");
serial.println();
delay(1000);
// connect network amd obtain ip address using dhcp
if (ethernet.begin(mac) == 0)
{
serial.println("dhcp failed, reset arduino try again");
serial.println();
}
else {
serial.println("arduino connected network using dhcp");
serial.println();
serial.println("data being uploaded thingspeak server.......");
serial.println();
}
delay(1000);
}
i not make ip static connect thingspeak. thingspeak managed display data. after 3 minutes, thingspeak not display data. procedure wrong?
i have code :
#include <spi.h>
#include <ethernet.h>
int pin = 0; // analog pin
int tempc = 0,tempf=0; // temperature variables
int samples[8]; // variables make better precision
int maxi = -100,mini = 100; // start max/min temperature
int i;
// local network settings
byte mac[] = { 0xd4, 0xa8, 0xe2, 0xfe, 0xa0, 0xa1 }; // must unique on local network
byte ip[] = { 192,168,0,230 }; // must unique on local network
byte gateway[] = { 192,168,0,1};
byte subnet[] = { 255, 255, 255, 0 };
// thingspeak settings
char thingspeakaddress[] = "api.thingspeak.com";
string writeapikey = "c09ircihkmpf19hp"; // write api key thingspeak channel
const int updateinterval = 10000; // time interval in milliseconds update thingspeak
// variable setup
long lastconnectiontime = 0;
boolean lastconnected = false;
int failedcounter = 0;
// initialize arduino ethernet client
ethernetclient client;
void setup()
{
serial.begin(9600);
ethernet.begin(mac, ip, gateway, subnet);
delay(1000);
serial.print("ethernet shield ip is : ");
serial.println(ethernet.localip());
// start ethernet on arduino
startethernet();
}
void loop()
{
tempc = ( 5.0 * analogread(pin) * 100.0) / 1024.0;
string analogpin0 = string(tempc);
// print update response serial monitor
if (client.available())
{
char c = client.read();
serial.print(c);
}
// disconnect thingspeak
if (!client.connected() && lastconnected)
{
serial.println();
serial.println("...disconnected.");
serial.println();
client.stop();
}
// update thingspeak
if(!client.connected() && (millis() - lastconnectiontime > updateinterval))
{
updatethingspeak("field1="+analogpin0);
}
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 thingspeak...");
serial.println();
failedcounter = 0;
}
else
{
failedcounter++;
serial.println("connection thingspeak failed ("+string(failedcounter, dec)+")");
serial.println();
}
}
else
{
failedcounter++;
serial.println("connection thingspeak failed ("+string(failedcounter, dec)+")");
serial.println();
lastconnectiontime = millis();
}
}
void startethernet()
{
client.stop();
serial.println("connecting arduino network...");
serial.println();
delay(1000);
// connect network amd obtain ip address using dhcp
if (ethernet.begin(mac) == 0)
{
serial.println("dhcp failed, reset arduino try again");
serial.println();
}
else {
serial.println("arduino connected network using dhcp");
serial.println();
serial.println("data being uploaded thingspeak server.......");
serial.println();
}
delay(1000);
}
does program produce error messages when data isnt sent thingspeak?
suggest add code read response in case gives clue. i didnt see client.stop() after send either.
suggest add code read response in case gives clue. i didnt see client.stop() after send either.
code: [select]
client.print("content-length: ");
client.print(tsdata.length());
client.print("\n\n");
client.println(tsdata); // change println
// add print out response
while (client.available()) {
char c = client.read();
serial.print(c);
}
Arduino Forum > Topics > Home Automation and Networked Objects > Connected arduino with thingspeak (simple)
arduino
Comments
Post a Comment