aboutsummaryrefslogtreecommitdiff
path: root/libraries/Bridge/examples/XivelyClient
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/Bridge/examples/XivelyClient')
-rw-r--r--libraries/Bridge/examples/XivelyClient/XivelyClient.ino90
1 files changed, 44 insertions, 46 deletions
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);
+ }
+}