WizFi310 with MQTT Implementation for WizWikiw7500

Dependencies:   DHT MQTT WizFi310Interface_Legacynew mbed-src

Committer:
kandilidinesh
Date:
Thu Feb 01 09:08:42 2018 +0000
Revision:
0:8007c0060f5f
WizFi310 with MQTT Implementation

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kandilidinesh 0:8007c0060f5f 1 #include "mbed.h"
kandilidinesh 0:8007c0060f5f 2 #include "WizFi310Interface.h"
kandilidinesh 0:8007c0060f5f 3 #include "DHT.h"
kandilidinesh 0:8007c0060f5f 4 #include "MQTTClient.h"
kandilidinesh 0:8007c0060f5f 5 #include "MQTTmbed.h"
kandilidinesh 0:8007c0060f5f 6 #include "MQTTSocket.h"
kandilidinesh 0:8007c0060f5f 7 #define ECHO_SERVER_PORT 7
kandilidinesh 0:8007c0060f5f 8 #define USE_DHCP 1
kandilidinesh 0:8007c0060f5f 9
kandilidinesh 0:8007c0060f5f 10 #define SECURE WizFi310::SEC_WPA2_MIXED
kandilidinesh 0:8007c0060f5f 11 #define AP_SSID "cdi1"// Input SSID
kandilidinesh 0:8007c0060f5f 12 #define AP_PASSWORD "cdilab17" // Input PW
kandilidinesh 0:8007c0060f5f 13
kandilidinesh 0:8007c0060f5f 14 #if defined(TARGET_WIZwiki_W7500)
kandilidinesh 0:8007c0060f5f 15 Serial pc(USBTX, USBRX);
kandilidinesh 0:8007c0060f5f 16 WizFi310Interface wifi(D1, D0, D7, D6, D8, NC, 115200);
kandilidinesh 0:8007c0060f5f 17 #endif
kandilidinesh 0:8007c0060f5f 18
kandilidinesh 0:8007c0060f5f 19 int arrivedcount = 0;
kandilidinesh 0:8007c0060f5f 20
kandilidinesh 0:8007c0060f5f 21 class MQTTWIZ: public MQTTSocket
kandilidinesh 0:8007c0060f5f 22 {
kandilidinesh 0:8007c0060f5f 23 public:
kandilidinesh 0:8007c0060f5f 24 MQTTWIZ()
kandilidinesh 0:8007c0060f5f 25 {
kandilidinesh 0:8007c0060f5f 26 wait(1);
kandilidinesh 0:8007c0060f5f 27 this->createSocket();
kandilidinesh 0:8007c0060f5f 28 }
kandilidinesh 0:8007c0060f5f 29 };
kandilidinesh 0:8007c0060f5f 30
kandilidinesh 0:8007c0060f5f 31 void messageArrived(MQTT::MessageData& md)
kandilidinesh 0:8007c0060f5f 32 {
kandilidinesh 0:8007c0060f5f 33 MQTT::Message &message = md.message;
kandilidinesh 0:8007c0060f5f 34 printf("Message arrived: qos %d, retained %d, dup %d, packetid %d\n", message.qos, message.retained, message.dup, message.id);
kandilidinesh 0:8007c0060f5f 35 printf("Payload %.*s\n", message.payloadlen, (char*)message.payload);
kandilidinesh 0:8007c0060f5f 36 ++arrivedcount;
kandilidinesh 0:8007c0060f5f 37 }
kandilidinesh 0:8007c0060f5f 38
kandilidinesh 0:8007c0060f5f 39 void baud(int baudrate) {
kandilidinesh 0:8007c0060f5f 40 Serial s(USBTX, USBRX);
kandilidinesh 0:8007c0060f5f 41 s.baud(baudrate);
kandilidinesh 0:8007c0060f5f 42 }
kandilidinesh 0:8007c0060f5f 43
kandilidinesh 0:8007c0060f5f 44 int main (void)
kandilidinesh 0:8007c0060f5f 45 {
kandilidinesh 0:8007c0060f5f 46 baud(115200);
kandilidinesh 0:8007c0060f5f 47 //Wifi Connection
kandilidinesh 0:8007c0060f5f 48 wifi.init();
kandilidinesh 0:8007c0060f5f 49 printf("WizFi310 \r\n");
kandilidinesh 0:8007c0060f5f 50 wifi.connect(SECURE,AP_SSID, AP_PASSWORD,WizFi310::WM_STATION);
kandilidinesh 0:8007c0060f5f 51 printf("IP Address is %s\r\n", wifi.getIPAddress());
kandilidinesh 0:8007c0060f5f 52 //MQTT Connection
kandilidinesh 0:8007c0060f5f 53 printf("Wait a second...\r\n");
kandilidinesh 0:8007c0060f5f 54 char* topic = "wizfi/temp";
kandilidinesh 0:8007c0060f5f 55 MQTTWIZ ipstack = MQTTWIZ();
kandilidinesh 0:8007c0060f5f 56 MQTT::Client<MQTTWIZ, Countdown> client = MQTT::Client<MQTTWIZ, Countdown>(ipstack);
kandilidinesh 0:8007c0060f5f 57 DHT sensor(D14, DHT11);
kandilidinesh 0:8007c0060f5f 58 char* hostname = "172.16.73.4";
kandilidinesh 0:8007c0060f5f 59 int port = 1883;
kandilidinesh 0:8007c0060f5f 60 int rc = ipstack.connect(hostname, port);
kandilidinesh 0:8007c0060f5f 61 printf("Topic: %s\r\n",topic);
kandilidinesh 0:8007c0060f5f 62 MQTTPacket_connectData data = MQTTPacket_connectData_initializer;
kandilidinesh 0:8007c0060f5f 63 data.MQTTVersion = 3;
kandilidinesh 0:8007c0060f5f 64 data.clientID.cstring = "dinesh12319237983712";
kandilidinesh 0:8007c0060f5f 65 rc = client.connect(data);
kandilidinesh 0:8007c0060f5f 66 rc = client.subscribe(topic, MQTT::QOS1, messageArrived);
kandilidinesh 0:8007c0060f5f 67 MQTT::Message message;
kandilidinesh 0:8007c0060f5f 68 int error = 0;
kandilidinesh 0:8007c0060f5f 69 char buf[100]="Hello World";
kandilidinesh 0:8007c0060f5f 70 float temp=0.0;
kandilidinesh 0:8007c0060f5f 71 while (true)
kandilidinesh 0:8007c0060f5f 72 {
kandilidinesh 0:8007c0060f5f 73 error = sensor.readData();
kandilidinesh 0:8007c0060f5f 74 if (0 == error)
kandilidinesh 0:8007c0060f5f 75 {
kandilidinesh 0:8007c0060f5f 76 temp = sensor.ReadTemperature(CELCIUS);
kandilidinesh 0:8007c0060f5f 77 }
kandilidinesh 0:8007c0060f5f 78
kandilidinesh 0:8007c0060f5f 79 message.qos = MQTT::QOS0;
kandilidinesh 0:8007c0060f5f 80 message.retained = false;
kandilidinesh 0:8007c0060f5f 81 message.dup = false;
kandilidinesh 0:8007c0060f5f 82 sprintf(buf, "%3.1f", temp);
kandilidinesh 0:8007c0060f5f 83 message.payload = (void*)buf;
kandilidinesh 0:8007c0060f5f 84 message.payloadlen = strlen(buf);
kandilidinesh 0:8007c0060f5f 85 rc = client.publish("wizfi/temp", message);
kandilidinesh 0:8007c0060f5f 86 printf("Temperature Published : %s\r\n",message.payload);
kandilidinesh 0:8007c0060f5f 87 client.yield(60000);
kandilidinesh 0:8007c0060f5f 88 }
kandilidinesh 0:8007c0060f5f 89 }
kandilidinesh 0:8007c0060f5f 90