MQTT on Wizwiki 7500 with DHT11 sensor example

Dependencies:   DHT MQTT WIZnetInterface mbed-src

Fork of w7500-paho-mqtt by Bohyun Bang

Files at this revision

API Documentation at this revision

Comitter:
bangbh
Date:
Sun Jun 28 22:48:46 2015 +0000
Parent:
8:f837e0d255e8
Child:
10:1107f68ac569
Commit message:
Paho MQTT Client with W7500.

Changed in this revision

DHT11-HelloWorld.lib Show annotated file Show diff for this revision Revisions of this file
MQTT.lib Show annotated file Show diff for this revision Revisions of this file
WIZnetInterface.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
mbed-src.lib Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/DHT11-HelloWorld.lib	Sun Jun 28 22:48:46 2015 +0000
@@ -0,0 +1,1 @@
+http://developer.mbed.org/users/bangbh/code/DHT11-HelloWorld/#057aa743bccd
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MQTT.lib	Sun Jun 28 22:48:46 2015 +0000
@@ -0,0 +1,1 @@
+http://developer.mbed.org/users/bangbh/code/MQTT/#b7cebc104c6c
--- a/WIZnetInterface.lib	Tue Jun 23 00:36:34 2015 +0000
+++ b/WIZnetInterface.lib	Sun Jun 28 22:48:46 2015 +0000
@@ -1,1 +1,1 @@
-http://developer.mbed.org/teams/WIZnet/code/WIZnetInterface/#24a9f2df2145
+http://developer.mbed.org/teams/WIZnet/code/WIZnetInterface/#c830d2e7e0f5
--- a/main.cpp	Tue Jun 23 00:36:34 2015 +0000
+++ b/main.cpp	Sun Jun 28 22:48:46 2015 +0000
@@ -1,55 +1,86 @@
 #include "mbed.h"
-#include "EthernetInterface.h"
+#include "DHT.h"
+#include "MQTTEthernet.h"
+#include "MQTTClient.h"
 
 #define ECHO_SERVER_PORT   7
 
-int main (void) 
+#include "mbed.h"
+ 
+int arrivedcount = 0;
+ 
+void messageArrived(MQTT::MessageData& md)
 {
+    MQTT::Message &message = md.message;
+    printf("Message arrived: qos %d, retained %d, dup %d, packetid %d\n", message.qos, message.retained, message.dup, message.id);
+    printf("Payload %.*s\n", message.payloadlen, (char*)message.payload);
+    ++arrivedcount;
+}
+
+void baud(int baudrate) {
+    Serial s(USBTX, USBRX);
+    s.baud(baudrate);
+}
+
+int main (void)
+{
+    DHT sensor(D4, DHT11);
+    AnalogIn ain(A1);
+    baud(115200);
     printf("Wait a second...\r\n");
-    uint8_t mac_addr[6] = {0x00, 0x08, 0xDC, 0x00, 0x01, 0x02}; 
-    EthernetInterface eth;
-    eth.init(mac_addr); //Use DHCP
-    eth.connect();
-    printf("Server IP Address is %s\r\n", eth.getIPAddress());
+    char* topic = "hello/wiznet";
+    MQTTEthernet ipstack = MQTTEthernet();
+    
+    MQTT::Client<MQTTEthernet, Countdown> client = MQTT::Client<MQTTEthernet, Countdown>(ipstack);
+    
+    char* hostname = "104.199.146.45";
+    int port = 1883;
+    
+    int rc = ipstack.connect(hostname, port);
+    if (rc != 0)
+        printf("rc from TCP connect is %d\n", rc);
+        
+    printf("Topic: %s\r\n",topic);
     
-    TCPSocketServer server;
-    server.bind(ECHO_SERVER_PORT);
-    server.listen();
-    
+    MQTTPacket_connectData data = MQTTPacket_connectData_initializer;       
+    data.MQTTVersion = 3;
+    data.clientID.cstring = "WIZwiki-W7500";
+    data.username.cstring = "testuser";
+    data.password.cstring = "testpassword";  
+
+    if ((rc = client.connect(data)) != 0)
+        printf("rc from MQTT connect is %d\n", rc);
+ 
+    if ((rc = client.subscribe(topic, MQTT::QOS1, messageArrived)) != 0)
+        printf("rc from MQTT subscribe is %d\n", rc); 
+        
+    MQTT::Message message;
+    char buf[100];
+    int error = 0;
+    float hum = 0.0f, temp = 0.0f;
     while (true) 
     {
-        printf("Wait for new connection...\r\n");
-        TCPSocketConnection client;
-        server.accept(client);
-        client.set_blocking(false, 15000); // Timeout after (1.5)s
-        
-        printf("Connection from: %s\r\n", client.get_address());
-        char buffer[256];
-        while (true) {
-            int n = client.receive(buffer, sizeof(buffer));
-            if (n <= 0) break;
-            
-            // print received message to terminal
-            buffer[n] = '\0';
-            printf("Received message from Client :'%s'\r\n",buffer);
-            
-            // reverse the message
-            char temp;
-            for(int f = 0, l = n-1; f<l; f++,l--){
-                temp = buffer[f];
-                buffer[f] = buffer[l];
-                buffer[l] = temp;
-                }
-            
-            // print reversed message to terminal
-            printf("Sending message to Client: '%s'\r\n",buffer);
-            
-            // Echo received message back to client
-            client.send_all(buffer, n);
-            if (n <= 0) break;
+        error = sensor.readData();
+        if (0 == error) {
+            hum = sensor.ReadHumidity();
+            temp = sensor.ReadTemperature(CELCIUS);
         }
-        
-        client.close();
+        sprintf(buf, "%3.1f", hum);
+        message.qos = MQTT::QOS0;
+        message.retained = false;
+        message.dup = false;
+        message.payload = (void*)buf;
+        message.payloadlen = strlen(buf)+1;
+        rc = client.publish("wiznet/hum", message);
+        sprintf(buf, "%3.1f", temp);
+        message.payload = (void*)buf;
+        message.payloadlen = strlen(buf)+1;
+        rc = client.publish("wiznet/temp", message);
+        sprintf(buf, "%3.1f", ain.read()*100.0f);
+        message.payload = (void*)buf;
+        message.payloadlen = strlen(buf)+1;
+        rc = client.publish("wiznet/cds", message);
+        client.yield(1000);
     }
 }
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed-src.lib	Sun Jun 28 22:48:46 2015 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed-src/#30f9462b5296
--- a/mbed.bld	Tue Jun 23 00:36:34 2015 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-http://mbed.org/users/mbed_official/code/mbed/builds/7cff1c4259d7
\ No newline at end of file