iot_water_monitor_v2
Dependencies: easy-connect-v16 Watchdog FP MQTTPacket RecordType-v-16 watersenor_and_temp_code
Diff: Application/main.cpp
- 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 {