Paho MQTT Client example with W7500

Dependencies:   DHT MQTTforLecture WIZnetInterface mbed-src

Fork of w7500-paho-mqtt by Bohyun Bang

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "DHT.h"
00003 #include "MQTTEthernet.h"
00004 #include "MQTTClient.h"
00005 
00006 #define ECHO_SERVER_PORT   7
00007 
00008 #include "mbed.h"
00009  
00010 int arrivedcount = 0;
00011  
00012 void messageArrived(MQTT::MessageData& md)
00013 {
00014     MQTT::Message &message = md.message;
00015     printf("Message arrived: qos %d, retained %d, dup %d, packetid %d\n", message.qos, message.retained, message.dup, message.id);
00016     printf("Payload %.*s\n", message.payloadlen, (char*)message.payload);
00017     ++arrivedcount;
00018 }
00019 
00020 void baud(int baudrate) {
00021     Serial s(USBTX, USBRX);
00022     s.baud(baudrate);
00023 }
00024 
00025 int main (void)
00026 {
00027     DHT sensor(D4, DHT11);
00028     AnalogIn ain(A1);
00029     baud(115200);
00030     printf("Wait a second...\r\n");
00031     MQTTEthernet ipstack = MQTTEthernet();
00032     
00033     MQTT::Client<MQTTEthernet, Countdown> client = MQTT::Client<MQTTEthernet, Countdown>(ipstack);
00034     
00035     char* hostname = "222.98.173.244";
00036     int port = 1883;
00037     
00038     int rc = ipstack.connect(hostname, port);
00039     if (rc != 0)
00040         printf("rc from TCP connect is %d\n", rc);
00041         
00042     char MQTTClientID[30];
00043     
00044     MQTTPacket_connectData data = MQTTPacket_connectData_initializer;       
00045     data.MQTTVersion = 3;
00046     sprintf(MQTTClientID,"WIZwiki-W7500-client-%d",rand()%1000);
00047     data.clientID.cstring = MQTTClientID;
00048     data.username.cstring = "testuser";
00049     data.password.cstring = "testpassword";  
00050 
00051     if ((rc = client.connect(data)) != 0)
00052         printf("rc from MQTT connect is %d\n", rc);
00053         
00054     MQTT::Message message;
00055     char buf[100];
00056     int error = 0;
00057     float hum = 0.0f, temp = 0.0f;
00058     char i = 0;
00059     while (true)
00060     {
00061         if(i > 100) i = 0;
00062         error = sensor.readData();
00063         if (0 == error) {
00064             hum = sensor.ReadHumidity();
00065             temp = sensor.ReadTemperature(CELCIUS);
00066         }
00067         message.qos = MQTT::QOS0;
00068         message.retained = false;
00069         message.dup = false;
00070         
00071         sprintf(buf, "%3.1f", hum);
00072         message.payload = (void*)buf;
00073         message.payloadlen = strlen(buf);
00074         rc = client.publish("Wiznet/humidity", message);
00075         
00076         sprintf(buf, "%3.1f", temp);
00077         message.payload = (void*)buf;
00078         message.payloadlen = strlen(buf);
00079         rc = client.publish("Wiznet/temperature", message);
00080         
00081         sprintf(buf, "%3.1f", (rand()%1000)/10.0);
00082         message.payload = (void*)buf;
00083         message.payloadlen = strlen(buf);
00084         rc = client.publish("Wiznet/fluidgauge/A", message);
00085         
00086         sprintf(buf, "%3.1f", (rand()%1000)/10.0);
00087         message.payload = (void*)buf;
00088         message.payloadlen = strlen(buf);
00089         rc = client.publish("Wiznet/fluidgauge/B", message);
00090         
00091         sprintf(buf, "%3.1f", (rand()%1000)/10.0);
00092         message.payload = (void*)buf;
00093         message.payloadlen = strlen(buf);
00094         rc = client.publish("Wiznet/fluidgauge/C", message);
00095         client.yield(1000);
00096         //wait(100);
00097     }
00098 }
00099