ESP32 WIFI MQTT Verbindungsprobleme

OP #6234678
Hallo

Ich versuche gerade mein ESP32 mit mein HASSIO system zu verbinden, 
jedoch ist ein seltsames Problem aufgetreten

Alles hat gut funktioniert, bis ich mein Router umgestellt habe. Ich 
habe von dem "originalen" Magenta Connect Box auf den NETGEAR RAX40 
wegen NAT Loopback aufgerüstet.

Das Problem das aufgetreten ist:
Wenn ich mich versuche mit MQTT Server zu verbinden dann haut es mich 
aus dem WLAN herraus.

folgende Reihenfolge:

Ich verbinde mich mit dem WLAN (alles ganz normal)
Ich verbinde mich mit dem MQTT Serve (noch alles ganz normal)
kurte Zeit später verliere ich die WLAN Verbindung und nix geht mehr

Wenn ich mich nur mit dem WLAN verbinde ohne MQTT dann habe ich das 
Problem nicht.

Ich hatte ein Problem wo der ESP keinen Hostname in Rouder angezeigt 
hat. Dies habe ich behoben siehe:
https://github.com/espressif/arduino-esp32/issues/2537

Ich habe ein kleines Testprogramm geschrieben:
1
#include <WiFi.h>
2
#include <PubSubClient.h>
3

4
const char* ssid = "";
5
const char* password = "";
6
const char* mqttServer = "192.168.0.24";
7
const int mqttPort = 1883;
8

9
WiFiClient espClient;
10
PubSubClient client(espClient);
11

12
void setup()
13
{
14
Serial.begin(115200);
15
WiFi.config(INADDR_NONE, INADDR_NONE, INADDR_NONE);
16
WiFi.setHostname("ESP32");
17
WiFi.begin(ssid, password);
18
while (WiFi.status() != WL_CONNECTED)
19
{
20
Serial.println(".");
21
delay(500);
22
}
23

24
Serial.println("Connected to the WiFi network");
25
Serial.println("IP Adress: ");
26
Serial.println(WiFi.localIP());
27

28
client.setServer(mqttServer, mqttPort);
29
client.setCallback(callback);
30
client.connect("1234"); //<- Problem
31
}
32

33
void callback(char* topic, byte* message, unsigned int length)
34
{
35
Serial.print("Message arrived on topic: ");
36
Serial.print(topic);
37
Serial.print(". Message: ");
38
}
39

40
void loop()
41
{
42
if (WiFi.status() != WL_CONNECTED )
43
{
44
delay(50);
45
Serial.println("LostConnection");
46
}
47

48
if (!client.connected())
49
{
50
delay(50);
51
Serial.println("LostConnectionMQTT");
52
}
53

54
}

Ein ähnliche Code läuft auch auf all meine ESP8266, da gibt es keine 
Probleme.

Woran kann es liegen?
OP #6234866
Hallo

Danke für die Antwort.

Ja das ist mir durchaus bewusst. Dies löst leider nicht das Problem das 
es mich immer vom WIFI trennt.

Ich habe mal ein Video vom verhalten gemacht:
(siehe Anhang)
Ich lade den Code hoch und mache nacher nichts mehr.
Nach einiger Zeit kommt dann die Meldung das ich die WLAN Verbindung 
verloren habe.
Angehängte Dateien:
Gast #6235433
Markus P. schrieb:
> Kann es an der ESP32 Wlan Lib. liegen?

Ja.

Aber ich bezweifel, dass diese Info hilfreich ist. Es kann auch an 
vielen Anderen Komponenten liegen. Und selbst wenn, du wirst die meisten 
davon nicht ändern können. Also konzentriere dich auf die Teile, die du 
beeinflussen kannst.

Als ersten würde ich mal die Stromversorgung überprüfen, ob sie stabil 
ist. Am besten mit einem Oszilloskop.
Gast #6235839
Markus P. schrieb:
> Ich betreibe den ESP per USB alleine auf dem Tisch.

Das kann schon problematisch sein. Du wärst nicht der erste, dessen USB 
Kabel zu wenig Strom liefern, weil irgendwo zu große Widerstände in der 
Verbindung sind.
OP #6236148
Ja das kann natürlich sein.

Ich habe es jetzt auch mal mit anderen Kabeln ausgetestet (ich habe es 
auch an verschiedenen USB Ports versucht (+ an meinen gepowerten USB Hub 
an den ich normalerweise alles anschließe)).

Das ganze Setup (Kabel, Code, Platine, ...)  hat vor dem Router Wechsel 
ohne Probleme funktioniert.

Ich vermute eher ein Software Problem.
Gast #6237513
Ich würde mal in der callback-function Folgendes machen:

Anstatt die payload direkt zu nehmen, mach eine Kopie
1
  byte* p = (byte*)malloc(length);
2
  // Copy the payload to the new buffer
3
  memcpy(p,payload,length);
4
 
5
  Hier kommt dein processwasweißich-Code
6

7
  // Free the memory
8
  free(p);
OP #6240256
Ich habe das nun ausgetestet und leider kein Erfolg.

Ich bin jedoch auf andere Sachen draufkommen:

Wenn ich mich über meinen Zweiten Router einlocke dann habe ich die 
Probleme nicht (Dieser hängt am selben lokalen Netzwerk und gibt nur 
einen Extra Einstiegs punkt)
Könnte beim Router was falsch eingestellt sein?

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 6 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.