Roise Tomy / MQTTw7500

Dependencies:   DHT MQTT WIZnetInterface mbed-src

Fork of MQTTw7500 by James Bruce

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