Merge branch 'master' of github.com:arduino/Arduino into LUFA_bootloader

This commit is contained in:
Zach Eveland 2012-02-27 21:21:34 -05:00
commit d10b5da4f6
2 changed files with 71 additions and 39 deletions

View File

@ -6,15 +6,20 @@
the Adafruit Ethernet shield, either one will work, as long as it's got the Adafruit Ethernet shield, either one will work, as long as it's got
a Wiznet Ethernet module on board. a Wiznet Ethernet module on board.
This example has been updated to use version 2.0 of the Pachube.com API.
To make it work, create a feed with a datastream, and give it the ID
sensor1. Or change the code below to match your feed.
Circuit: Circuit:
* Analog sensor attached to analog in 0 * Analog sensor attached to analog in 0
* Ethernet shield attached to pins 10, 11, 12, 13 * Ethernet shield attached to pins 10, 11, 12, 13
created 15 March 2010 created 15 March 2010
updated 26 Oct 2011 updated 27 Feb 2012
by Tom Igoe by Tom Igoe with input from Usman Haque and Joe Saavedra
http://www.tigoe.net/pcomp/code/category/arduinowiring/873 http://arduino.cc/en/Tutorial/PachubeClient
This code is in the public domain. This code is in the public domain.
*/ */
@ -22,6 +27,12 @@
#include <SPI.h> #include <SPI.h>
#include <Ethernet.h> #include <Ethernet.h>
#define APIKEY "YOUR API KEY GOES HERE" // replace your pachube api key here
#define FEEDID 00000 // replace your feed ID
#define USERAGENT "My Project" // user agent is the project name
// assign a MAC address for the ethernet controller. // assign a MAC address for the ethernet controller.
// Newer Ethernet shields have a MAC address printed on a sticker on the shield // Newer Ethernet shields have a MAC address printed on a sticker on the shield
// fill in your address here: // fill in your address here:
@ -44,16 +55,7 @@ void setup() {
// start the Ethernet connection: // start the Ethernet connection:
if (Ethernet.begin(mac) == 0) { if (Ethernet.begin(mac) == 0) {
Serial.println("Failed to configure Ethernet using DHCP"); Serial.println("Failed to configure Ethernet using DHCP");
// no point in carrying on, so do nothing forevermore: // DHCP failed, so use a fixed IP address:
for(;;)
;
}
// give the ethernet module time to boot up:
delay(1000);
// start the Ethernet connection:
if (Ethernet.begin(mac) == 0) {
Serial.println("Failed to configure Ethernet using DHCP");
// Configure manually:
Ethernet.begin(mac, ip); Ethernet.begin(mac, ip);
} }
} }
@ -93,24 +95,29 @@ void sendData(int thisData) {
// if there's a successful connection: // if there's a successful connection:
if (client.connect("www.pachube.com", 80)) { if (client.connect("www.pachube.com", 80)) {
Serial.println("connecting..."); Serial.println("connecting...");
// send the HTTP PUT request. // send the HTTP PUT request:
// fill in your feed address here: client.print("PUT /v2/feeds/");
client.print("PUT /api/YOUR_FEED_HERE.csv HTTP/1.1\n"); client.print(FEEDID);
client.print("Host: www.pachube.com\n"); client.println(".csv HTTP/1.1");
// fill in your Pachube API key here: client.print("Host: api.pachube.com\n");
client.print("X-PachubeApiKey: YOUR_KEY_HERE\n"); client.print("X-PachubeApiKey: ");
client.println(APIKEY);
client.print("User-Agent: ");
client.println(USERAGENT);
client.print("Content-Length: "); client.print("Content-Length: ");
// calculate the length of the sensor reading in bytes: // calculate the length of the sensor reading in bytes:
int thisLength = getLength(thisData); // 8 bytes for "sensor1," + number of digits of the data:
client.println(thisLength, DEC); int thisLength = 8 + getLength(thisData);
client.println(thisLength);
// last pieces of the HTTP PUT request: // last pieces of the HTTP PUT request:
client.print("Content-Type: text/csv\n"); client.print("Content-Type: text/csv\n");
client.println("Connection: close\n"); client.println("Connection: close\n");
// here's the actual content of the PUT request: // here's the actual content of the PUT request:
client.println(thisData, DEC); client.print("sensor1,");
client.println(thisData);
// note the time that the connection was made: // note the time that the connection was made:
lastConnectionTime = millis(); lastConnectionTime = millis();
@ -118,6 +125,10 @@ void sendData(int thisData) {
else { else {
// if you couldn't make a connection: // if you couldn't make a connection:
Serial.println("connection failed"); Serial.println("connection failed");
Serial.println();
Serial.println("disconnecting.");
client.stop();
lastConnected = client.connected();
} }
} }

View File

@ -6,6 +6,10 @@
the Adafruit Ethernet shield, either one will work, as long as it's got the Adafruit Ethernet shield, either one will work, as long as it's got
a Wiznet Ethernet module on board. a Wiznet Ethernet module on board.
This example has been updated to use version 2.0 of the Pachube.com API.
To make it work, create a feed with two datastreams, and give them the IDs
sensor1 and sensor2. Or change the code below to match your feed.
This example uses the String library, which is part of the Arduino core from This example uses the String library, which is part of the Arduino core from
version 0019. version 0019.
@ -14,9 +18,10 @@
* Ethernet shield attached to pins 10, 11, 12, 13 * Ethernet shield attached to pins 10, 11, 12, 13
created 15 March 2010 created 15 March 2010
updated 26 Oct 2011 updated 27 Feb 2012
by Tom Igoe by Tom Igoe with input from Usman Haque and Joe Saavedra
http://arduino.cc/en/Tutorial/PachubeClientString
This code is in the public domain. This code is in the public domain.
*/ */
@ -24,13 +29,18 @@
#include <SPI.h> #include <SPI.h>
#include <Ethernet.h> #include <Ethernet.h>
#define APIKEY "YOUR API KEY GOES HERE" // replace your pachube api key here
#define FEEDID 00000 // replace your feed ID
#define USERAGENT "My Project" // user agent is the project name
// assign a MAC address for the ethernet controller. // assign a MAC address for the ethernet controller.
// fill in your address here: // fill in your address here:
byte mac[] = { byte mac[] = {
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
// fill in an available IP address on your network here, // fill in an available IP address on your network here,
// for manual configuration: // for manual configuration:
IPAddress ip(10,0,1,20); IPAddress ip(10,0,0,20);
// initialize the library instance: // initialize the library instance:
EthernetClient client; EthernetClient client;
@ -47,7 +57,7 @@ void setup() {
// start the Ethernet connection: // start the Ethernet connection:
if (Ethernet.begin(mac) == 0) { if (Ethernet.begin(mac) == 0) {
Serial.println("Failed to configure Ethernet using DHCP"); Serial.println("Failed to configure Ethernet using DHCP");
// Configure manually: // DHCP failed, so use a fixed IP address:
Ethernet.begin(mac, ip); Ethernet.begin(mac, ip);
} }
} }
@ -56,13 +66,15 @@ void loop() {
// read the analog sensor: // read the analog sensor:
int sensorReading = analogRead(A0); int sensorReading = analogRead(A0);
// convert the data to a String to send it: // convert the data to a String to send it:
String dataString = String(sensorReading);
String dataString = "sensor1,";
dataString += sensorReading;
// you can append multiple readings to this String if your // you can append multiple readings to this String if your
// pachube feed is set up to handle multiple values: // pachube feed is set up to handle multiple values:
int otherSensorReading = analogRead(A1); int otherSensorReading = analogRead(A1);
dataString += ","; dataString += "\nsensor2,";
dataString += String(otherSensorReading); dataString += otherSensorReading;
// if there's incoming data from the net connection. // if there's incoming data from the net connection.
// send it out the serial port. This is for debugging // send it out the serial port. This is for debugging
@ -93,14 +105,17 @@ void loop() {
// this method makes a HTTP connection to the server: // this method makes a HTTP connection to the server:
void sendData(String thisData) { void sendData(String thisData) {
// if there's a successful connection: // if there's a successful connection:
if (client.connect("www.pachube.com", 80)) { if (client.connect("api.pachube.com", 80)) {
Serial.println("connecting..."); Serial.println("connecting...");
// send the HTTP PUT request. // send the HTTP PUT request:
// fill in your feed address here: client.print("PUT /v2/feeds/");
client.print("PUT /api/YOUR_FEED_HERE.csv HTTP/1.1\n"); client.print(FEEDID);
client.print("Host: www.pachube.com\n"); client.println(".csv HTTP/1.1");
// fill in your Pachube API key here: client.print("Host: api.pachube.com\n");
client.print("X-PachubeApiKey: YOUR_KEY_HERE\n"); client.print("X-PachubeApiKey: ");
client.println(APIKEY);
client.print("User-Agent: ");
client.println(USERAGENT);
client.print("Content-Length: "); client.print("Content-Length: ");
client.println(thisData.length(), DEC); client.println(thisData.length(), DEC);
@ -117,5 +132,11 @@ void sendData(String thisData) {
else { else {
// if you couldn't make a connection: // if you couldn't make a connection:
Serial.println("connection failed"); Serial.println("connection failed");
Serial.println();
Serial.println("disconnecting.");
client.stop();
lastConnected = client.connected();
} }
} }