![](/media/cache/group/ep_srxDLMd.webp.50x50_q85.jpg)
MQTT Publish - Subscribe
Dependencies: EthernetInterface MQTT Servo mbed-rtos mbed
Fork of MQTTPublishSubcribe by
main.cpp@18:a04f238cfc28, 2015-04-02 (annotated)
- Committer:
- stefan1691
- Date:
- Thu Apr 02 07:12:34 2015 +0000
- Revision:
- 18:a04f238cfc28
- Parent:
- 17:46dc5a8e143d
- Child:
- 19:65884a321e48
MQTT Subscribe
Who changed what in which revision?
User | Revision | Line number | New 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 | 18:a04f238cfc28 | 10 | char* hostname = "raspi2x"; |
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 | } |