From 6cff36ac5e85c74bcb45cc53491ad69d64520b36 Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Fri, 31 May 2013 13:27:01 +0200 Subject: Updated XivelyClient example --- .../Bridge/examples/XivelyClient/XivelyClient.ino | 90 +++++++++++----------- 1 file changed, 44 insertions(+), 46 deletions(-) (limited to 'libraries/Bridge/examples') diff --git a/libraries/Bridge/examples/XivelyClient/XivelyClient.ino b/libraries/Bridge/examples/XivelyClient/XivelyClient.ino index ab1c8bc..67079de 100644 --- a/libraries/Bridge/examples/XivelyClient/XivelyClient.ino +++ b/libraries/Bridge/examples/XivelyClient/XivelyClient.ino @@ -1,16 +1,13 @@ - /* Xively sensor client with Strings This sketch connects an analog sensor to Xively, - using an Arduino Yun. + using an Arduino Yún. - created 15 March 2010 + created 15 March 2010 updated 27 May 2013 by Tom Igoe - NOT CURRENTLY WORKING as of Arduino 1.5.3 27 May 2013 - */ // include all Libraries needed: @@ -25,87 +22,88 @@ #define APIKEY "foo" // replace your pachube api key here #define FEEDID 0000 // replace your feed ID #define USERAGENT "my-project" // user agent is the project name - */ + */ // set up net client info: -boolean lastConnected = false; // state of the connection last time through the main loop -const unsigned long postingInterval = 60000; //delay between updates to Pachube.com +const unsigned long postingInterval = 60000; //delay between updates to xively.com unsigned long lastRequest = 0; // when you last made a request String dataString = ""; -Process xively; void setup() { // start serial port: - Serial.begin(9600); Bridge.begin(); - delay(2000); + Console.begin(); - while(!Serial); // wait for Serial Monitor to open - Serial.println("Xively client"); + while(!Console); // wait for Network Console to open + Console.println("Xively client"); - // reserve space for dataString: - dataString.reserve(100); + // Do a first update immediatly + updateData(); sendData(); + lastRequest = millis(); } void loop() { // get a timestamp so you can calculate reading and sending intervals: long now = millis(); + // if the sending interval has passed since your + // last connection, then connect again and send data: + if (now - lastRequest >= postingInterval) { + updateData(); + sendData(); + lastRequest = now; + } +} + +void updateData() { // convert the readings to a String to send it: - dataString = "temp,"; + dataString = "Temperature,"; dataString += random(10) + 20; // add pressure: dataString += "\nPressure,"; dataString += random(5) + 100; - - // if there's incoming data from the net connection, - // send it out the serial port: - if (xively.available()>0) { - char c = xively.read(); - Serial.write(c); - } - - - // if you're not connected, and the sending interval has passed since - // your last connection, then connect again and send data: - if(now - lastRequest >= postingInterval) { - sendData(); - lastRequest = now; - } } // this method makes a HTTP connection to the server: void sendData() { - Serial.println("Sending data"); - dataString = "--data \'" + dataString; - dataString += "\'"; - // form the string for the API header parameter: - String apiString = "--header \"X-ApiKey: "; + String apiString = "X-ApiKey: "; apiString += APIKEY; - apiString += "\""; // form the string for the URL parameter: - String url = " \"https://api.xively.com/v2/feeds/"; + String url = "https://api.xively.com/v2/feeds/"; url += FEEDID; - url += ".csv\""; - - // send the HTTP PUT request: + url += ".csv"; + + // Send the HTTP PUT request + + // Is better to declare the Process here, so when the + // sendData function finishes the resources are immediatly + // released. Declaring it global works too, BTW. + Process xively; + Console.print("\n\nSending data... "); xively.begin("curl"); xively.addParameter("-k"); - xively.addParameter("--request PUT"); + xively.addParameter("--request"); + xively.addParameter("PUT"); + xively.addParameter("--data"); xively.addParameter(dataString); + xively.addParameter("--header"); xively.addParameter(apiString); xively.addParameter(url); xively.run(); -} - - - + Console.println("done!"); + // If there's incoming data from the net connection, + // send it out the Console: + while (xively.available()>0) { + char c = xively.read(); + Console.write(c); + } +} -- cgit v1.2.3-18-g5258