Public Repository for IoT demo, leveraging the FRDM-K64F, WNC Cellular Modem, and AT&T M2X platform. Expects GPIO input from a sensor to send a discrete value to M2X.
Dependencies: ConfigFile M2XStreamClient-JMF PinDetect SDFileSystem WNCInterface jsonlite mbed-rtos mbed
Fork of SVP_IoT_M2X_Cellular by
main.cpp
- Committer:
- geekbleek
- Date:
- 2017-02-07
- Revision:
- 4:b9f2193b27cf
- Parent:
- 2:eb0768c06c1b
- Child:
- 5:f03cda4a4cc9
File content as of revision 4:b9f2193b27cf:
// // This file contains an example implementation of M2X using the HTTP interface as the underlying // transport. // #include "mbed.h" #include "WNCInterface.h" #define MBED_PLATFORM #define M2X_ENABLE_READER #include <jsonlite.h> #include "M2XStreamClient.h" #define CRLF "\n\r" char deviceId[] = "3263056a467bc4eacd787bb0af9c1ad6"; // Device you want to post to char m2xKey[] = "0aad274b67c7faa8110769ae9d739033"; // Your M2X API Key or Master API Key const char *hstreamName = "humidity"; const char *tstreamName = "temperature"; const char *streamNames[] = { tstreamName, hstreamName }; char name[] = "Wake Forest"; // Name of current location of datasource int counts[] = { 2, 1 }; const char *ats[] = { "2016-09-09T02:05:14.692Z", "2016-09-09T02:05:14.700Z", "2016-09-09T02:05:14.692Z" }; double values[] = { 10.9, 11.2, 6.1 }; char fromTime[]= "1969-12-31T19:00:01.000Z"; // yyyy-mm-ddTHH:MM:SS.SSSZ char endTime[25]; double latitude = 33.007872; // You could read these values from a GPS but double longitude = -96.751614; // for now, will just hardcode them double elevation = 697.00; DigitalIn mypin(A2); DigitalOut led_green(LED_GREEN); DigitalOut led_red(LED_RED); DigitalOut led_blue(LED_BLUE); WNCInterface eth; Client client; M2XStreamClient m2xClient(&client, m2xKey); TimeService timeService(&m2xClient); MODSERIAL pc(USBTX,USBRX,256,256); void on_data_point_found(const char* at, const char* value, int index, void* context, int type) { pc.printf(">>Found a data point, index: %d type: %d" CRLF, index, type); pc.printf(">>At: %s" CRLF " Value: %s" CRLF, at, value); } void on_command_found(const char* id, const char* name, int index, void *context) { pc.printf(">>Found a command, index: %d" CRLF, index); pc.printf(">>ID: %s\n Name: %s" CRLF, id, name); } void on_location_found(const char* name, double latitude, double longitude, double elevation, const char* timestamp, int index, void* context) { pc.printf(">>Found a location, index: %d" CRLF, index); pc.printf(">>Name: %s" CRLF ">>Latitude: %lf" CRLF ">>Longitude: %lf" CRLF, name, latitude, longitude); pc.printf(">>Elevation: %lf" CRLF ">>Timestamp: %s" CRLF, elevation, timestamp); } //******************************************************************************************************************************************** //* Set the RGB LED's Color //* LED Color 0=Off to 7=White. 3 bits represent BGR (bit0=Red, bit1=Green, bit2=Blue) //******************************************************************************************************************************************** void SetLedColor(unsigned char ucColor) { //Note that when an LED is on, you write a 0 to it: led_red = !(ucColor & 0x1); //bit 0 led_green = !(ucColor & 0x2); //bit 1 led_blue = !(ucColor & 0x4); //bit 2 } //SetLedColor() //int main() { // char timestamp[25]; // int length = 25; // char amb_temp[6]; // char amb_humd[6]; // int response, cnt=1; // double temp=0.00; //we will just increment these 0.01 each time through the loop // double humid=0.00; //we will just increment these 1 each time through the loop wrapping at 100 // // pc.baud(115200); // pc.printf("Start m2x-demo-all by initializng the network" CRLF); // response = eth.init(); // pc.printf("WNC Module %s initialized (%02X)." CRLF, response?"IS":"IS NOT", response); // if( !response ) { // pc.printf(" - - - - - - - ALL DONE - - - - - - - " CRLF); // while(1); // } // // response = eth.connect(); // pc.printf("IP Address: %s " CRLF CRLF, eth.getIPAddress()); // // pc.printf("initialize the M2X time service" CRLF); // if (!m2x_status_is_success(timeService.init())) // pc.printf("Cannot initialize time service!" CRLF); // else { // timeService.getTimestamp(timestamp, &length); // pc.printf("Current timestamp: %s" CRLF, timestamp); // strcpy(endTime,timestamp); // } // //// pc.printf("Now delete all existing values" CRLF); //// // Delete values //// pc.printf("Delete humidity values..." CRLF); //// response = m2xClient.deleteValues(deviceId,hstreamName, fromTime, endTime); //// pc.printf("Delete response code: %d" CRLF, response); //// //// pc.printf("Delete temp values..." CRLF); //// response = m2xClient.deleteValues(deviceId,tstreamName, fromTime, endTime); //// pc.printf("Delete response code: %d" CRLF, response); //// //// pc.printf("Delete location values..." CRLF); //// response = m2xClient.deleteLocations(deviceId, fromTime, endTime); //// pc.printf("Delete response code: %d" CRLF, response); // // pc.printf("Query for possible commands using this device..." CRLF); // response = m2xClient.listCommands(deviceId, on_command_found, NULL); // pc.printf("listCommands response code: %d" CRLF, response); // // // // // while (true) { // // read temp -- for now, just use a fixed temp, but will need to read the HTS221 // // and put it into a 6 byte string formatted as "%0.2f" // sprintf(amb_temp,"%0.2f",temp); // sprintf(amb_humd,"%0.2f",humid); // temp += .01; // humid += 1.0; // humid = fmod(humid,100.0); // pc.printf("cnt=%d\r\n",cnt++); // // // post the temp value // //pc.printf("Post updateStreamValue (temp)..." CRLF); //// response = m2xClient.updateStreamValue(deviceId, "water-sensor", temp); //// pc.printf("Post response code: %d" CRLF, response); // // timeService.getTimestamp(timestamp, &length); // pc.printf("Thats all folks, got to wait 5 seconds... (%s)" CRLF CRLF CRLF, timestamp); // // // wait 5 secs and then loop // delay(5000); // // // } //} int main() { int response, cnt=1; pc.baud(115200); pc.printf("Start m2x-demo-all by initializng the network" CRLF); response = eth.init(); pc.printf("WNC Module %s initialized (%02X)." CRLF, response?"IS":"IS NOT", response); if( !response ) { pc.printf(" - - - - - - - ALL DONE - - - - - - - " CRLF); while(1); } // check mypin object is initialized and connected to a pin if(mypin.is_connected()) { pc.printf("mypin is connected and initialized! \n\r"); } // Optional: set mode as PullUp/PullDown/PullNone/OpenDrain mypin.mode(PullUp); while(true) { pc.printf("mypin has value : %d \n\r", mypin.read()); if (mypin) { SetLedColor(1) } if (!mypin) { SetLedColor(4) } wait(0.25); } }