MQTT Publish - Subscribe

Dependencies:   EthernetInterface MQTT Servo mbed-rtos mbed

Fork of MQTTPublishSubcribe by smd.iotkit2.ch

Committer:
stefan1691
Date:
Mon Mar 16 14:50:54 2015 +0000
Revision:
17:46dc5a8e143d
Parent:
16:28d062c5522b
Child:
18:a04f238cfc28
MQTT Subscribe

Who changed what in which revision?

UserRevisionLine numberNew contents of line
stefan1691 17:46dc5a8e143d 1 /** MQTT Subscribe */
stefan1691 17:46dc5a8e143d 2 #include "mbed.h"
icraggs 8:a3e3113054a1 3 #include "MQTTEthernet.h"
icraggs 2:638c854c0695 4 #include "MQTTClient.h"
icraggs 2:638c854c0695 5
stefan1691 17:46dc5a8e143d 6 // Topic's
stefan1691 17:46dc5a8e143d 7 char* topicLight = "mbed/k64f/iotkit/light";
stefan1691 17:46dc5a8e143d 8 // MQTT Brocker
stefan1691 17:46dc5a8e143d 9 //char* hostname = "iot.eclipse.org";
stefan1691 17:46dc5a8e143d 10 char* hostname = "192.168.178.70";
stefan1691 17:46dc5a8e143d 11 int port = 1883;
stefan1691 17:46dc5a8e143d 12 // UI
stefan1691 17:46dc5a8e143d 13 DigitalOut led1( LED1 );
icraggs 2:638c854c0695 14
stefan1691 17:46dc5a8e143d 15 void messageArrived( MQTT::MessageData& md )
icraggs 2:638c854c0695 16 {
icraggs 9:5beb8609e9f7 17 MQTT::Message &message = md.message;
icraggs 9:5beb8609e9f7 18 printf("Message arrived: qos %d, retained %d, dup %d, packetid %d\n", message.qos, message.retained, message.dup, message.id);
stefan1691 17:46dc5a8e143d 19 printf("Payload %.*s\n", message.payloadlen, (char*) message.payload);
icraggs 2:638c854c0695 20 }
icraggs 0:0cae29831d01 21
stefan1691 17:46dc5a8e143d 22 int main()
icraggs 2:638c854c0695 23 {
stefan1691 17:46dc5a8e143d 24 // Ethernet und MQTT initialisieren (muss in main erfolgen)
icraggs 8:a3e3113054a1 25 MQTTEthernet ipstack = MQTTEthernet();
icraggs 8:a3e3113054a1 26 MQTT::Client<MQTTEthernet, Countdown> client = MQTT::Client<MQTTEthernet, Countdown>(ipstack);
icraggs 3:7a6a899de7cc 27
stefan1691 17:46dc5a8e143d 28 printf("Connecting to %s:%d\n", hostname, port);
icraggs 6:e4c690c45021 29 int rc = ipstack.connect(hostname, port);
icraggs 6:e4c690c45021 30 if (rc != 0)
stefan1691 17:46dc5a8e143d 31 printf("rc from TCP connect is %d\n", rc);
icraggs 6:e4c690c45021 32
stefan1691 17:46dc5a8e143d 33 // mit MQTT Broker verbinden
icraggs 6:e4c690c45021 34 MQTTPacket_connectData data = MQTTPacket_connectData_initializer;
icraggs 6:e4c690c45021 35 data.MQTTVersion = 3;
icraggs 8:a3e3113054a1 36 data.clientID.cstring = "mbed-sample";
icraggs 12:086a9314e8a5 37 data.username.cstring = "testuser";
icraggs 12:086a9314e8a5 38 data.password.cstring = "testpassword";
stefan1691 17:46dc5a8e143d 39 rc = client.connect(data);
stefan1691 17:46dc5a8e143d 40 printf("rc from MQTT connect is %d\n", rc);
icraggs 2:638c854c0695 41
stefan1691 17:46dc5a8e143d 42 rc = client.subscribe( topicLight, MQTT::QOS0, messageArrived );
stefan1691 17:46dc5a8e143d 43 printf("rc from MQTT subscribe is %d\n", rc);
icraggs 0:0cae29831d01 44
stefan1691 17:46dc5a8e143d 45 while ( 1 )
icraggs 12:086a9314e8a5 46 {
stefan1691 17:46dc5a8e143d 47 led1 = 0;
stefan1691 17:46dc5a8e143d 48 client.yield(1000); // MQTT Client darf empfangen
stefan1691 17:46dc5a8e143d 49 led1 = 1;
stefan1691 17:46dc5a8e143d 50 wait( 0.2 );
icraggs 12:086a9314e8a5 51 }
icraggs 2:638c854c0695 52
stefan1691 17:46dc5a8e143d 53 if ((rc = client.unsubscribe(topicLight)) != 0)
sam_grove 5:4a257f6ac09a 54 printf("rc from unsubscribe was %d\n", rc);
icraggs 2:638c854c0695 55
icraggs 8:a3e3113054a1 56 if ((rc = client.disconnect()) != 0)
sam_grove 5:4a257f6ac09a 57 printf("rc from disconnect was %d\n", rc);
icraggs 2:638c854c0695 58
icraggs 2:638c854c0695 59 ipstack.disconnect();
icraggs 0:0cae29831d01 60 return 0;
icraggs 0:0cae29831d01 61 }