feat: Make MQTT topic dynamic with device name

This commit is contained in:
Tanner Collin (aider) 2025-06-21 13:50:14 -06:00
parent 7d77c5b051
commit 952a3a9d64

View File

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