From 952a3a9d641c5a191958aa6a34eb2f5258a0e374 Mon Sep 17 00:00:00 2001 From: "Tanner Collin (aider)" Date: Sat, 21 Jun 2025 13:50:14 -0600 Subject: [PATCH] feat: Make MQTT topic dynamic with device name --- firmware/firmware.ino | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/firmware/firmware.ino b/firmware/firmware.ino index 9f73bdb..9303017 100644 --- a/firmware/firmware.ino +++ b/firmware/firmware.ino @@ -18,7 +18,7 @@ String deviceName; const char broker[] = "192.168.69.106"; int port = 1883; -const char topic[] = "iot/airmega/speed"; +String topic; // Changed from const char[] #define QOS_2 2 void (* resetFunc) (void) = 0; @@ -41,6 +41,11 @@ void setup() { Serial.print("[SYSTEM] Generated device name: "); Serial.println(deviceName); + // Construct the dynamic topic string + topic = "iot/purifier/" + deviceName + "/speed"; + Serial.print("[SYSTEM] Using MQTT topic: "); + Serial.println(topic); + static int error_count = 0; WiFi.hostname(deviceName.c_str()); @@ -113,7 +118,7 @@ void setup() { Serial.print("[MQTT] Subscribing to topic: "); Serial.println(topic); - mqttClient.subscribe(topic, QOS_2); + mqttClient.subscribe(topic.c_str(), QOS_2); Serial.println("[MQTT] Waiting for messages."); } @@ -136,7 +141,7 @@ void loop() { Serial.print("[MQTT] Subscribing to topic: "); Serial.println(topic); - mqttClient.subscribe(topic, QOS_2); + mqttClient.subscribe(topic.c_str(), QOS_2); } else { error_count = 0; mqttClient.poll(); @@ -168,7 +173,11 @@ void onMqttMessage(int messageSize) { Serial.println(message); if (msgTopic != topic) { - Serial.println("[MQTT] Invalid topic, returning."); + Serial.print("[MQTT] Invalid topic '"); + Serial.print(msgTopic); + Serial.print("', expected '"); + Serial.print(topic); + Serial.println("'. Returning."); return; }