Ethernet mqtt server

PMK2021_MQTT_ETHERNET_SERVER

Committer:
nenad
Date:
Fri May 07 13:44:12 2021 +0000
Revision:
4:5b78021768e2
Parent:
1:276a09a95334
Ethernet mqtt server

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nenad 4:5b78021768e2 1
nenad 0:75fa10a22545 2
nenad 0:75fa10a22545 3 #include "mbed.h"
nenad 4:5b78021768e2 4 #include "EthernetInterface.h"
nenad 0:75fa10a22545 5 #include "platform/mbed_thread.h"
nenad 0:75fa10a22545 6 #include <MQTTClientMbedOs.h>
nenad 4:5b78021768e2 7
nenad 0:75fa10a22545 8 // Blinking rate in milliseconds
nenad 4:5b78021768e2 9 #define BLINKING_RATE_MS 500
nenad 4:5b78021768e2 10 DigitalOut led(LED1);
nenad 0:75fa10a22545 11
nenad 0:75fa10a22545 12 int arrivedcount = 0;
nenad 0:75fa10a22545 13 TCPSocket socket;
nenad 0:75fa10a22545 14 MQTTClient client(&socket);
nenad 0:75fa10a22545 15 MQTT::Message message;
nenad 0:75fa10a22545 16
nenad 0:75fa10a22545 17
nenad 4:5b78021768e2 18 char* topic_pub = "PMK-server-topic-pub";
nenad 4:5b78021768e2 19 char* topic_sub = "PMK-client-temperature";
nenad 1:276a09a95334 20
nenad 1:276a09a95334 21 const char *sec2str(nsapi_security_t sec)
nenad 1:276a09a95334 22 {
nenad 1:276a09a95334 23 switch (sec) {
nenad 1:276a09a95334 24 case NSAPI_SECURITY_NONE:
nenad 1:276a09a95334 25 return "None";
nenad 1:276a09a95334 26 case NSAPI_SECURITY_WEP:
nenad 1:276a09a95334 27 return "WEP";
nenad 1:276a09a95334 28 case NSAPI_SECURITY_WPA:
nenad 1:276a09a95334 29 return "WPA";
nenad 1:276a09a95334 30 case NSAPI_SECURITY_WPA2:
nenad 1:276a09a95334 31 return "WPA2";
nenad 1:276a09a95334 32 case NSAPI_SECURITY_WPA_WPA2:
nenad 1:276a09a95334 33 return "WPA/WPA2";
nenad 1:276a09a95334 34 case NSAPI_SECURITY_UNKNOWN:
nenad 1:276a09a95334 35 default:
nenad 1:276a09a95334 36 return "Unknown";
nenad 1:276a09a95334 37 }
nenad 1:276a09a95334 38 }
nenad 1:276a09a95334 39
nenad 0:75fa10a22545 40 void messageArrived(MQTT::MessageData& md)
nenad 0:75fa10a22545 41 {
nenad 0:75fa10a22545 42 MQTT::Message &message = md.message;
nenad 1:276a09a95334 43 printf("Message arrived: qos %d, retained %d, dup %d, packetid %d\r\n", message.qos, message.retained, message.dup, message.id);
nenad 1:276a09a95334 44 printf("Payload %.*s\r\n", message.payloadlen, (char*)message.payload);
nenad 0:75fa10a22545 45 ++arrivedcount;
nenad 0:75fa10a22545 46 }
nenad 0:75fa10a22545 47
nenad 0:75fa10a22545 48 int main()
nenad 4:5b78021768e2 49 {
nenad 4:5b78021768e2 50 printf("PMK2021 Ethernet MQTT example\r\n");
nenad 0:75fa10a22545 51
nenad 0:75fa10a22545 52 const char* hostname = "broker.mqttdashboard.com";
nenad 0:75fa10a22545 53 int port = 1883;
nenad 0:75fa10a22545 54 // Network interface
nenad 4:5b78021768e2 55 EthernetInterface net;
nenad 4:5b78021768e2 56 // Bring up the ethernet interface
nenad 4:5b78021768e2 57 net.connect();
nenad 0:75fa10a22545 58
nenad 4:5b78021768e2 59 // Show the network address
nenad 4:5b78021768e2 60 const char *ip = net.get_ip_address();
nenad 4:5b78021768e2 61 printf("IP address is: %s\r\n", ip ? ip : "No IP");
nenad 0:75fa10a22545 62
nenad 0:75fa10a22545 63 //client = MQTTClient::(&socket);
nenad 4:5b78021768e2 64 socket.open(&net);
nenad 0:75fa10a22545 65 socket.connect(hostname, port);
nenad 0:75fa10a22545 66
nenad 0:75fa10a22545 67 int rc=0;
nenad 0:75fa10a22545 68
nenad 0:75fa10a22545 69 MQTTPacket_connectData data = MQTTPacket_connectData_initializer;
nenad 0:75fa10a22545 70 data.MQTTVersion = 3;
nenad 4:5b78021768e2 71 data.clientID.cstring = "PMK-server";
nenad 0:75fa10a22545 72 //data.username.cstring = "testuser";
nenad 0:75fa10a22545 73 //data.password.cstring = "testpassword";
nenad 0:75fa10a22545 74 if ((rc = client.connect(data)) != 0)
nenad 1:276a09a95334 75 printf("rc from MQTT connect is %d\r\n", rc);
nenad 0:75fa10a22545 76
nenad 0:75fa10a22545 77 if ((rc = client.subscribe(topic_sub, MQTT::QOS2, messageArrived)) != 0)
nenad 1:276a09a95334 78 printf("rc from MQTT subscribe is %d\r\n", rc);
nenad 4:5b78021768e2 79
nenad 0:75fa10a22545 80
nenad 0:75fa10a22545 81 while (true) {
nenad 0:75fa10a22545 82 led = !led;
nenad 0:75fa10a22545 83 thread_sleep_for(BLINKING_RATE_MS);
nenad 4:5b78021768e2 84 printf("Server Yielding ");
nenad 0:75fa10a22545 85 client.yield(1000);
nenad 4:5b78021768e2 86 printf(" -> Yielded\r\n");
nenad 0:75fa10a22545 87
nenad 0:75fa10a22545 88 }
nenad 0:75fa10a22545 89 }