NEWS
MQTT zu viele Clients
-
Liebe Gemeinde,
Ich habe auf einen Raspi 4 den ioBroker am Laufen wobei alles sehr gut läuft, auch ein MQTT Broker/Client ist installiert.
Grundsätzlich lauft dieser auch schon einige Jahre problemlos.
Nun habe ich ein neues Projekt mit 14 ESP8266 begonnen welche mir im Minutentakt Werte von Akkus über MQTT senden.
Nach einigen Tagen habe ich dann plötzlich über 19000 Clients im MQTT und kann dann nicht mehr zugreifen.
Löschen ist unmöglich, so auch das genauere Betrachten da er wenn ich auf die Objekte gehe abschmiert.
Hat hier wer einen Verdacht an was dies liegen kann, grundsätzlich sind es mit allen Zusammen nicht über 25 Clients!DANKE für Eure Hilfe
-
@stefan3107 sagte in MQTT zu viele Clients:
Projekt mit 14 ESP8266 begonnen
Wenn du die Client-ID in deinem Projekt nicht explizit vergibst wird eine zufällige ID generiert. Wenn dann deine Login-/Logout Prozedur nicht sauber ist, kann es zu solchen Effekten kommen. Also zunächst eine Client-ID vergeben. Dabei dringend darauf achten, dass diese eindeutig sein muss, also nicht die gleiche für alle deine ESPs nutzen!
-
Ok das leuchtet mir ein, kannst du mir noch schnell sagen wo ich diese vergeben kann?
-
@stefan3107 sagte in MQTT zu viele Clients:
kannst du mir noch schnell sagen wo ich diese vergeben kann?
Vielleicht, wenn du uns noch ein paar Details zu deinem ESP8266 Projekt verrätst?
-
Das könnte lang werden,
aber fangen wir mal an.... ich frage Scooter Akkus über I2C nach Spannung Strom Temperatur Kapazität ab, das sind 12 welche auf einen ESP hängen, nach dieser Abfrage versende ich diese Daten über MQTT. Auf einen anderen Raspi empfange ich dann diese um die Ladung usw. zu steuern. Ich verwende diese dann zur Energiespeicherung im Haus.
Mittlerweile sind es schon so um die 400 Zeilen welche ich in der Arduino IDE gemacht habe. Auch alle Daten kommen dann in Node-Red an. Nur wie gesagt die Clients..... -
@stefan3107 sagte in MQTT zu viele Clients:
400 Zeilen welche ich in der Arduino IDE gemacht habe
Das war der entscheidende Punkt. Ich nehme an, du verwendest die PubSubClient Library?
Dann in etwa so:
WiFiClient espClient; PubSubClient mqttClient(espClient); mqttClient.setClientId("ESP8266_No1");
-
Danke für die INFO!!!
Ja perfekt habe jetzt einen String gemachtString clientId = "ESP_ALE";
while (!client.connected())
{
Serial.print("Attempting MQTT connection...");
if (client.connect(clientId.c_str()))
{
und so wird er mir dann auch am Raspi ioBroker bei Clients angezeigt.
Nochmals DANKE