iot_water_monitor_v2

Dependencies:   easy-connect-v16 Watchdog FP MQTTPacket RecordType-v-16 watersenor_and_temp_code

Revision:
57:898fcb6692cd
Parent:
56:3729bedac5ab
--- a/Application/main.cpp	Fri Mar 30 10:55:27 2018 +0000
+++ b/Application/main.cpp	Tue Apr 03 17:03:01 2018 +0000
@@ -16,6 +16,7 @@
   * version 2.9  	03-22-2018: Watchdog worked. Some hardware bugs found
   * version 2.9.7  	03-29-2018: Try to upload 1 more time if upload fail
   * version 2.9.7  	03-30-2018
+  * version 2.9.8  	03-04-2018  Minor changes. Time frame updated to IBM Watson every 60s
   */
 
 /***************************************************************
@@ -45,6 +46,7 @@
 #define CALIB_STATE_CHANGE_PERIOD_S         5
 #define ALARM_TIME_ODD                      20
 
+#define SEND_TIME_INTERVAL                  60  /* Send Time frame every 60s */
 /***************************************************************
  * Variables
  ***************************************************************/
@@ -231,17 +233,23 @@
    	
    	lastRead = 0;
    	pc.printf("\r\nViKa IoT Water Monitor mbed Application\r\n");     
-   	pc.printf("\r\nconnecting to AP\r\n");            
+   	pc.printf("\r\nconnecting to AP\r\n");   
+   	         
+	wd.Configure(24.8);
+	wd.Service();
 	
    	NetworkInterface* network = easy_connect(true);
    	if (!network) {
        	printf ("Error easy_connect\n\r");
        	wifiConnected = false;
    	} 
+   	wd.Service();
 	printf ("ATTEMPT CONNECT\n\r");
 	MQTTNetwork mqttNetwork(network);	
 	MQTT::Client<MQTTNetwork, Countdown, MQTT_MAX_PACKET_SIZE> client(mqttNetwork);	
+	wd.Service();
 	MQTT_AttemptConnect(&client, &mqttNetwork, network, DataStruct);
+	wd.Service();
 	if (connack_rc == MQTT_NOT_AUTHORIZED || connack_rc == MQTT_BAD_USERNAME_OR_PASSWORD) {
 		printf ("---ERROR line : %d, error type %d\n\r", __LINE__, connack_rc);
 	    wifiConnected = false;
@@ -251,7 +259,7 @@
 	if (wd.WatchdogCausedReset()) {
 		printf("Watchdog caused reset.\r\n");
 	}
-	wd.Configure(24.8);
+	wd.Service();
 	DisplayDO.attach(&SensorRun, PROCESS_SENSOR_VALUE_S);
 	ReadAllFlashValues();
 	SENSOR_ReadDoCharacteristicValues();
@@ -277,11 +285,28 @@
 					if (MQTT_PublishAll(&client, seconds, SENSOR_VALUE, DataStruct) != MQTT::SUCCESS) {
 						wait(2);
 						MQTT_PublishAll(&client, seconds, SENSOR_VALUE, DataStruct);
+						wait(2);
+						uint32_t uploadTimeFramePeriod = SEND_TIME_INTERVAL;
+						if (MQTT_PublishDeviceManage(&client, seconds, DataStruct.CONFIG_UploadInterval, uploadTimeFramePeriod) ==  MQTT::SUCCESS) {
+						}
+						else {
+							MQTT_PublishDeviceManage(&client, seconds, DataStruct.CONFIG_UploadInterval, uploadTimeFramePeriod);
+						}
 					}
+					else {
+						wait(2);
+						uint32_t uploadTimeFramePeriod = SEND_TIME_INTERVAL;
+						if (MQTT_PublishDeviceManage(&client, seconds, DataStruct.CONFIG_UploadInterval, uploadTimeFramePeriod) ==  MQTT::SUCCESS) {
+						}
+						else {
+							MQTT_PublishDeviceManage(&client, seconds, DataStruct.CONFIG_UploadInterval, uploadTimeFramePeriod);
+						}						
+					}
+					wait(2);
 					isFirstUpload = false;
 				}
 					/* Periodic upload */
-			       	if ((uint32_t)(UploadTimer.read() - lastRead) >= READ_SECOND) {               // Read timer every readSecond(s)		
+			       	if ((uint32_t)(UploadTimer.read() - lastRead) >= READ_SECOND) {               // Read timer every readSecond(s)					       		
 			       		/* Start uploading data */	
 						if (!isUploading) {
 							wd.Service();
@@ -290,6 +315,20 @@
 								uploadPeriodCounter 	= 0;
 								isUploading         	= true;
 								intervalSecondCounter 	= INTERVAL_BETWEEN_EACH_UPLOAD_TYPE;
+							}
+							else if ((uploadPeriodCounter % SEND_TIME_INTERVAL) == 0) {
+								uint32_t uploadTimeFramePeriod = SEND_TIME_INTERVAL;
+								if (MQTT_PublishDeviceManage(&client, seconds, DataStruct.CONFIG_UploadInterval, uploadTimeFramePeriod) ==  MQTT::SUCCESS) {
+									myled = 1;
+								}
+								else {
+									if (MQTT_PublishDeviceManage(&client, seconds, DataStruct.CONFIG_UploadInterval, uploadTimeFramePeriod) ==  MQTT::SUCCESS) {
+										myled = 1;
+									}
+									else {
+										myled = 0;	
+									}
+								}
 							}					
 						}
 						else {