Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: easy-connect-v16 Watchdog FP MQTTPacket RecordType-v-16 watersenor_and_temp_code
Revision 2:61d34bc22590, committed 2017-11-25
- 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);
+}
+