NEWS
MQTT: Message xxx deleted after 11 retries
-
@peterfido die mosquitto-clients hätte es nicht unbedingt gebraucht und das mit den Benutzernamen ist easy.
Man erstellt eine Passwort-Datei mit Benutzer: Passwort Pärchen, lässt diese mit dem mosquitto eigenen Programm verschlüsseln und gibt das noch in der Konfigdatei an.Aber brauchst ja nicht - aber falls gibt es genügend Anleitungen im Netz. (zum Beispiel: http://www.steves-internet-guide.com/mqtt-username-password-example/)
Aber das ist nicht unbedingt notwendig - zumindest zum Test. Wenn es dann zufriedenstellend läuft, kannst Du es später immer noch absichern.
-
@mickym @peterfido
Thread ist zwar etwas älter aber wollte für mein Problem nicht noch ein neues Thema erstellen.
Ich habe nun auch den mosquitto Server aufgesetzt. Im ioBroker mqtt pausiert und sehe auch im mosquitto log das dort messages reinkommen. Wenn ich jetzt im ioBroker die mqtt instanz auf "Client" umstelle, hat mosquitto ein Problem und sagt dass die Verbindung nicht mehr hergestellt werden konnte (oder so ähnlich, ich musste mosquitto wieder löschen da sonst mein mqtt im ioBroker nicht mehr lief). Also scheint es mir als ob der mqtt Adapter nicht korrekt auf "Client" wechselt und somit den Port 1883 weiterhin blockiert. Habt ihr eine Idee woran das liegen kann? -
@watcherkb Hmm - er der Adapter muss halt nicht nur pausiert, sondern richtig umgestellt werden. Und halt schauen, dass sonst kein Adapter wie Shelly, Sonoff läuft. Die simulieren ja auch alle einen mqtt-Broker.
Der mqtt-Adapter muss ja auch 1883 laufen, das ist schon richtig.
Ich mosquitto log siehst Du doch auch ob sich der mqtt-Adapter (anhand der Client ID) mit mosquitto verbindet?
-
@mickym ja hab schon auf Client umgestellt. Aber keine Besserung.
Sonoff-Adapter habe ich auch, aber auf Port 1884
Und beim Shelly-Adapter ist der Port auf 1882Leider sehe ich im Log nur die Clients und deren Messages, aber NICHT den Mqtt Client aus ioBroker.
-
@watcherkb Na wenn es wirklich so ist, dass der mqtt Adapter den Port 1883 sich schnappt und nichts anderes (also Du das merkst, wenn Du den Adapter aus und einschaltest, vielleicht muss man den Adapter ganz raus schmeissen und noch mal neu installieren. Es muss ja rauszufinden sein, wer den Port noch belegt.
-
@mickym hab jetzt nochmal mosquitto installiert, aber vorher mqtt Adapter gestoppt. Jetzt scheint auch alles zu laufen, aber die log-Datei sieht für mich nicht sauber aus. Ich nutze KEINE Authentification. Iobroker und der ganze Server ist dabei total ausgelastet, Ram und CPU sind am Limit.
1642433853: New client connected from 127.0.0.1 as iobroker.mqtt.0 (c1, k1000). 1642433853: Socket error on client iobroker.mqtt.0, disconnecting. 1642433853: New connection from 127.0.0.1 on port 1883. 1642433853: New client connected from 127.0.0.1 as iobroker.mqtt.0 (c1, k1000). 1642433856: Socket error on client iobroker.mqtt.0, disconnecting.
-
@watcherkb Ja aber dann ist da immer noch was nicht in Ordnung. Die log Datei ist nicht sauber - das schaut für mich aus, als ob da dauernd der mqtt Adapter andocken will aber nicht geht.
Hast Du explitzit in Deiner mosquitto conf angegen
allow_anonymous true
-
@mickym ne hab nichts dergleichen eingestellt. Habe die Standardconfig gelassen. Schau ich mir an
-
@watcherkb Na eigentlich ist das standardmässig falsch. Ich würde mal den mqtt Adapter aus dem iobroker mal komplett deinstallieren (also nicht nur die Instanz) und schauen, ob das System sich dann mit CPU etc. beruhigt und das mosquito log sauber ist.
-
Wenn der MQTT-Adapter als Client läuft, schnappt der sich gar keinen Port - der ist dann ja Client und nicht Server.
Wenn man den von Server auf Client umstellt wäre das löschen aller Datenpunkte eine gute Idee gewesen, ich weis nicht ob der Client das einfach so übernimmt / übernehmen kann. Mit dem Deinstallieren des Adapter ist dies aber ja passiert.Im Client musst dann den Port einstellen auf den du auch den Mosquitto gesetzt hast - der vermutlich auf Port 1883 läuft wenn er denn kann. In der Log-Datei solltest du sehen können wenn sich der Client verbindet.
Wenn du in Mosquitto eine Anmeldung eingerichtet hast so muss du das im Adapter natürlich auch einstellen (oder eben nicht. Da gibt es ja auch einen "Verbindung Testen" Button
-
Die Maske zum bekanntgeben eigener States sollte auf
mqtt.0.*
Stehen. Sonst schickt der Adapter jeden Datenpunkt zum mqtt.
-
@peterfido Da dies der Default ist hatte ich das nicht extra erwähnt
-
Darf man fragen warum du auf Mosquitto ausweichen willst?
-
@hydrotec weil ich dieselben Probleme mit den Messages habe wie im Eingangsthread geschildert. Hoffe dadurch das Problem zu beheben.
-
So wie ich das verstanden habe, hattest du zuerst den mqtt Adapter als Server konfiguriert.
Und jetzt würdest du gerne den mqtt Adapter als Client, welcher auf mosquitto zugreift, konfigurieren.
Sollte das richtig sein, dann versuch mal folgendes.Zuerst den jetzigen mqtt Adapter löschen.
(quasi Neuinstallation des Adapters)
Dann den Adapter wieder installieren.
und als Client einrichten
Die "Verbindungseinstellungen" und "Authentifizierungseinstellungen" an deine Umgebung anpassen.
Wenn alles, wie gewünscht, funktioniert, würde ich dir empfehlen,
dein mosquitto wenigstens mit Benutzer:Passwort abzusichern. -
@watcherkb Ich hab das subscribe pattern auf dem Standard: # gelassen, damit Du alle topics im Adapter zur Verfügung hast. Vielleicht will man ja mehr über mqtt anbinden und nicht die Adapter nutzen, wenn Geräte von sich aus mqtt sprechen. So mache ich das jedenfalls.
-
-
@watcherkb sagte in MQTT: Message xxx deleted after 11 retries:
@hydrotec @mickym
danke das teste ich mal. Aber ich würde ungerne die alten Objekte löschen, da ich schon etliche Datenpunkte mit influxdb tracke. Wenn ich den Adapter lösche, werden automatisch die DP gelöscht, richtig?Wenn Du den Adapter oder auch nur die Instanz löschst - werden in jedem Fall die Objekte mitgelöscht.
Ich kann Dir aber auch nicht garantieren, dass bei der Umstellung von Client auf Server das erhalten bleibt. Kannst aber versuchen. Jedenfalls lass alle Optionen aus (wie im Screenshot von @hydrotec gepostet)- und hake vor allen Dingen nicht so was wie sende Zustände an - sonst hast Du ganz schnell Endlosschleifen und den ganzen Mist im mosquitto. Sobald die Geräte sich selbst mit dem mosquitto verbinden, bekommst ja der Adapter dann wieder in die Datenpunkte als Update geliefert.
Für die Zukunft würde ich aber was Datenbank Logging betrifft über die Verwendung von Alias nachdenken, dann bist Du zumindest bei zukünftigen Änderungen oder auch bei Hardwaretausch gegen solche Dinge immun.
-
@watcherkb sagte in MQTT: Message xxx deleted after 11 retries:
..., da ich schon etliche Datenpunkte mit influxdb tracke.Die Datenbank füllt sich wieder.
Ansonsten wirklich über den Alias Adapter, oder ähnliches, nachdenken, so wie es @mickym schon erwähnt hat.
@mickym sagte in MQTT: Message xxx deleted after 11 retries:
Ich hab das subscribe pattern auf dem Standard: # gelassen, ...
Ich teile gerne die Instanzen in Gruppen ein, z.B. Siedle, zigbee2mqtt, Tablet, Kameras, usw., finde ich persönlich übersichtlicher.
Aber das ist Geschmacksache. -
@hydrotec sagte in MQTT: Message xxx deleted after 11 retries:
@watcherkb sagte in MQTT: Message xxx deleted after 11 retries:
..., da ich schon etliche Datenpunkte mit influxdb tracke.
Die Datenbank füllt sich wieder.
Ansonsten wirklich über den Alias Adapter, oder ähnliches, nachdenken, so wie es @mickym schon erwähnt hat.Das nützt ihm nur nichts, wenn die Datenpunkte dann zwar wieder kommen, aber die Konfiguration zum Loggen in der Datenbank ist mir dem Löschen der Objekte weg. (das konfigurierst ja über das Zahnrädchen zum Datenpunkt) Deswegen will er die Instanz ja nicht löschen.
Wie gesagt, vielleicht klappt es ja. Nur wenn nicht und er dann so oder so das Loggen wieder konfigurieren muss, dann würde ich das über Aliase machen - da dann der Aufwand sowieso und nur minimal höher ist.