- include "mbed.h"
- include "MQTTEthernet.h"
- include "MQTTClient.h"
- include "MQTTNetwork.h"
MQTT Variables
char* MqttHostname = "35.239.119.247";
int MqttPort = 1883;
char* MqttTopic = "mbedqtt";
char* Username = "admin";
char* Password = "public";
char* MqttClientId = "changeme";
static const char * topic = "sub";
Serial pc(USBTX, USBRX, 115200);
void messageArrived(MQTT::MessageData& md)
{
pc.printf("Messages Arrived");
printf("Timestamp: %d\n", mscount);
MQTT::Message &message = md.message;
printf("Message received: qos %d, retained %d, dup %d, packetid %d\n", message.qos, message.retained, message.dup, message.id);
printf("Payload %.*s\n", message.payload, (char*)message.payloadlen);
}
int main()
{
while(true){
MQTTEthernet eth = MQTTEthernet();
const char *ip = eth.get_ip_address();
printf("IP address is: %s\n", ip ? ip : "No IP");
Create Mbed Client Interface
MQTT::Client<MQTTEthernet, Countdown> client = MQTT::Client<MQTTEthernet, Countdown>(eth);
Create TCP connection
eth.open(eth.getEth());
int rc = eth.connect(MqttHostname, MqttPort);
printf("TCP Status: %s\n", (rc == 0) ? "Success" : "Failure");
Wait for a short length of time to allow user to see output messages.
Thread::wait(2000);
printf("Starting MQTT Client");
int a = rand()%16;
char buff[50];
sprintf(buff, "%s - %d", MqttClientId, a);
MQTTPacket_connectData data = MQTTPacket_connectData_initializer;
data.MQTTVersion = 3;
data.clientID.cstring = buff;
data.username.cstring = Username;
data.password.cstring = Password;
rc = client.connect(data);
printf("MQTT Client: %s\n", (rc == 0) ? "Connected" : "Failed");
printf("Subscribing to MQTT topic %s: ", topic);
if ((rc = client.subscribe(topic, MQTT::QOS2, messageArrived)) != 0)
printf("failed: rc= %d\r\n", rc);
else
printf("success\r\n");
MQTT::Message message;
Brings up the network interfac
while(client.isConnected()){
QoS 0
char buf[100];
sprintf(buf, "Hello!");
message.qos = MQTT::QOS0;
message.retained = false;
message.dup = false;
message.payload = (void*)buf;
message.payloadlen = strlen(buf)+1;
rc = client.publish(MqttTopic, message);
printf("%s", message);
printf("\n");
printf("MQTT Client Status: %d\n", client.isConnected());
Thread::wait(1000);
}
eth.disconnect();
}
}
MQTT Variables char* MqttHostname = "35.239.119.247"; int MqttPort = 1883; char* MqttTopic = "mbedqtt"; char* Username = "admin"; char* Password = "public"; char* MqttClientId = "changeme";
static const char * topic = "sub";
Serial pc(USBTX, USBRX, 115200);
void messageArrived(MQTT::MessageData& md) { pc.printf("Messages Arrived"); printf("Timestamp: %d\n", mscount); MQTT::Message &message = md.message; printf("Message received: qos %d, retained %d, dup %d, packetid %d\n", message.qos, message.retained, message.dup, message.id); printf("Payload %.*s\n", message.payload, (char*)message.payloadlen);
}
int main() { while(true){ MQTTEthernet eth = MQTTEthernet(); const char *ip = eth.get_ip_address();
printf("IP address is: %s\n", ip ? ip : "No IP");
Create Mbed Client Interface MQTT::Client<MQTTEthernet, Countdown> client = MQTT::Client<MQTTEthernet, Countdown>(eth);
Create TCP connection eth.open(eth.getEth());
int rc = eth.connect(MqttHostname, MqttPort); printf("TCP Status: %s\n", (rc == 0) ? "Success" : "Failure");
Wait for a short length of time to allow user to see output messages. Thread::wait(2000);
printf("Starting MQTT Client");
int a = rand()%16; char buff[50]; sprintf(buff, "%s - %d", MqttClientId, a);
MQTTPacket_connectData data = MQTTPacket_connectData_initializer; data.MQTTVersion = 3; data.clientID.cstring = buff; data.username.cstring = Username; data.password.cstring = Password; rc = client.connect(data);
printf("MQTT Client: %s\n", (rc == 0) ? "Connected" : "Failed");
printf("Subscribing to MQTT topic %s: ", topic);
if ((rc = client.subscribe(topic, MQTT::QOS2, messageArrived)) != 0) printf("failed: rc= %d\r\n", rc); else printf("success\r\n");
MQTT::Message message;
Brings up the network interfac
while(client.isConnected()){
QoS 0 char buf[100]; sprintf(buf, "Hello!"); message.qos = MQTT::QOS0; message.retained = false; message.dup = false; message.payload = (void*)buf; message.payloadlen = strlen(buf)+1; rc = client.publish(MqttTopic, message); printf("%s", message); printf("\n");
printf("MQTT Client Status: %d\n", client.isConnected()); Thread::wait(1000); }
eth.disconnect(); }
}