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 11:36:25 2017 +0000
Revision:
18:44a64786f3ca
Parent:
17:d07286cd2088
Child:
19:8f5ab618edd0
modify for kakaoIoTchatbot;

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
kaizen 16:3bd1b60a8a21 12 DigitalOut sw1(D9);
kaizen 16:3bd1b60a8a21 13 DigitalOut sw2(D10);
kaizen 16:3bd1b60a8a21 14 DigitalOut sw3(D11);
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 9:21574e058141 57 {
bangbh 9:21574e058141 58 DHT sensor(D4, DHT11);
kaizen 17:d07286cd2088 59 DigitalOut myled(LED1);
kaizen 17:d07286cd2088 60
kaizen 16:3bd1b60a8a21 61 sw1 = 0; sw2 = 0; sw3 = 0;
bangbh 9:21574e058141 62 baud(115200);
justinkim 8:f837e0d255e8 63 printf("Wait a second...\r\n");
kaizen 16:3bd1b60a8a21 64
kaizen 17:d07286cd2088 65
kaizen 17:d07286cd2088 66 myled = 0;
kaizen 17:d07286cd2088 67
bangbh 9:21574e058141 68 MQTTEthernet ipstack = MQTTEthernet();
kaizen 16:3bd1b60a8a21 69 printf("IP Address : %s\r\n",ipstack.getEth().getIPAddress());
bangbh 9:21574e058141 70 MQTT::Client<MQTTEthernet, Countdown> client = MQTT::Client<MQTTEthernet, Countdown>(ipstack);
bangbh 9:21574e058141 71
bangbh 18:44a64786f3ca 72 char* hostname = "222.98.173.239";
kaizen 17:d07286cd2088 73 printf("connect to %s\r\n",hostname);
bangbh 9:21574e058141 74 int port = 1883;
bangbh 9:21574e058141 75
bangbh 9:21574e058141 76 int rc = ipstack.connect(hostname, port);
bangbh 9:21574e058141 77 if (rc != 0)
kaizen 16:3bd1b60a8a21 78 {
bangbh 9:21574e058141 79 printf("rc from TCP connect is %d\n", rc);
kaizen 16:3bd1b60a8a21 80 return 0;
kaizen 16:3bd1b60a8a21 81 }
kaizen 16:3bd1b60a8a21 82 printf("TCP connection is successful\r\n");
bangbh 9:21574e058141 83
bangbh 15:d4604c47da41 84 char MQTTClientID[30];
justinkim 8:f837e0d255e8 85
bangbh 9:21574e058141 86 MQTTPacket_connectData data = MQTTPacket_connectData_initializer;
bangbh 9:21574e058141 87 data.MQTTVersion = 3;
bangbh 18:44a64786f3ca 88 sprintf(MQTTClientID,"WIZwiki-W7500-client-%d",rand()%10000);
bangbh 15:d4604c47da41 89 data.clientID.cstring = MQTTClientID;
bangbh 18:44a64786f3ca 90 data.username.cstring = "wiznetacademy";
bangbh 18:44a64786f3ca 91 data.password.cstring = "wiznet1324";
kaizen 16:3bd1b60a8a21 92
kaizen 16:3bd1b60a8a21 93 if ((rc = client.connect(data)) != 0)
kaizen 16:3bd1b60a8a21 94 {
kaizen 16:3bd1b60a8a21 95 printf("rc from MQTT connect is %d\r\n", rc);
kaizen 16:3bd1b60a8a21 96 return 0;
kaizen 16:3bd1b60a8a21 97 }
kaizen 16:3bd1b60a8a21 98 printf("MQTT connection is successful\r\n");
bangbh 9:21574e058141 99
bangbh 9:21574e058141 100
bangbh 18:44a64786f3ca 101 char *sw1 = "light/control";
kaizen 16:3bd1b60a8a21 102 if ((rc = client.subscribe(sw1, MQTT::QOS1, sw1_messageArrived)) != 0)
kaizen 16:3bd1b60a8a21 103 {
kaizen 16:3bd1b60a8a21 104 printf("rc from MQTT subscribe is %d\r\n", rc);
kaizen 16:3bd1b60a8a21 105 return 0;
kaizen 16:3bd1b60a8a21 106 }
kaizen 16:3bd1b60a8a21 107 printf("Added subscription for sw1\r\n");
kaizen 16:3bd1b60a8a21 108
bangbh 18:44a64786f3ca 109 char *sw2 = "boiler/control";
kaizen 16:3bd1b60a8a21 110 if ((rc = client.subscribe(sw2, MQTT::QOS1, sw2_messageArrived)) != 0)
kaizen 16:3bd1b60a8a21 111 {
kaizen 16:3bd1b60a8a21 112 printf("rc from MQTT subscribe is %d\r\n", rc);
kaizen 16:3bd1b60a8a21 113 return 0;
kaizen 16:3bd1b60a8a21 114 }
kaizen 16:3bd1b60a8a21 115 printf("Added subscription for sw2\r\n");
kaizen 16:3bd1b60a8a21 116
bangbh 18:44a64786f3ca 117 char *sw3 = "radio/control";
kaizen 16:3bd1b60a8a21 118 if ((rc = client.subscribe(sw3, MQTT::QOS1, sw3_messageArrived)) != 0)
kaizen 16:3bd1b60a8a21 119 {
kaizen 16:3bd1b60a8a21 120 printf("rc from MQTT subscribe is %d\r\n", rc);
kaizen 16:3bd1b60a8a21 121 return 0;
kaizen 16:3bd1b60a8a21 122 }
kaizen 16:3bd1b60a8a21 123 printf("Added subscription for sw3\r\n");
kaizen 16:3bd1b60a8a21 124
bangbh 13:36456500fb7e 125 while (true)
justinkim 8:f837e0d255e8 126 {
kaizen 17:d07286cd2088 127 client.yield(5000);
justinkim 8:f837e0d255e8 128 }
justinkim 8:f837e0d255e8 129 }
justinkim 8:f837e0d255e8 130