Duy tran / Mbed OS iot_water_monitor_v2

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

Files at this revision

API Documentation at this revision

Comitter:
DuyLionTran
Date:
Sat Nov 25 14:25:44 2017 +0000
Parent:
1:e7a545497bca
Child:
3:1bc26dfb6d35
Commit message:
version 0.7;

Changed in this revision

MQTT.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/MQTT.lib	Fri Nov 24 17:49:30 2017 +0000
+++ b/MQTT.lib	Sat Nov 25 14:25:44 2017 +0000
@@ -1,1 +1,1 @@
-https://mbed.org/teams/mqtt/code/MQTT/#c37c8236e84a
+https://mbed.org/teams/mqtt/code/MQTT/#9cff7b6bbd01
--- a/main.cpp	Fri Nov 24 17:49:30 2017 +0000
+++ b/main.cpp	Sat Nov 25 14:25:44 2017 +0000
@@ -38,7 +38,7 @@
 int arrivedcount = 0;
 uint32_t lastRead = 0;
 
-uint8_t readVal = 0;
+uint8_t readVal1 = 0, readVal2 = 7;;
 
 Timer  readTime;
 Thread thread;
@@ -50,6 +50,7 @@
 NetworkInterface* network = easy_connect(true);
 MQTTNetwork mqttNetwork(network);
 MQTT::Client<MQTTNetwork, Countdown> client(mqttNetwork);
+MQTT::Client<MQTTNetwork, Countdown> client_1(mqttNetwork);
 
 /***************************************************************
  * Callbacks
@@ -58,50 +59,15 @@
     MQTT::Message &message = md.message;
     logMessage("Message arrived: qos %d, retained %d, dup %d, packetid %d\r\n", message.qos, message.retained, message.dup, message.id);
     logMessage("Payload %.*s\r\n", message.payloadlen, (char*)message.payload);
-    ++arrivedcount;
 }
 
 /***************************************************************
- * Unity functions
+ * Unity function definitions
  ***************************************************************/
-/* Definitions */
- 
-/* Declarations */
-void timeoutCallback() {
-    readVal++;
-    char buf[100];
-    
-    MQTT::Message msg;
-    sprintf(buf, "{\"Analog Value 1\":\"%d\"}", readVal);
-    msg.qos = MQTT::QOS0;
-    msg.retained = false;
-    msg.dup = false;
-    msg.payload = (void*)buf;
-    msg.payloadlen = strlen(buf)+1;
-    int ret = client.publish(event, msg);   
-    
-    logMessage("Publish result: %d\r\n", ret);
-}
+void publish(uint8_t uploadType);
+void clientYield();
 
-void yield_thread() {
-    while (true) {
-        if ((uint32_t)(readTime.read_ms() - lastRead) > 5000) {
-           readVal++;
-           char buf[100];
-   
-           MQTT::Message msg;
-           sprintf(buf, "{\"Analog Value 1\":\"%d\"}", readVal);
-           msg.qos = MQTT::QOS0;
-           msg.retained = false;
-           msg.dup = false;
-           msg.payload = (void*)buf;
-           msg.payloadlen = strlen(buf)+1;
-           int ret = client.publish(event, msg);   
-           logMessage("Publish result: %d\r\n", ret);
-           lastRead = readTime.read_ms();
-        }
-    }
-}
+
 /***************************************************************
  * Main
  ***************************************************************/
@@ -109,20 +75,19 @@
     serial.baud(115200);
     
     logMessage("IoT Water Monitor: version is %.2f\r\n", version);
-    network = easy_connect(true);
+    
     
     if (!network) {
         logMessage("Failed to connect to the internet\r\n");
         return ;
     }
-    MQTTNetwork mqttNetwork(network);
-    MQTT::Client<MQTTNetwork, Countdown> client(mqttNetwork);
-
+    
+    
     logMessage("Connecting to %s:%d\r\n", hostname, port);
     int rc = mqttNetwork.connect(hostname, port);
     if (rc != 0)
         logMessage("rc from TCP connect is %d\r\n", rc);
-
+    
     MQTTPacket_connectData data = MQTTPacket_connectData_initializer;
     data.MQTTVersion = 3;
     data.clientID.cstring = clientID;
@@ -133,6 +98,10 @@
 
     if ((rc = client.subscribe(topic, MQTT::QOS0, messageArrived)) != 0)
         logMessage("rc from MQTT subscribe is %d\r\n", rc);
+    if ((rc = client_1.subscribe(topic, MQTT::QOS0, messageArrived)) != 0)
+        logMessage("rc from MQTT subscribe is %d\r\n", rc);
+    if ((rc = client.subscribe(event, MQTT::QOS0, messageArrived)) != 0)
+        logMessage("rc from MQTT subscribe is %d\r\n", rc);
 
     MQTT::Message message;
     
@@ -144,31 +113,39 @@
     message.payload = (void*)buf;
     message.payloadlen = strlen(buf)+1;
     rc = client.publish(event, message);
-    while (arrivedcount < 1)
-        client.yield(100);
 
     logMessage("Version %.2f: finish %d msgs\r\n", version, arrivedcount); 
-    thread.start(callback(yield_thread));
     readTime.start();
-      
-    while(true) {
-//        client.yield(100);   
-        if ((uint32_t)(readTime.read_ms() - lastRead) > 5000) {
-            readVal++;
-            char buf[100];
     
-            MQTT::Message msg;
-            sprintf(buf, "{\"Analog Value 1\":\"%d\"}", readVal);
-            msg.qos = MQTT::QOS0;
-            msg.retained = false;
-            msg.dup = false;
-            msg.payload = (void*)buf;
-            msg.payloadlen = strlen(buf)+1;
-            int ret = client.publish(event, msg);   
-              
-            logMessage("Publish result: %d\r\n", ret);
+    thread.start(callback(clientYield));
+        
+    while(true) {  
+        if ((uint32_t)(readTime.read_ms() - lastRead) > 5000) {
+            
+            publish(1);
             lastRead = readTime.read_ms();
         }
+//        client.yield(100);
     }
         
 }
+
+/***************************************************************
+ * Unity function declarations
+ ***************************************************************/
+void publish(uint8_t uploadType) {
+    readVal1++;
+    readVal2 += 8;
+    char buf[100];
+    MQTT::Message msg;
+    sprintf(buf, "{\"Analog Value 1\":\"%d\", \"Analog Value 2\": \"%d\"}", readVal1, readVal2);
+    msg.qos = MQTT::QOS0;
+    msg.retained = false;
+    msg.dup = false;
+    msg.payload = (void*)buf;
+    msg.payloadlen = strlen(buf)+1;
+    int ret = client.publish(event, msg);   
+           
+    logMessage("Publish result: %d\r\n", ret);    
+}
+