diff options
| author | Cristian Maglie <c.maglie@bug.st> | 2012-05-21 01:56:06 +0200 | 
|---|---|---|
| committer | Cristian Maglie <c.maglie@bug.st> | 2012-05-22 11:23:47 +0200 | 
| commit | 3786e337e0211ca1ef94b37b03e891adfb3b5f9a (patch) | |
| tree | dd7f8f6fd396243460ec22da89bfbd71d552f484 /libraries/Ethernet/examples/PachubeClient | |
| parent | 324023a67afd1691f12ead4388d7cdf1a9d1a6ef (diff) | |
| parent | 9a8976ce56bcdb70815dd58c1764d9e5c3b6fe95 (diff) | |
Pre-merge upstream Arduino
Diffstat (limited to 'libraries/Ethernet/examples/PachubeClient')
| -rw-r--r-- | libraries/Ethernet/examples/PachubeClient/PachubeClient.ino | 78 | 
1 files changed, 46 insertions, 32 deletions
| diff --git a/libraries/Ethernet/examples/PachubeClient/PachubeClient.ino b/libraries/Ethernet/examples/PachubeClient/PachubeClient.ino index a169443..4d4290d 100644 --- a/libraries/Ethernet/examples/PachubeClient/PachubeClient.ino +++ b/libraries/Ethernet/examples/PachubeClient/PachubeClient.ino @@ -6,15 +6,20 @@   the Adafruit Ethernet shield, either one will work, as long as it's got   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:   * Analog sensor attached to analog in 0   * Ethernet shield attached to pins 10, 11, 12, 13   created 15 March 2010 - updated 26 Oct 2011 - by Tom Igoe + updated 16 Mar 2012 + 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.   */ @@ -22,6 +27,10 @@  #include <SPI.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.  // Newer Ethernet shields have a MAC address printed on a sticker on the shield  // fill in your address here: @@ -34,26 +43,22 @@ IPAddress ip(10,0,1,20);  // initialize the library instance:  EthernetClient client; -long lastConnectionTime = 0;        // last time you connected to the server, in milliseconds -boolean lastConnected = false;      // state of the connection last time through the main loop -const int postingInterval = 10000;  //delay between updates to Pachube.com +// if you don't want to use DNS (and reduce your sketch size) +// use the numeric IP instead of the name for the server: +IPAddress server(216,52,233,122);      // numeric IP for api.pachube.com +//char server[] = "api.pachube.com";   // name address for pachube API + +unsigned long lastConnectionTime = 0;          // last time you connected to the server, in milliseconds +boolean lastConnected = false;                 // state of the connection last time through the main loop +const unsigned long postingInterval = 10*1000; //delay between updates to Pachube.com  void setup() {    // start serial port:    Serial.begin(9600); -  // start the Ethernet connection: + // start the Ethernet connection:    if (Ethernet.begin(mac) == 0) {      Serial.println("Failed to configure Ethernet using DHCP"); -    // no point in carrying on, so do nothing forevermore: -    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: +    // DHCP failed, so use a fixed IP address:      Ethernet.begin(mac, ip);    }  } @@ -91,34 +96,43 @@ void loop() {  // this method makes a HTTP connection to the server:  void sendData(int thisData) {    // if there's a successful connection: -  if (client.connect("www.pachube.com", 80)) { +  if (client.connect(server, 80)) {      Serial.println("connecting..."); -    // send the HTTP PUT request.  -    // fill in your feed address here: -    client.print("PUT /api/YOUR_FEED_HERE.csv HTTP/1.1\n"); -    client.print("Host: www.pachube.com\n"); -    // fill in your Pachube API key here: -    client.print("X-PachubeApiKey: YOUR_KEY_HERE\n"); +    // send the HTTP PUT request: +    client.print("PUT /v2/feeds/"); +    client.print(FEEDID); +    client.println(".csv HTTP/1.1"); +    client.println("Host: api.pachube.com"); +    client.print("X-PachubeApiKey: "); +    client.println(APIKEY); +    client.print("User-Agent: "); +    client.println(USERAGENT);      client.print("Content-Length: ");      // calculate the length of the sensor reading in bytes: -    int thisLength = getLength(thisData); -    client.println(thisLength, DEC); +    // 8 bytes for "sensor1," + number of digits of the data: +    int thisLength = 8 + getLength(thisData); +    client.println(thisLength);      // last pieces of the HTTP PUT request: -    client.print("Content-Type: text/csv\n"); -    client.println("Connection: close\n"); +    client.println("Content-Type: text/csv"); +    client.println("Connection: close"); +    client.println();      // here's the actual content of the PUT request: -    client.println(thisData, DEC); - -    // note the time that the connection was made: -    lastConnectionTime = millis(); +    client.print("sensor1,"); +    client.println(thisData); +      }     else {      // if you couldn't make a connection:      Serial.println("connection failed"); +    Serial.println(); +    Serial.println("disconnecting."); +    client.stop();    } +   // note the time that the connection was made or attempted: +  lastConnectionTime = millis();  } | 
