Junichi Katsu / Mbed OS mbed-os-example-milkcocoa

Fork of mbed-os-example-mbed5-blinky by mbed-os-examples

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "MQTTInterface.h"
00003 #include "MQTTClient.h"
00004 #include "Milkcocoa.h"
00005 #include "MClient.h"
00006 #include "EthernetInterface.h"
00007 
00008 EthernetInterface eth;
00009 Serial pc(USBTX,USBRX);
00010 
00011 /************************* Your Milkcocoa Setup *********************************/
00012 
00013 #define MILKCOCOA_APP_ID      "teaidsirehz"
00014 #define MILKCOCOA_DATASTORE   "mbed_lan"
00015 
00016 /************* Milkcocoa Setup (you don't need to change this!) ******************/
00017 
00018 #define MILKCOCOA_SERVERPORT  1883
00019 
00020 /************ Global State (you don't need to change this!) ******************/
00021 const char MQTT_SERVER[]  = MILKCOCOA_APP_ID ".mlkcca.com";
00022 const char MQTT_CLIENTID[] = __TIME__ MILKCOCOA_APP_ID;
00023 
00024 extern void onpush(MQTT::MessageData& md);
00025 
00026 int main() {
00027     
00028     pc.baud(9600);
00029     pc.printf("Milkcocoa mbed os ver demo\n\r\n\r\n\r");
00030     
00031     int ret = eth.connect();
00032     if (ret != 0) {
00033         printf("\r\nConnection error\r\n");
00034         return -1;
00035     }
00036     pc.printf("\n\rEthernet connected\n\r");
00037     
00038     MQTTInterface* ipstack = new MQTTInterface(&eth);
00039     MClient* client = new MClient(ipstack);
00040     Milkcocoa* milkcocoa = new Milkcocoa(client, MQTT_SERVER, MILKCOCOA_SERVERPORT, MILKCOCOA_APP_ID, MQTT_CLIENTID);
00041     
00042     milkcocoa->connect();
00043     
00044     pc.printf("%d\n\r",milkcocoa->on(MILKCOCOA_DATASTORE, "push", onpush));
00045     
00046     milkcocoa->start();
00047 
00048     while(1) {
00049         
00050         DataElement elem = DataElement();
00051         elem.setValue("v", 1);
00052         
00053         milkcocoa->push(MILKCOCOA_DATASTORE, elem);
00054         pc.printf("PUSH\n\r");
00055         Thread::wait(500);
00056         
00057     }
00058 }
00059 
00060 void onpush(MQTT::MessageData& md)
00061 {
00062     MQTT::Message &message = md.message;
00063     DataElement de = DataElement((char*)message.payload);
00064     pc.printf("onpush\n\r");
00065     pc.printf("%d\n\r",de.getInt("v"));
00066 }