m2x-demo-all will read the temperature from the Application Board, then SEND the value to the specified M2X feed/stream, RETRIEVE the value back, UPDATE the location of the feed, and then RETRIEVE the location. The script will wait 30 seconds and then loop. Make sure to update the feedId and m2xKey values with values for your account.

Dependencies:   EthernetInterface LM75B M2XStreamClient jsonlite mbed-rtos mbed

Revision:
0:38a7a8cae773
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Fri Feb 21 21:12:15 2014 +0000
@@ -0,0 +1,75 @@
+#include <jsonlite.h>
+#include "M2XStreamClient.h"
+
+#include "mbed.h"
+#include "EthernetInterface.h"
+#include "LM75B.h"  //I2C Temperature Sensor
+
+char feedId[] = "<feed id>"; // Feed you want to post to
+char m2xKey[] = "<m2x api key>"; // Your M2X access key
+char streamName[] = "<stream name>"; // Stream you want to post to
+
+char name[] = "<location name>"; // Name of current location of datasource
+double latitude = 33.007872;
+double longitude = -96.751614; // You can also read those values from a GPS
+double elevation = 697.00;
+
+Client client;
+M2XStreamClient m2xClient(&client, m2xKey);
+
+EthernetInterface eth;
+LM75B tmp(p28,p27);         // I2C Temperature Sensor
+
+void on_data_point_found(const char* at, const char* value, int index, void* context) {
+  printf("Found a data point, index: %d\r\n", index);
+  printf("At: %s Value: %s\r\n", at, value);
+}
+
+void on_location_found(const char* name,
+                       double latitude,
+                       double longitude,
+                       double elevation,
+                       const char* timestamp,
+                       int index,
+                       void* context) {
+  printf("Found a location, index: %d\r\n", index);
+  printf("Name: %s  Latitude: %lf  Longitude: %lf\r\n", name, latitude, longitude);
+  printf("Elevation: %lf  Timestamp: %s\r\n", elevation, timestamp);
+}
+
+int main() {
+  eth.init();
+  eth.connect();
+  printf("IP Address: %s\r\n", eth.getIPAddress());
+
+  char amb_temp[6];
+  
+  while (true) {
+  
+    // read temp
+    sprintf(amb_temp, "%0.2f", tmp.read());
+    
+    // post temperature
+    int response = m2xClient.post(feedId, streamName, amb_temp);
+    printf("Post response code: %d\r\n", response);
+    if (response == -1) while (true) ;
+    
+    // read temperature
+    response = m2xClient.fetchValues(feedId, streamName, on_data_point_found, NULL);
+    printf("Fetch response code: %d\r\n", response);
+    if (response == -1) while (true) ;
+    
+    // update location
+    response = m2xClient.updateLocation(feedId, name, latitude, longitude, elevation);
+    printf("updateLocation response code: %d\r\n", response);
+    if (response == -1) while (true) ;
+    
+    // read location
+    response = m2xClient.readLocation(feedId, on_location_found, NULL);
+    printf("readLocation response code: %d\r\n", response);
+    if (response == -1) while (true) ;
+
+    // wait 60 secs and then loop
+    delay(60000);
+  }
+}
\ No newline at end of file