ESP8266 PubSubClient spinnt

Gast #6020835
Lesenswert?

Hallo zusammen

Ich versuche mithilfe des PubSubClients mit einem MQTT Broker zu 
kommunizieren. Dies klappt auch grundsätzlich ganz gut.

https://github.com/knolleary/pubsubclient

Nun zum Problem. Wenn ich einen Disconnect mache und diesen dann prüfe 
um daraufhin erneut zu verbinden, bekomme ich immer nur -2 (No Internet) 
als Antwort zurück.
1
void reconnect()
2
{
3
  Serial.println("Connecting to MQTT...");
4
  client.disconnect(); 
5
  if(!client.connected())
6
  {
7
     char tmpString[100];
8
     client.connect(.....);
9
  }
10
}

Wenn ich nun aber die reconnect funktion durch einen callback meines 
WebServers aufrufe, klappt der Reconnect. Wirklich sehr paradox.

Ich habe auf dem ESP noch einen Webserver am laufen
1
ESP8266WebServer server(80);

mit diesem höre ich mittels .on auf verschiedene adressen.
1
server.on("/connectMQTT", reconnect);

Wird der reconnect vom server aufgerufen, klappts. Wird der Reconnect 
mittels eines SW-Timers im Callback aufgerufen, klappts nicht!

Fehlermeldung:
1
Connecting to MQTT...
2
:ref 1
3
:ctmo
4
:abort
5
:ur 1
6
:del
7
failed with state -2

Hat jemand eine Idee, wo zu suchen ist?
Danke
Gast #6020847
Lesenswert?

Hast du den Autor von PubSubClient gefragt?

Ich würde mich an deiner Stelle an diesen Bug Report anhängen: 
https://github.com/knolleary/pubsubclient/issues/619

Während du auf die Antwort wartest, probiere eine ältere Version vom 
ESP8266 Core. Ich bin mit Version 2.3.0 gut zurecht gekommen, mit 2.4.x 
und 2.5.0 hingegen nicht. Von da an habe ich aufgegeben, auf eine 
funktionierendeneue Version zu warten. Ich nutze wieder 2.3.0.
Gast #6020883
Lesenswert?

ESPler schrieb:
> Hab mich soeben an den Bug Report gehängt.

Du solltest das nochmal ordentlich formatieren und tmpString raus nehmen 
oder klarstellen, was du mit tmpString anstellst.

Überhaupt finde ich, dass dein Codeschnipsel zum Nachvollziehen nicht 
ausreicht. Du musst dem Autor schon etwas compilierbares bieten, womit 
er das Problem nachvollziehen kann.
Gast #6020886
Lesenswert?

ESPler schrieb:
> Ok Problem erkannt!
> Ich darf den reconnect nicht aus dem Timer Callback heraus aufrufen!

Warum schreibst du das dann nicht in den Bug Report? Soll die Lösung 
(bzw. Erklärung) dein persönliches Geheimnis bleiben? Möchtest du, dass 
der Autor der Bibliothek jetzt seine Wertvolle Zeit damit vergeudetet, 
das Problem zu untersuchen und eine Lösung für dich zu finden?

Du willst doch kein Arsch sein - hoffe ich mal.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren