MQTT Client for Kakao IoT chatbot lecture.

Dependencies:   DHT MQTT WIZnetInterface mbed

Fork of openHAB_mqtt_W7500 by DongEun Koak

Committer:
bangbh
Date:
Sun Nov 12 13:34:56 2017 +0000
Revision:
19:8f5ab618edd0
Parent:
18:44a64786f3ca
io changed

Who changed what in which revision?

UserRevisionLine numberNew contents of line
justinkim 8:f837e0d255e8 1 #include "mbed.h"
bangbh 9:21574e058141 2 #include "DHT.h"
bangbh 9:21574e058141 3 #include "MQTTEthernet.h"
bangbh 9:21574e058141 4 #include "MQTTClient.h"
justinkim 8:f837e0d255e8 5
justinkim 8:f837e0d255e8 6 #define ECHO_SERVER_PORT 7
justinkim 8:f837e0d255e8 7
bangbh 9:21574e058141 8 #include "mbed.h"
bangbh 9:21574e058141 9
bangbh 9:21574e058141 10 int arrivedcount = 0;
bangbh 18:44a64786f3ca 11
bangbh 19:8f5ab618edd0 12 DigitalOut sw1(PC_08);
bangbh 19:8f5ab618edd0 13 DigitalOut sw2(PC_09);
bangbh 19:8f5ab618edd0 14 DigitalOut sw3(PC_05);
bangbh 9:21574e058141 15
kaizen 16:3bd1b60a8a21 16
kaizen 16:3bd1b60a8a21 17 void sw1_messageArrived(MQTT::MessageData& md)
justinkim 8:f837e0d255e8 18 {
bangbh 9:21574e058141 19 MQTT::Message &message = md.message;
kaizen 16:3bd1b60a8a21 20 printf("Message arrived: qos %d, retained %d, dup %d, packetid %d\r\n", message.qos, message.retained, message.dup, message.id);
kaizen 16:3bd1b60a8a21 21
kaizen 16:3bd1b60a8a21 22 if( strncmp((char*)message.payload,"1",message.payloadlen) == 0 ){
kaizen 16:3bd1b60a8a21 23 sw1 = 1;
kaizen 16:3bd1b60a8a21 24 } else{
kaizen 16:3bd1b60a8a21 25 sw1 = 0;
kaizen 16:3bd1b60a8a21 26 }
kaizen 16:3bd1b60a8a21 27 }
kaizen 16:3bd1b60a8a21 28
kaizen 16:3bd1b60a8a21 29 void sw2_messageArrived(MQTT::MessageData& md)
kaizen 16:3bd1b60a8a21 30 {
kaizen 16:3bd1b60a8a21 31 MQTT::Message &message = md.message;
kaizen 16:3bd1b60a8a21 32 printf("Message arrived: qos %d, retained %d, dup %d, packetid %d\r\n", message.qos, message.retained, message.dup, message.id);
kaizen 16:3bd1b60a8a21 33 if( strncmp((char*)message.payload,"1",message.payloadlen) == 0 ){
kaizen 16:3bd1b60a8a21 34 sw2 = 1;
kaizen 16:3bd1b60a8a21 35 } else{
kaizen 16:3bd1b60a8a21 36 sw2 = 0;
kaizen 16:3bd1b60a8a21 37 }
kaizen 16:3bd1b60a8a21 38 }
kaizen 16:3bd1b60a8a21 39
kaizen 16:3bd1b60a8a21 40 void sw3_messageArrived(MQTT::MessageData& md)
kaizen 16:3bd1b60a8a21 41 {
kaizen 16:3bd1b60a8a21 42 MQTT::Message &message = md.message;
kaizen 16:3bd1b60a8a21 43 printf("Message arrived: qos %d, retained %d, dup %d, packetid %d\r\n", message.qos, message.retained, message.dup, message.id);
kaizen 16:3bd1b60a8a21 44 if( strncmp((char*)message.payload,"1",message.payloadlen) == 0 ){
kaizen 16:3bd1b60a8a21 45 sw3 = 1;
kaizen 16:3bd1b60a8a21 46 } else{
kaizen 16:3bd1b60a8a21 47 sw3 = 0;
kaizen 16:3bd1b60a8a21 48 }
bangbh 9:21574e058141 49 }
bangbh 9:21574e058141 50
bangbh 9:21574e058141 51 void baud(int baudrate) {
bangbh 9:21574e058141 52 Serial s(USBTX, USBRX);
bangbh 9:21574e058141 53 s.baud(baudrate);
bangbh 9:21574e058141 54 }
bangbh 9:21574e058141 55
bangbh 9:21574e058141 56 int main (void)
bangbh 19:8f5ab618edd0 57 {
kaizen 16:3bd1b60a8a21 58 sw1 = 0; sw2 = 0; sw3 = 0;
bangbh 9:21574e058141 59 baud(115200);
justinkim 8:f837e0d255e8 60 printf("Wait a second...\r\n");
kaizen 16:3bd1b60a8a21 61
bangbh 9:21574e058141 62 MQTTEthernet ipstack = MQTTEthernet();
kaizen 16:3bd1b60a8a21 63 printf("IP Address : %s\r\n",ipstack.getEth().getIPAddress());
bangbh 9:21574e058141 64 MQTT::Client<MQTTEthernet, Countdown> client = MQTT::Client<MQTTEthernet, Countdown>(ipstack);
bangbh 9:21574e058141 65
bangbh 18:44a64786f3ca 66 char* hostname = "222.98.173.239";
kaizen 17:d07286cd2088 67 printf("connect to %s\r\n",hostname);
bangbh 9:21574e058141 68 int port = 1883;
bangbh 9:21574e058141 69
bangbh 9:21574e058141 70 int rc = ipstack.connect(hostname, port);
bangbh 9:21574e058141 71 if (rc != 0)
kaizen 16:3bd1b60a8a21 72 {
bangbh 9:21574e058141 73 printf("rc from TCP connect is %d\n", rc);
kaizen 16:3bd1b60a8a21 74 return 0;
kaizen 16:3bd1b60a8a21 75 }
kaizen 16:3bd1b60a8a21 76 printf("TCP connection is successful\r\n");
bangbh 9:21574e058141 77
bangbh 15:d4604c47da41 78 char MQTTClientID[30];
justinkim 8:f837e0d255e8 79
bangbh 9:21574e058141 80 MQTTPacket_connectData data = MQTTPacket_connectData_initializer;
bangbh 9:21574e058141 81 data.MQTTVersion = 3;
bangbh 18:44a64786f3ca 82 sprintf(MQTTClientID,"WIZwiki-W7500-client-%d",rand()%10000);
bangbh 15:d4604c47da41 83 data.clientID.cstring = MQTTClientID;
bangbh 18:44a64786f3ca 84 data.username.cstring = "wiznetacademy";
bangbh 18:44a64786f3ca 85 data.password.cstring = "wiznet1324";
kaizen 16:3bd1b60a8a21 86
kaizen 16:3bd1b60a8a21 87 if ((rc = client.connect(data)) != 0)
kaizen 16:3bd1b60a8a21 88 {
kaizen 16:3bd1b60a8a21 89 printf("rc from MQTT connect is %d\r\n", rc);
kaizen 16:3bd1b60a8a21 90 return 0;
kaizen 16:3bd1b60a8a21 91 }
kaizen 16:3bd1b60a8a21 92 printf("MQTT connection is successful\r\n");
bangbh 9:21574e058141 93
bangbh 9:21574e058141 94
bangbh 18:44a64786f3ca 95 char *sw1 = "light/control";
bangbh 19:8f5ab618edd0 96 if ((rc = client.subscribe(sw1, MQTT::QOS0, sw1_messageArrived)) != 0)
kaizen 16:3bd1b60a8a21 97 {
kaizen 16:3bd1b60a8a21 98 printf("rc from MQTT subscribe is %d\r\n", rc);
kaizen 16:3bd1b60a8a21 99 return 0;
kaizen 16:3bd1b60a8a21 100 }
kaizen 16:3bd1b60a8a21 101 printf("Added subscription for sw1\r\n");
kaizen 16:3bd1b60a8a21 102
bangbh 18:44a64786f3ca 103 char *sw2 = "boiler/control";
bangbh 19:8f5ab618edd0 104 if ((rc = client.subscribe(sw2, MQTT::QOS0, sw2_messageArrived)) != 0)
kaizen 16:3bd1b60a8a21 105 {
kaizen 16:3bd1b60a8a21 106 printf("rc from MQTT subscribe is %d\r\n", rc);
kaizen 16:3bd1b60a8a21 107 return 0;
kaizen 16:3bd1b60a8a21 108 }
kaizen 16:3bd1b60a8a21 109 printf("Added subscription for sw2\r\n");
kaizen 16:3bd1b60a8a21 110
bangbh 18:44a64786f3ca 111 char *sw3 = "radio/control";
bangbh 19:8f5ab618edd0 112 if ((rc = client.subscribe(sw3, MQTT::QOS0, sw3_messageArrived)) != 0)
kaizen 16:3bd1b60a8a21 113 {
kaizen 16:3bd1b60a8a21 114 printf("rc from MQTT subscribe is %d\r\n", rc);
kaizen 16:3bd1b60a8a21 115 return 0;
kaizen 16:3bd1b60a8a21 116 }
kaizen 16:3bd1b60a8a21 117 printf("Added subscription for sw3\r\n");
kaizen 16:3bd1b60a8a21 118
bangbh 13:36456500fb7e 119 while (true)
justinkim 8:f837e0d255e8 120 {
kaizen 17:d07286cd2088 121 client.yield(5000);
justinkim 8:f837e0d255e8 122 }
justinkim 8:f837e0d255e8 123 }
justinkim 8:f837e0d255e8 124