Ethernet mqtt server

PMK2021_MQTT_ETHERNET_SERVER

Revision:
0:75fa10a22545
Child:
1:276a09a95334
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Thu Apr 30 23:31:41 2020 +0000
@@ -0,0 +1,112 @@
+/* mbed Microcontroller Library
+ * Copyright (c) 2019 ARM Limited
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+#include "mbed.h"
+#include "EthernetInterface.h"
+#include "platform/mbed_thread.h"
+#include <MQTTClientMbedOs.h>
+// Blinking rate in milliseconds
+#define BLINKING_RATE_MS                                                    500
+// Initialise the digital pin LED1 as an output
+    DigitalOut led(LED1);
+Serial pc(USBTX,USBRX);
+
+InterruptIn button(USER_BUTTON);
+
+int arrivedcount = 0;
+TCPSocket socket;
+MQTTClient client(&socket);
+MQTT::Message message;
+
+int button_pressed=0;
+
+float version = 0.6;
+    char* topic = "mbed-sample-pub";
+    char* topic_sub = "mbed-sample-sub";
+
+
+void messageArrived(MQTT::MessageData& md)
+{
+    MQTT::Message &message = md.message;
+    pc.printf("Message arrived: qos %d, retained %d, dup %d, packetid %d\r\n", message.qos, message.retained, message.dup, message.id);
+    pc.printf("Payload %.*s\r\n", message.payloadlen, (char*)message.payload);
+    ++arrivedcount;
+}
+
+void buttonFunction() {
+    
+    button_pressed=1;
+   
+}
+
+
+
+
+int main()
+{
+    button.rise(&buttonFunction);  // attach the address of the flip function to the rising edge
+    
+    const char* hostname = "broker.mqttdashboard.com";
+    int port = 1883;    
+    // Network interface
+    EthernetInterface net;
+    
+    // Bring up the ethernet interface
+    printf("Ethernet socket example\n");
+    net.connect();
+
+    // Show the network address
+    const char *ip = net.get_ip_address();
+    pc.printf("IP address is: %s\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 = "mbed-sample";
+    //data.username.cstring = "testuser";
+    //data.password.cstring = "testpassword";
+    if ((rc = client.connect(data)) != 0)
+        pc.printf("rc from MQTT connect is %d\r\n", rc);
+
+    if ((rc = client.subscribe(topic_sub, MQTT::QOS2, messageArrived)) != 0)
+        pc.printf("rc from MQTT subscribe is %d\r\n", rc);
+
+    
+      
+    
+    
+    
+
+    while (true) {
+        led = !led;
+        thread_sleep_for(BLINKING_RATE_MS);
+        if (button_pressed==1) {
+            button_pressed=0;    
+            pc.printf("sace publish\r\n");    
+            // QoS 0
+            char buf[100];
+            sprintf(buf, "Hello World!  QoS 0 message from app version %f\r\n", version);
+            message.qos = MQTT::QOS0;
+            message.retained = false;
+            message.dup = false;
+            message.payload = (void*)buf;
+            message.payloadlen = strlen(buf)+1;
+            client.publish(topic, message);
+            //pc.printf("sace jild\r\n"); 
+            //client.yield(1000);
+            //pc.printf("izjildovo\r\n"); 
+        }
+        pc.printf("sace jild\r\n"); 
+        client.yield(1000);
+        pc.printf("izjildovo\r\n"); 
+        
+    }
+}