ESP32 WIFI MQTT Verbindungsprobleme

OP #6234678
Lesenswert?

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
Lesenswert?

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
Lesenswert?

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.
OP #6236148
Lesenswert?

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
Lesenswert?

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
Lesenswert?

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

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