WizFi310 with MQTT Implementation for WizWikiw7500

Dependencies:   DHT MQTT WizFi310Interface_Legacynew mbed-src

main.cpp

Committer:
kandilidinesh
Date:
2018-02-01
Revision:
0:8007c0060f5f

File content as of revision 0:8007c0060f5f:

#include "mbed.h"
#include "WizFi310Interface.h"
#include "DHT.h"
#include "MQTTClient.h"
#include "MQTTmbed.h"
#include "MQTTSocket.h"
#define ECHO_SERVER_PORT   7
#define USE_DHCP    1

#define SECURE WizFi310::SEC_WPA2_MIXED
#define AP_SSID "cdi1"// Input SSID
#define AP_PASSWORD "cdilab17" // Input PW

#if defined(TARGET_WIZwiki_W7500)
Serial pc(USBTX, USBRX);
WizFi310Interface wifi(D1, D0, D7, D6, D8, NC, 115200);
#endif

int arrivedcount = 0;

 class MQTTWIZ: public MQTTSocket
{
public:    
    MQTTWIZ()
    {
        wait(1);
        this->createSocket();
    }
};

void messageArrived(MQTT::MessageData& md)
{
    MQTT::Message &message = md.message;
    printf("Message arrived: qos %d, retained %d, dup %d, packetid %d\n", message.qos, message.retained, message.dup, message.id);
    printf("Payload %.*s\n", message.payloadlen, (char*)message.payload);
    ++arrivedcount;
}

void baud(int baudrate) {
    Serial s(USBTX, USBRX);
    s.baud(baudrate);
}

int main (void)
{
    baud(115200);
    //Wifi Connection
    wifi.init();
    printf("WizFi310 \r\n");
    wifi.connect(SECURE,AP_SSID, AP_PASSWORD,WizFi310::WM_STATION);
    printf("IP Address is %s\r\n", wifi.getIPAddress());
    //MQTT Connection
    printf("Wait a second...\r\n");
    char* topic = "wizfi/temp";
    MQTTWIZ ipstack = MQTTWIZ();
    MQTT::Client<MQTTWIZ, Countdown> client = MQTT::Client<MQTTWIZ, Countdown>(ipstack);
    DHT sensor(D14, DHT11);
    char* hostname = "172.16.73.4";
    int port = 1883;
    int rc = ipstack.connect(hostname, port);
    printf("Topic: %s\r\n",topic);
    MQTTPacket_connectData data = MQTTPacket_connectData_initializer;       
    data.MQTTVersion = 3;
    data.clientID.cstring = "dinesh12319237983712";
    rc = client.connect(data);
    rc = client.subscribe(topic, MQTT::QOS1, messageArrived);
    MQTT::Message message;
     int error = 0;
    char buf[100]="Hello World";
    float temp=0.0;
    while (true) 
    {
        error = sensor.readData();
        if (0 == error) 
        {
            temp = sensor.ReadTemperature(CELCIUS);
        }
        
        message.qos = MQTT::QOS0;
        message.retained = false;
        message.dup = false;
        sprintf(buf, "%3.1f", temp);
        message.payload = (void*)buf;
        message.payloadlen = strlen(buf);
        rc = client.publish("wizfi/temp", message);
        printf("Temperature Published : %s\r\n",message.payload);
        client.yield(60000);
    }
}