|
发表于 2020-7-18 12:34:16
|
显示全部楼层
在你的基础上再作个改进:
bool mqtt_reconnect() {
String mqttlname = HOSTNAME + String(ESP.getChipId()).substring(0, 4);
while (!mqtt_client.connected()) {
if (mqtt_client.connect(mqttlname.c_str(), MQTT_USER, MQTT_PASS)) {
Serial.println(F("MQTT connected!"));
mqtt_client.publish("mqttl/status", "alive");
//mqtt_client.subscribe("mqttl/set");
delay(5000);
break;//防止配网后陷入发布alive的死循环
}
else {
Serial.print(F("MQTT Connection failed: rc="));
Serial.println(mqtt_client.state());
Serial.println(F(" Retrying in 5 seconds"));
delay(5000);
}
}
return true;
}
这样每个芯片不同,clientid就不同了,仿热点名后缀的。
通用性越来越强了,这样家里同一台服务器可以服务多个网关设备了。
|
|