fatih nar / Mbed 2 deprecated Avnet-StarterKit-Writing2InfluxDB

Dependencies:   FXOS8700CQ mbed

Fork of AvnetATT_shape_hackathon by Demo Software for Avnet+AT&T IoT kit.

Revision:
35:4a5d307b9692
Parent:
34:029e07b67a41
Child:
36:515021fabf15
--- a/main.cpp	Sat Jul 23 01:10:53 2016 +0000
+++ b/main.cpp	Tue Oct 10 13:21:06 2017 +0000
@@ -6,7 +6,6 @@
 #include "config_me.h"
 #include "wnc_control.h"
 #include "sensors.h"
-
 #include "hardware.h"
 I2C i2c(PTC11, PTC10);    //SDA, SCL -- define the I2C pins being used
 
@@ -39,7 +38,7 @@
 int mdm_dbgmask = MDM_DBG_OFF;
 
 Serial         pc(USBTX, USBRX);
-SerialBuffered mdm(PTD3, PTD2, 128);
+SerialBuffered mdm(PTD3, PTD2, 512);
 DigitalOut led_green(LED_GREEN);
 DigitalOut led_red(LED_RED);
 DigitalOut led_blue(LED_BLUE);
@@ -61,7 +60,13 @@
 #define MDM_OK                                  0
 #define MDM_ERR_TIMEOUT                         -1
 
-#define MAX_AT_RSP_LEN                          255
+#define MAX_AT_RSP_LEN                          511
+
+//Periodic timer
+Ticker OneMsTicker;
+volatile bool bTimerExpiredFlag = false;
+int OneMsTicks = 0;
+int iTimer1Interval_ms = SENSOR_UPDATE_INTERVAL_MS;
 
 ssize_t mdm_getline(char *buff, size_t size, int timeout_ms) {
     int cin = -1;
@@ -275,39 +280,38 @@
     .Humidity_Si7020    = "0"
 };
 
-void GenerateModemString(char * modem_string)
+void GenerateModemString(char * modem_string0, char * modem_string1, char * modem_string2, char * modem_string3)
 {
     switch(iSensorsToReport)
     {
         case TEMP_HUMIDITY_ONLY:
         {
-            sprintf(modem_string, "GET %s%s?serial=%s&temp=%s&humidity=%s %s%s\r\n\r\n", FLOW_BASE_URL, FLOW_INPUT_NAME, FLOW_DEVICE_NAME, SENSOR_DATA.Temperature, SENSOR_DATA.Humidity, FLOW_URL_TYPE, MY_SERVER_URL);
+            int mimo_length;
+            sprintf(modem_string0, "POST %s%s?db=iot_weather%s%s:%s\r\nAccept: */*\r\n", FLOW_BASE_URL, FLOW_INPUT_NAME, FLOW_URL_TYPE, MY_SERVER_URL, MY_PORT_STR);
+            sprintf(modem_string2, "Content-Type: application/x-www-form-urlencoded\r\n\r\n");
+            mimo_length = sprintf(modem_string3, "datapoints,device=%s temperature=%s,humidity=%s", FLOW_DEVICE_NAME, SENSOR_DATA.Temperature, SENSOR_DATA.Humidity);
+            sprintf(modem_string1, "Content-Length: %d\r\n", mimo_length);
             break;
         }
         case TEMP_HUMIDITY_ACCELEROMETER:
         {
-            sprintf(modem_string, "GET %s%s?serial=%s&temp=%s&humidity=%s&accelX=%s&accelY=%s&accelZ=%s %s%s\r\n\r\n", FLOW_BASE_URL, FLOW_INPUT_NAME, FLOW_DEVICE_NAME, SENSOR_DATA.Temperature, SENSOR_DATA.Humidity, SENSOR_DATA.AccelX,SENSOR_DATA.AccelY,SENSOR_DATA.AccelZ, FLOW_URL_TYPE, MY_SERVER_URL);
+            sprintf(modem_string0, "GET %s%s?serial=%s&temp=%s&humidity=%s&accelX=%s&accelY=%s&accelZ=%s %s%s\r\n\r\n", FLOW_BASE_URL, FLOW_INPUT_NAME, FLOW_DEVICE_NAME, SENSOR_DATA.Temperature, SENSOR_DATA.Humidity, SENSOR_DATA.AccelX,SENSOR_DATA.AccelY,SENSOR_DATA.AccelZ, FLOW_URL_TYPE, MY_SERVER_URL);
             break;
         }
         case TEMP_HUMIDITY_ACCELEROMETER_PMODSENSORS:
         {
-            sprintf(modem_string, "GET %s%s?serial=%s&temp=%s&humidity=%s&accelX=%s&accelY=%s&accelZ=%s&proximity=%s&light_uv=%s&light_vis=%s&light_ir=%s %s%s\r\n\r\n", FLOW_BASE_URL, FLOW_INPUT_NAME, FLOW_DEVICE_NAME, SENSOR_DATA.Temperature, SENSOR_DATA.Humidity, SENSOR_DATA.AccelX,SENSOR_DATA.AccelY,SENSOR_DATA.AccelZ, SENSOR_DATA.Proximity, SENSOR_DATA.UVindex, SENSOR_DATA.AmbientLightVis, SENSOR_DATA.AmbientLightIr, FLOW_URL_TYPE, MY_SERVER_URL);
+            sprintf(modem_string0, "GET %s%s?serial=%s&temp=%s&humidity=%s&accelX=%s&accelY=%s&accelZ=%s&proximity=%s&light_uv=%s&light_vis=%s&light_ir=%s %s%s\r\n\r\n", FLOW_BASE_URL, FLOW_INPUT_NAME, FLOW_DEVICE_NAME, SENSOR_DATA.Temperature, SENSOR_DATA.Humidity, SENSOR_DATA.AccelX,SENSOR_DATA.AccelY,SENSOR_DATA.AccelZ, SENSOR_DATA.Proximity, SENSOR_DATA.UVindex, SENSOR_DATA.AmbientLightVis, SENSOR_DATA.AmbientLightIr, FLOW_URL_TYPE, MY_SERVER_URL);
             break;
         }
         default:
         {
-            sprintf(modem_string, "Invalid sensor selected\r\n\r\n");
+            sprintf(modem_string0, "Invalid sensor selected\r\n\r\n");
             break;
         }
     } //switch(iSensorsToReport)
 } //GenerateModemString        
             
             
