Files
2025-04-08 15:19:35 +08:00

73 lines
2.2 KiB
C++

#include "ATOM_PRINTER_MQTT.h"
extern bool mqtt_connect_change_event;
bool mqttConnect(String _mqtt_broker, int _mqtt_port, String _mqtt_id, String _mqtt_user, String _mqtt_password,
unsigned long _timeout)
{
unsigned long start = millis();
bool is_conneced = false;
mqttClient.disconnect();
mqttClient.setServer(_mqtt_broker.c_str(), _mqtt_port);
Serial.println("Connecting...");
String mqttid;
if (_mqtt_broker.indexOf("m5stack") != -1) {
mqttid = ("MQTTID_" + String(random(65536)));
} else {
if (mqttid == "") {
mqttid = ("MQTTID_" + String(random(65536)));
} else {
mqttid = _mqtt_id;
}
}
if (mqtt_topic == "") {
mqtt_topic = device_mac;
}
if (_mqtt_user == "") {
_mqtt_user = ("_mqtt_user" + String(random(65536)));
}
if (_mqtt_password == "") {
_mqtt_password = ("_mqtt_password" + String(random(65536)));
}
while (millis() - start < _timeout) {
if (mqttClient.connect(mqttid.c_str(), _mqtt_user.c_str(), _mqtt_password.c_str())) {
Serial.println("MQTT Connected!");
is_conneced = true;
Serial.println(F(" success"));
printer.printASCII(F("successfully connect to UIFLOW"));
printer.newLine(3);
printer.printASCII("subscribe: " + mqtt_topic);
Serial.println("subscribe: " + mqtt_topic);
mqttClient.subscribe(mqtt_topic.c_str());
break;
} else {
Serial.print(".");
vTaskDelay(500);
}
}
if (is_conneced) {
preferences.putString("MQTT_BROKER", _mqtt_broker);
preferences.putInt("MQTT_PORT", _mqtt_port);
preferences.putString("MQTT_ID", _mqtt_id);
preferences.putString("MQTT_USER", _mqtt_user);
preferences.putString("MQTT_PASSPWD", _mqtt_password);
preferences.putString("MQTT_TOPIC", mqtt_topic);
mqtt_broker = _mqtt_broker;
mqtt_port = _mqtt_port;
mqtt_id = _mqtt_id;
mqtt_user = _mqtt_user;
mqtt_password = _mqtt_password;
device_state = kMQTTConnected;
} else {
device_state = kMQTTDisconnected;
}
return is_conneced;
}