Paho MQTT Client example with W7500

Dependencies:   DHT MQTTforLecture WIZnetInterface mbed-src

Fork of w7500-paho-mqtt by Bohyun Bang

Code

WIZwiki W7500 with paho mqtt client.

Import programw7500-paho-mqtt

Paho MQTT Client example with W7500

You have to change

You have to use your ethernet(network) information.

MQTTEthernet.h

    uint8_t mac_addr[6] = {0x00, 0x08, 0xDC, 0x00, 0x00, 0x00}; // your mac address
    const char * ip_addr = "???.???.???.???"; // your ip
    const char * gw_addr = "???.???.???.???"; // your gateway
    const char * snmask = "???.???.???.???"; // your subnetmask

And you have to use your mqtt broker server information. Broker server ip address and port number listed bleow are available now. But I will close the mqtt broker server on July 15,2015.

main.cpp

    char* hostname = "104.199.146.45";
    int port = 1883;

Platform

WIZwiki W7500 [ https://developer.mbed.org/platforms/WIZwiki-W7500/ ] /media/uploads/bangbh/wizwiki-w7500.jpg

Component

YWRobot Easy module shield [ where to buy ] (This is not mbed component) /media/uploads/bangbh/ywrobot_esay-module-shield-v1.jpg

Test software

PC

MQTT-FX - A JavaFX based MQTT Client [ Home page ] /media/uploads/bangbh/mqtt-fx.png

Mobile(iPhone)

ZMQTT-UTILITY - MQTT Test utility|You can download from App store(iPhone). /media/uploads/bangbh/iphone-zmqtt-utility.png

Revision:
13:36456500fb7e
Parent:
9:21574e058141
Child:
14:2b30a541da82
--- a/main.cpp	Mon Jun 29 02:10:24 2015 +0000
+++ b/main.cpp	Sun Sep 20 05:17:13 2015 +0000
@@ -33,7 +33,7 @@
     
     MQTT::Client<MQTTEthernet, Countdown> client = MQTT::Client<MQTTEthernet, Countdown>(ipstack);
     
-    char* hostname = "104.199.146.45";
+    char* hostname = "222.98.173.244";
     int port = 1883;
     
     int rc = ipstack.connect(hostname, port);
@@ -44,43 +44,56 @@
     
     MQTTPacket_connectData data = MQTTPacket_connectData_initializer;       
     data.MQTTVersion = 3;
-    data.clientID.cstring = "WIZwiki-W7500";
+    data.clientID.cstring = "WIZwiki-W7500a";
     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) 
+    char i = 0;
+    while (true)
     {
+        if(i > 100) i = 0;
         error = sensor.readData();
         if (0 == error) {
             hum = sensor.ReadHumidity();
             temp = sensor.ReadTemperature(CELCIUS);
         }
-        sprintf(buf, "%3.1f", hum);
         message.qos = MQTT::QOS0;
         message.retained = false;
         message.dup = false;
+        
+        sprintf(buf, "%3.1f", hum);
         message.payload = (void*)buf;
-        message.payloadlen = strlen(buf)+1;
-        rc = client.publish("wiznet/hum", message);
+        message.payloadlen = strlen(buf);
+        rc = client.publish("Wiznet/humidity", 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.payloadlen = strlen(buf);
+        rc = client.publish("Wiznet/temperature", message);
+        
+        sprintf(buf, "%3.1f", (rand()%1000)/10.0);
+        message.payload = (void*)buf;
+        message.payloadlen = strlen(buf);
+        rc = client.publish("Wiznet/fluidgauge/A", message);
+        
+        sprintf(buf, "%3.1f", (rand()%1000)/10.0);
         message.payload = (void*)buf;
-        message.payloadlen = strlen(buf)+1;
-        rc = client.publish("wiznet/cds", message);
+        message.payloadlen = strlen(buf);
+        rc = client.publish("Wiznet/fluidgauge/B", message);
+        
+        sprintf(buf, "%3.1f", (rand()%1000)/10.0);
+        message.payload = (void*)buf;
+        message.payloadlen = strlen(buf);
+        rc = client.publish("Wiznet/fluidgauge/C", message);
         client.yield(1000);
+        //wait(100);
     }
 }