MQTTClient test to subscribe to Pachube feed

Dependencies:   NetServices mbed DNSResolver

main.cpp

Committer:
SomeRandomBloke
Date:
2012-03-20
Revision:
0:fb491df6af35

File content as of revision 0:fb491df6af35:

#include "mbed.h"
#include "EthernetNetIf.h"
#include "MQTTClient.h"
#include "dnsresolve.h"

EthernetNetIf ethernet;    

void callback(char* topic, char* payload); /*Callback function prototype*/

MQTTClient mqtt;

Serial pc(USBTX, USBRX); // tx, rx

void callback(char* topic, char* payload)
{
    printf("Topic: %s\r\n", topic);
    printf("Payload: %s\r\n\r\n", payload);
    //Send incoming payloads back to topic "/mbed".
//    mqtt.publish("mbed", payload);
}

int main() 
{  
   pc.baud(115200);
    printf("\r\n############### MQTTClient Tester  ###########\r\n\r\n");
    DNSResolver resolver;
    
    EthernetErr ethErr = ethernet.setup();
    if(ethErr){
        printf("Ethernet Error %d\r\n", ethErr);  
        return -1;
    } 
    
    char clientID[] = "mbed";   /*Client name show for MQTT server*/
    char sub_topic[] = "/v2/feeds/XXXXXX.csv";   /*Subscribe to topic - a Pachube feed, replace XXXXXX with your own feed number */
    
    IpAddr serverIpAddr = resolver.resolveName("api.pachube.com");
    
    mqtt.init(&serverIpAddr, 1883, "your-api-key-here", NULL, callback);
    
    if(!mqtt.connect(clientID)){
        printf("\r\nConnect to server failed ..\r\n");
        return -1;
    }
    printf("\r\nConnect to server sucessed ..\r\n");
    
//    mqtt.publish(pub_topic, "Hello here is mbed...");
    mqtt.subscribe(sub_topic);
    
    int flag = 0;
    /*Keep alive for 300s or 5mins*/
    while(flag < 300){
        Net::poll();
        wait(1);
        flag++;
        mqtt.live();
    }
    
    mqtt.disconnect();
    
    printf("#### End of the test.. ####\r\n\r\n");
}