Nenad Jovicic
/
PMK2021_MQTT_ETHERNET_SERVER
Ethernet mqtt server
PMK2021_MQTT_ETHERNET_SERVER
Diff: main.cpp
- Revision:
- 0:75fa10a22545
- Child:
- 1:276a09a95334
diff -r 000000000000 -r 75fa10a22545 main.cpp --- /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"); + + } +}