Example MQTT for CO657. You should modify your client ID! Broker and Topic can be adjusted to situation.

Dependencies:   C12832 MQTT_MbedOS

Committer:
azazeal88
Date:
Tue Nov 01 22:14:54 2016 +0000
Revision:
0:35df42ee93ed
Initial Commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
azazeal88 0:35df42ee93ed 1 #include "mbed.h"
azazeal88 0:35df42ee93ed 2 #include "C12832.h"
azazeal88 0:35df42ee93ed 3 #include "MQTTEthernet.h"
azazeal88 0:35df42ee93ed 4 #include "MQTTClient.h"
azazeal88 0:35df42ee93ed 5
azazeal88 0:35df42ee93ed 6 // LCD Pinout
azazeal88 0:35df42ee93ed 7 C12832 lcd(D11, D13, D12, D7, D10);
azazeal88 0:35df42ee93ed 8
azazeal88 0:35df42ee93ed 9 // MQTT Variables
azazeal88 0:35df42ee93ed 10 char* MqttHostname = "broker.hivemq.com";
azazeal88 0:35df42ee93ed 11 int MqttPort = 1883;
azazeal88 0:35df42ee93ed 12 char* MqttTopic = "mbed-sample";
azazeal88 0:35df42ee93ed 13 char* MqttClientId = "changeme";
azazeal88 0:35df42ee93ed 14
azazeal88 0:35df42ee93ed 15 int main()
azazeal88 0:35df42ee93ed 16 {
azazeal88 0:35df42ee93ed 17 // Clear LCD and print a welcome message from row 0, col 0.
azazeal88 0:35df42ee93ed 18 lcd.cls();
azazeal88 0:35df42ee93ed 19 lcd.locate(0,0);
azazeal88 0:35df42ee93ed 20 lcd.printf("Example MQTT client\n");
azazeal88 0:35df42ee93ed 21
azazeal88 0:35df42ee93ed 22 // Brings up the network interface
azazeal88 0:35df42ee93ed 23 MQTTEthernet eth = MQTTEthernet();
azazeal88 0:35df42ee93ed 24 const char *ip = eth.get_ip_address();
azazeal88 0:35df42ee93ed 25
azazeal88 0:35df42ee93ed 26 lcd.cls();
azazeal88 0:35df42ee93ed 27 lcd.locate(0,0);
azazeal88 0:35df42ee93ed 28 lcd.printf("IP address is: %s\n", ip ? ip : "No IP");
azazeal88 0:35df42ee93ed 29
azazeal88 0:35df42ee93ed 30 // Create Mbed Client Interface
azazeal88 0:35df42ee93ed 31 MQTT::Client<MQTTEthernet, Countdown> client = MQTT::Client<MQTTEthernet, Countdown>(eth);
azazeal88 0:35df42ee93ed 32
azazeal88 0:35df42ee93ed 33 // Create TCP connection
azazeal88 0:35df42ee93ed 34 eth.open(eth.getEth());
azazeal88 0:35df42ee93ed 35 int rc = eth.connect(MqttHostname, MqttPort);
azazeal88 0:35df42ee93ed 36 lcd.printf("TCP Status: %s\n", (rc == 0) ? "Success" : "Failure");
azazeal88 0:35df42ee93ed 37
azazeal88 0:35df42ee93ed 38 // Wait for a short length of time to allow user to see output messages.
azazeal88 0:35df42ee93ed 39 Thread::wait(2000);
azazeal88 0:35df42ee93ed 40
azazeal88 0:35df42ee93ed 41 if(rc == 0){
azazeal88 0:35df42ee93ed 42
azazeal88 0:35df42ee93ed 43 lcd.cls();
azazeal88 0:35df42ee93ed 44 lcd.locate(0,0);
azazeal88 0:35df42ee93ed 45 lcd.printf("Starting MQTT Client");
azazeal88 0:35df42ee93ed 46
azazeal88 0:35df42ee93ed 47 MQTTPacket_connectData data = MQTTPacket_connectData_initializer;
azazeal88 0:35df42ee93ed 48 data.MQTTVersion = 3;
azazeal88 0:35df42ee93ed 49 data.clientID.cstring = MqttClientId;
azazeal88 0:35df42ee93ed 50 rc = client.connect(data);
azazeal88 0:35df42ee93ed 51
azazeal88 0:35df42ee93ed 52 lcd.cls();
azazeal88 0:35df42ee93ed 53 lcd.locate(0,0);
azazeal88 0:35df42ee93ed 54 lcd.printf("MQTT Client: %s\n", (rc == 0) ? "Connected" : "Failed");
azazeal88 0:35df42ee93ed 55
azazeal88 0:35df42ee93ed 56 while(rc == 0){
azazeal88 0:35df42ee93ed 57 MQTT::Message message;
azazeal88 0:35df42ee93ed 58
azazeal88 0:35df42ee93ed 59 // QoS 0
azazeal88 0:35df42ee93ed 60 char buf[100];
azazeal88 0:35df42ee93ed 61 sprintf(buf, "Hello World!");
azazeal88 0:35df42ee93ed 62 message.qos = MQTT::QOS0;
azazeal88 0:35df42ee93ed 63 message.retained = false;
azazeal88 0:35df42ee93ed 64 message.dup = false;
azazeal88 0:35df42ee93ed 65 message.payload = (void*)buf;
azazeal88 0:35df42ee93ed 66 message.payloadlen = strlen(buf)+1;
azazeal88 0:35df42ee93ed 67 rc = client.publish(MqttTopic, message);
azazeal88 0:35df42ee93ed 68
azazeal88 0:35df42ee93ed 69 Thread::wait(5000);
azazeal88 0:35df42ee93ed 70
azazeal88 0:35df42ee93ed 71 }
azazeal88 0:35df42ee93ed 72 }
azazeal88 0:35df42ee93ed 73
azazeal88 0:35df42ee93ed 74 // It is good practice to close the socket
azazeal88 0:35df42ee93ed 75 eth.disconnect();
azazeal88 0:35df42ee93ed 76 }
azazeal88 0:35df42ee93ed 77