#include #include #include #include #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(); }