MQTT on Wizwiki 7500 with DHT11 sensor example

Dependencies:   DHT MQTT 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 #define ECHO_SERVER_PORT   7
00006  
00007 int arrivedcount = 0;
00008  
00009 void messageArrived(MQTT::MessageData& md)
00010 {
00011     MQTT::Message &message = md.message;
00012     printf("Message arrived: qos %d, retained %d, dup %d, packetid %d\n", message.qos, message.retained, message.dup, message.id);
00013     printf("Payload %.*s\n", message.payloadlen, (char*)message.payload);
00014     ++arrivedcount;
00015 }
00016 
00017 void baud(int baudrate) {
00018     Serial s(USBTX, USBRX);
00019     s.baud(baudrate);
00020 }
00021 
00022 int main (void)
00023 {
00024     DHT sensor(D4, DHT11);
00025     baud(115200);
00026     printf("Wait a second...\r\n");
00027     char* topic = "openhab/parents/command";
00028     MQTTEthernet ipstack = MQTTEthernet();
00029     
00030     MQTT::Client<MQTTEthernet, Countdown> client = MQTT::Client<MQTTEthernet, Countdown>(ipstack);
00031     
00032     char* hostname = "192.168.1.99";
00033     int port = 1883;
00034     
00035     int rc = ipstack.connect(hostname, port);
00036     if (rc != 0)
00037         printf("rc from TCP connect is %d\n", rc);
00038         
00039     printf("Topic: %s\r\n",topic);
00040     
00041     MQTTPacket_connectData data = MQTTPacket_connectData_initializer;       
00042     data.MQTTVersion = 3;
00043     data.clientID.cstring = "parents";
00044 
00045     if ((rc = client.connect(data)) != 0)
00046         printf("rc from MQTT connect is %d\n", rc);
00047  
00048     if ((rc = client.subscribe(topic, MQTT::QOS1, messageArrived)) != 0)
00049         printf("rc from MQTT subscribe is %d\n", rc); 
00050         
00051     MQTT::Message message;
00052     char buf[100];
00053     int error = 0;
00054     float hum = 0.0f, temp = 0.0f;
00055     while (true) 
00056     {
00057         error = sensor.readData();
00058         if (0 == error) {
00059             hum = sensor.ReadHumidity();
00060             temp = sensor.ReadTemperature(CELCIUS);
00061         }
00062         sprintf(buf, "%3.1f", hum);
00063         message.qos = MQTT::QOS0;
00064         message.retained = false;
00065         message.dup = false;
00066         message.payload = (void*)buf;
00067         message.payloadlen = strlen(buf);
00068         rc = client.publish("openhab/parents/humidity", message);
00069         sprintf(buf, "%3.1f", temp);
00070         message.payload = (void*)buf;
00071         message.payloadlen = strlen(buf);
00072         rc = client.publish("openhab/parents/temperature", message);
00073         
00074         client.yield(60000);
00075     }
00076 }
00077