44 lines
1.4 KiB
C
44 lines
1.4 KiB
C
#include "mqtt_example.h"
|
|
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
#include <MQTTClient.h>
|
|
|
|
#define ADDRESS "tcp://localhost:1883"
|
|
#define CLIENTID "ExampleClientPub"
|
|
#define TOPIC "MQTT Examples"
|
|
#define QOS 1
|
|
#define TIMEOUT 10000L
|
|
|
|
int send_mqtt_msg(char *payload, size_t payload_len) {
|
|
MQTTClient client;
|
|
MQTTClient_connectOptions conn_opts = MQTTClient_connectOptions_initializer;
|
|
MQTTClient_message pubmsg = MQTTClient_message_initializer;
|
|
MQTTClient_deliveryToken token;
|
|
int rc;
|
|
|
|
MQTTClient_create(&client, ADDRESS, CLIENTID,
|
|
MQTTCLIENT_PERSISTENCE_NONE, NULL);
|
|
conn_opts.keepAliveInterval = 20;
|
|
conn_opts.cleansession = 1;
|
|
|
|
if ((rc = MQTTClient_connect(client, &conn_opts)) != MQTTCLIENT_SUCCESS)
|
|
{
|
|
printf("Failed to connect, return code %d\n", rc);
|
|
exit(-1);
|
|
}
|
|
pubmsg.payload = payload;
|
|
pubmsg.payloadlen = payload_len;
|
|
pubmsg.qos = QOS;
|
|
pubmsg.retained = 0;
|
|
MQTTClient_publishMessage(client, TOPIC, &pubmsg, &token);
|
|
printf("Waiting for up to %d seconds for publication of %s\n"
|
|
"on topic %s for client with ClientID: %s\n",
|
|
(int)(TIMEOUT/1000), payload, TOPIC, CLIENTID);
|
|
rc = MQTTClient_waitForCompletion(client, token, TIMEOUT);
|
|
printf("Message with delivery token %d delivered\n", token);
|
|
MQTTClient_disconnect(client, 10000);
|
|
MQTTClient_destroy(&client);
|
|
return rc;
|
|
} |