Sample program for using Pubnub on AT&T IoT Starter Kit (which has the WNC modem)
Dependencies: Pubnub_mbed2_sync WNCInterface mbed-rtos mbed
Fork of WNCInterface_M2XMQTTdemo by
main.cpp
- Committer:
- JMF
- Date:
- 2016-10-07
- Revision:
- 5:f9dc2e9e53a8
- Parent:
- 4:c9290723dce9
- Child:
- 6:853f6aac9a9d
File content as of revision 5:f9dc2e9e53a8:
#include "mbed.h" #include "WNCInterface.h" #define DEBUG #define MBED_PLATFORM #define LOOP_DELAY_MS 3000 #include "minimal-mqtt.h" #include "minimal-json.h" #include "M2XMQTTClient.h" #define CRLF "\n\r" //Device ID: 8bcfff8a8514678f0fc6b56cb0f55c87 //Master Key: 3d1f3c0f42a8c541205f706f62c65330 char deviceId[] = "8bcfff8a8514678f0fc6b56cb0f55c87"; // Device Primary API Key char m2xKey[] = "3d1f3c0f42a8c541205f706f62c65330"; // Your M2X Master API Key char name[] = "Wake Forest"; // Name of current location of datasource const char *hstreamName = "humidity"; const char *tstreamName = "temperature"; double latitude = -37.97884; double longitude = -57.54787; // You can also read those values from a GPS double elevation = 15; const char *streamNames[] = { tstreamName, hstreamName }; int streamNum = sizeof(streamNames)/sizeof(const char *); const int counts[] = { 2, 1 }; const char *ats[] = { "2016-09-12T12:12:12.234Z", "2016-09-12T12:12:12.567Z", "2016-09-12T12:12:12.000Z" }; double values[] = { 27.9, 81.2, 16.1 }; Client client; M2XMQTTClient m2xClient(&client, m2xKey); WNCInterface eth; MODSERIAL pc(USBTX,USBRX,256,256); int main() { int response, cnt=1; double tval = 0.9; double hval = 101.0; pc.baud(115200); pc.printf(CRLF CRLF "M2X MQTT Test starting..." CRLF); pc.printf("init() returned 0x%04X" CRLF, eth.init(NULL,&pc)); eth.connect(); pc.printf("IP Address: %s" CRLF, eth.getIPAddress()); eth.doDebug(0); while (true) { tval += 0.1; if( tval > 100.0 ) tval = 0.9; pc.printf("\r\n\r\nSending readings #%d\r\n",cnt++); response = m2xClient.updateStreamValue(deviceId, tstreamName, tval); pc.printf("Sending temperature value: %lf, Response= %d" CRLF, tval, response); if( hval < 2.0 ) hval = 101.0; hval -= 1.0; pc.printf("Sending humidity value: %lf", hval); response = m2xClient.updateStreamValue(deviceId, hstreamName, hval); pc.printf(", Response= %d" CRLF, response); pc.printf("Calling postDeviceUpdates..."); response = m2xClient.postDeviceUpdates(deviceId, streamNum, streamNames, counts, ats, values); pc.printf(" Response = %d" CRLF, response); pc.printf("Calling updateLocation..."); response = m2xClient.updateLocation(deviceId, name, latitude, longitude, elevation); pc.printf(" Response = %d" CRLF, response); elevation++; delay(LOOP_DELAY_MS); } }