diff --git a/src/bambu.cpp b/src/bambu.cpp index 29be378..f36609f 100644 --- a/src/bambu.cpp +++ b/src/bambu.cpp @@ -553,30 +553,34 @@ void reconnect() { oledShowTopRow(); // Attempt to connect - if (client.connect(bambu_serialnr, bambu_username, bambu_accesscode)) { - Serial.println("MQTT re/connected"); + String clientId = String(bambu_serialnr) + "_" + String(random(0, 100)); + if (client.connect(clientId.c_str(), bambu_username, bambu_accesscode)){ + Serial.println("MQTT re/connected"); - client.subscribe(report_topic.c_str()); - bambu_connected = true; - oledShowTopRow(); - } else { - Serial.print("failed, rc="); - Serial.print(client.state()); - Serial.println(" try again in 5 seconds"); - bambu_connected = false; - oledShowTopRow(); - - yield(); - vTaskDelay(5000 / portTICK_PERIOD_MS); - if (retries > 5) { - Serial.println("Disable Bambu MQTT Task after 5 retries"); - //vTaskSuspend(BambuMqttTask); - vTaskDelete(BambuMqttTask); - break; + client.subscribe(report_topic.c_str()); + bambu_connected = true; + oledShowTopRow(); } + else + { + Serial.print("failed, rc="); + Serial.print(client.state()); + Serial.println(" try again in 5 seconds"); + bambu_connected = false; + oledShowTopRow(); - retries++; - } + yield(); + vTaskDelay(5000 / portTICK_PERIOD_MS); + if (retries > 5) + { + Serial.println("Disable Bambu MQTT Task after 5 retries"); + // vTaskSuspend(BambuMqttTask); + vTaskDelete(BambuMqttTask); + break; + } + + retries++; + } } } @@ -619,38 +623,40 @@ bool setupMqtt() { // Verbinden mit dem MQTT-Server bool connected = true; - if (client.connect(bambu_serialnr, bambu_username, bambu_accesscode)) - { - client.setCallback(mqtt_callback); - client.setBufferSize(5120); - client.subscribe(report_topic.c_str()); - //client.subscribe(request_topic.c_str()); - Serial.println("MQTT-Client initialisiert"); + String clientId = String(bambu_serialnr) + "_" + String(random(0, 100)); + if (client.connect(clientId.c_str(), bambu_username, bambu_accesscode)) + { + client.setCallback(mqtt_callback); + client.setBufferSize(5120); + client.subscribe(report_topic.c_str()); + // client.subscribe(request_topic.c_str()); + Serial.println("MQTT-Client initialisiert"); - oledShowMessage("Bambu Connected"); - bambu_connected = true; - oledShowTopRow(); + oledShowMessage("Bambu Connected"); + bambu_connected = true; + oledShowTopRow(); - xTaskCreatePinnedToCore( - mqtt_loop, /* Function to implement the task */ - "BambuMqtt", /* Name of the task */ - 10240, /* Stack size in words */ - NULL, /* Task input parameter */ - mqttTaskPrio, /* Priority of the task */ - &BambuMqttTask, /* Task handle. */ - mqttTaskCore); /* Core where the task should run */ - } - else - { - Serial.println("Fehler: Konnte sich nicht beim MQTT-Server anmelden"); - oledShowMessage("Bambu Connection Failed"); - vTaskDelay(2000 / portTICK_PERIOD_MS); - connected = false; - oledShowTopRow(); + xTaskCreatePinnedToCore( + mqtt_loop, /* Function to implement the task */ + "BambuMqtt", /* Name of the task */ + 10240, /* Stack size in words */ + NULL, /* Task input parameter */ + mqttTaskPrio, /* Priority of the task */ + &BambuMqttTask, /* Task handle. */ + mqttTaskCore); /* Core where the task should run */ + } + else + { + Serial.println("Fehler: Konnte sich nicht beim MQTT-Server anmelden"); + oledShowMessage("Bambu Connection Failed"); + vTaskDelay(2000 / portTICK_PERIOD_MS); + connected = false; + oledShowTopRow(); + } + + if (!connected) + return false; } - - if (!connected) return false; - } else { Serial.println("Fehler: Keine MQTT-Daten vorhanden");