From 8c811729b19d234438105eb44731dcb7ffb4f9a9 Mon Sep 17 00:00:00 2001
From: Reimar <mail@reim.ar>
Date: Tue, 18 Mar 2025 10:43:30 +0100
Subject: [PATCH] Create IoT project and connect to MQTT server

---
 iot/.gitignore       |  3 +++
 iot/Makefile         |  3 +++
 iot/config.example.h |  5 +++++
 iot/main.c           | 44 ++++++++++++++++++++++++++++++++++++++++++++
 4 files changed, 55 insertions(+)
 create mode 100644 iot/.gitignore
 create mode 100644 iot/Makefile
 create mode 100644 iot/config.example.h
 create mode 100644 iot/main.c

diff --git a/iot/.gitignore b/iot/.gitignore
new file mode 100644
index 0000000..aadaa90
--- /dev/null
+++ b/iot/.gitignore
@@ -0,0 +1,3 @@
+a.out
+config.h
+
diff --git a/iot/Makefile b/iot/Makefile
new file mode 100644
index 0000000..563e22c
--- /dev/null
+++ b/iot/Makefile
@@ -0,0 +1,3 @@
+all: main.c
+	$(CC) -lmosquitto main.c
+
diff --git a/iot/config.example.h b/iot/config.example.h
new file mode 100644
index 0000000..20d78c9
--- /dev/null
+++ b/iot/config.example.h
@@ -0,0 +1,5 @@
+#define MQTT_IP "127.0.0.1"
+#define MQTT_PORT 1883
+#define MQTT_USER "user"
+#define MQTT_PASSWORD "password"
+
diff --git a/iot/main.c b/iot/main.c
new file mode 100644
index 0000000..3862f39
--- /dev/null
+++ b/iot/main.c
@@ -0,0 +1,44 @@
+#include <mosquitto.h>
+#include <stdlib.h>
+#include <stdio.h>
+
+#include "config.h"
+
+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);
+}
+
+void on_message(struct mosquitto *mosq, void *obj, const struct mosquitto_message *message)
+{
+	printf("Received message on topic %s\n", message->topic);
+}
+
+int main(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]);
+
+	struct mosquitto *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();
+
+	return EXIT_SUCCESS;
+}
+