Добрый день!
Для подключения к брокеру использую такой код:
При такой организации проверки подключения к брокеру (НЕ Wi-Fi), эта самая проверка осуществляется только при включении (перезагрузке) ESP. Если же ESP однажды зацепилась (client.connected()) и тупо выдернуть шнурок (не электрический, разумеется) из Wi-Fi роутера, то статус client.connected() не изменится, в то время как связи с брокером не будет. Что мне вообще непонятно, так это то, что в этом случае и if (client.connected()) также не выполняется и считывание температуры также не происходит...
Если воткнуть шнурок обратно, то происходит повторное соединение с брокером и все продолжает работать, как и должно.
Отсюда вопрос: как намастырить проверку соединения с брокером, чтобы при потере связи, можно было бы, скажем, что-то включить/выключить и проч.?
Для подключения к брокеру использую такой код:
Код:
void loop() {
// подключаемся к wi-fi
if (WiFi.status() != WL_CONNECTED) {
Serial.print("Connecting to ");
Serial.print(ssid);
Serial.println("...");
WiFi.begin(ssid, pass);
if (WiFi.waitForConnectResult() != WL_CONNECTED)
return;
Serial.println("WiFi connected");
}
// подключаемся к MQTT серверу
if (WiFi.status() == WL_CONNECTED) {
if (!client.connected())
{
Serial.println("Connecting to MQTT server");
if (client.connect(MQTT::Connect("arduinoClient2").set_auth(mqtt_user, mqtt_pass)))
{
Serial.println("Connected to MQTT server");
client.set_callback(callback);
client.subscribe("test/led"); // подписывааемся на топик с данными для светодиода
client.subscribe("test/t"); // подписывааемся на топик с данными для предельной температуры
}
else
{
Serial.println("Could not connect to MQTT server");
}
}
if (client.connected())
{
client.loop();
TempSend(); // читаем и отправляем данные с датчика температуры
// дальше, не интересно...
}
Если воткнуть шнурок обратно, то происходит повторное соединение с брокером и все продолжает работать, как и должно.
Отсюда вопрос: как намастырить проверку соединения с брокером, чтобы при потере связи, можно было бы, скажем, что-то включить/выключить и проч.?