-//Periodic timer
-Ticker OneMsTicker;
-volatile bool bTimerExpiredFlag = false;
-int OneMsTicks = 0;
-int iTimer1Interval_ms = 1000;
 //********************************************************************************************************************************************
 //* Periodic 1ms timer tick
 //********************************************************************************************************************************************
@@ -473,8 +477,6 @@
     //Create a 1ms timer tick function:
     OneMsTicker.attach(OneMsFunction, 0.001f) ;
 
-    iTimer1Interval_ms = SENSOR_UPDATE_INTERVAL_MS;
-
     // Open the socket (connect to the server)
     sockopen_mdm();
 
@@ -490,10 +492,19 @@
             sprintf(SENSOR_DATA.Temperature, "%0.2f", CTOF(hts221.readTemperature()));
             sprintf(SENSOR_DATA.Humidity, "%02d", hts221.readHumidity());
             read_sensors(); //read available external sensors from a PMOD and the on-board motion sensor
-            char modem_string[512];
-            GenerateModemString(&modem_string[0]);
-            printf(BLU "Sending to modem : %s" DEF "\n", modem_string); 
-            sockwrite_mdm(modem_string);
+            char msg_part0[64];
+            char msg_part1[64];
+            char msg_part2[64];
+            char msg_part3[64];
+            GenerateModemString(&msg_part0[0],&msg_part1[0],&msg_part2[0],&msg_part3[0]);
+            char * httprequest = new char[256];
+            std::strcpy(httprequest,msg_part0);
+            std::strcat(httprequest,msg_part1);
+            std::strcat(httprequest,msg_part2);
+            std::strcat(httprequest,msg_part3);
+            sockwrite_mdm(httprequest);
+            printf(BLU "Sending to modem : %s" DEF "\n", httprequest); 
+            delete [] httprequest;
             sockread_mdm(&MySocketData, 1024, 20);
             
             // If any non-zero response from server, make it GREEN one-time