58 lines
1.3 KiB
C
58 lines
1.3 KiB
C
#include <mosquitto.h>
|
|
#include <stdio.h>
|
|
#include <string.h>
|
|
#include <stdbool.h>
|
|
|
|
#include "../config.h"
|
|
|
|
struct mosquitto *mosq;
|
|
|
|
void broker_on_connect(void);
|
|
|
|
void on_connect(struct mosquitto *client, void *obj, int rc)
|
|
{
|
|
if (rc != 0) {
|
|
fprintf(stderr, "%s\n", mosquitto_connack_string(rc));
|
|
return;
|
|
}
|
|
|
|
puts("Connected to " MQTT_IP);
|
|
|
|
broker_on_connect();
|
|
}
|
|
|
|
void on_message(struct mosquitto *mosq, void *obj, const struct mosquitto_message *message)
|
|
{
|
|
printf("Received message on topic %s\n", message->topic);
|
|
}
|
|
|
|
void mqtt_send_message(char *topic, char *message)
|
|
{
|
|
int result = mosquitto_publish(mosq, NULL, topic, strlen(message), message, 0, false);
|
|
if (result != MOSQ_ERR_SUCCESS) {
|
|
fprintf(stderr, "Error sending message: %d\n", result);
|
|
}
|
|
}
|
|
|
|
void init_mqtt(void)
|
|
{
|
|
int version[3];
|
|
mosquitto_lib_init();
|
|
mosquitto_lib_version(&version[0], &version[1], &version[2]);
|
|
printf("Using mosquitto library version %i.%i.%i\n", version[0], version[1], version[2]);
|
|
|
|
mosq = mosquitto_new(NULL, true, NULL);
|
|
|
|
mosquitto_connect_callback_set(mosq, on_connect);
|
|
mosquitto_message_callback_set(mosq, on_message);
|
|
|
|
mosquitto_username_pw_set(mosq, MQTT_USER, MQTT_PASSWORD);
|
|
mosquitto_connect(mosq, MQTT_IP, MQTT_PORT, 60);
|
|
|
|
mosquitto_loop_forever(mosq, -1, 1);
|
|
|
|
mosquitto_destroy(mosq);
|
|
mosquitto_lib_cleanup();
|
|
}
|
|
|