feat: Make MQTT topic dynamic with device name
This commit is contained in:
parent
7d77c5b051
commit
952a3a9d64
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user