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; }