Ethernet mqtt server
PMK2021_MQTT_ETHERNET_SERVER
main.cpp
- Committer:
- nenad
- Date:
- 2021-05-07
- Revision:
- 4:5b78021768e2
- Parent:
- 1:276a09a95334
File content as of revision 4:5b78021768e2:
#include "mbed.h"
#include "EthernetInterface.h"
#include "platform/mbed_thread.h"
#include <MQTTClientMbedOs.h>
// Blinking rate in milliseconds
#define BLINKING_RATE_MS 500
DigitalOut led(LED1);
int arrivedcount = 0;
TCPSocket socket;
MQTTClient client(&socket);
MQTT::Message message;
char* topic_pub = "PMK-server-topic-pub";
char* topic_sub = "PMK-client-temperature";
const char *sec2str(nsapi_security_t sec)
{
switch (sec) {
case NSAPI_SECURITY_NONE:
return "None";
case NSAPI_SECURITY_WEP:
return "WEP";
case NSAPI_SECURITY_WPA:
return "WPA";
case NSAPI_SECURITY_WPA2:
return "WPA2";
case NSAPI_SECURITY_WPA_WPA2:
return "WPA/WPA2";
case NSAPI_SECURITY_UNKNOWN:
default:
return "Unknown";
}
}
void messageArrived(MQTT::MessageData& md)
{
MQTT::Message &message = md.message;
printf("Message arrived: qos %d, retained %d, dup %d, packetid %d\r\n", message.qos, message.retained, message.dup, message.id);
printf("Payload %.*s\r\n", message.payloadlen, (char*)message.payload);
++arrivedcount;
}
int main()
{
printf("PMK2021 Ethernet MQTT example\r\n");
const char* hostname = "broker.mqttdashboard.com";
int port = 1883;
// Network interface
EthernetInterface net;
// Bring up the ethernet interface
net.connect();
// Show the network address
const char *ip = net.get_ip_address();
printf("IP address is: %s\r\n", ip ? ip : "No IP");
//client = MQTTClient::(&socket);
socket.open(&net);
socket.connect(hostname, port);
int rc=0;
MQTTPacket_connectData data = MQTTPacket_connectData_initializer;
data.MQTTVersion = 3;
data.clientID.cstring = "PMK-server";
//data.username.cstring = "testuser";
//data.password.cstring = "testpassword";
if ((rc = client.connect(data)) != 0)
printf("rc from MQTT connect is %d\r\n", rc);
if ((rc = client.subscribe(topic_sub, MQTT::QOS2, messageArrived)) != 0)
printf("rc from MQTT subscribe is %d\r\n", rc);
while (true) {
led = !led;
thread_sleep_for(BLINKING_RATE_MS);
printf("Server Yielding ");
client.yield(1000);
printf(" -> Yielded\r\n");
}
}