Wenn dies dein erster Besuch hier ist, lies bitte zuerst die Hilfe - Häufig gestellte Fragen durch. Du musst dich vermutlich registrieren, bevor du Beiträge verfassen kannst. Klicke oben auf 'Registrieren', um den Registrierungsprozess zu starten. Du kannst auch jetzt schon Beiträge lesen. Suche dir einfach das Forum aus, das dich am meisten interessiert.
Ankündigung
Einklappen
Keine Ankündigung bisher.
MQTT API Server und MQTT Clients - LBS19001051 - LBS19001054
ich glaube die MQTT LBSes haben das gleiche Memory Leak wie die Yeelight LBS
Es ist nicht das gleiche Memory Leak, da die MQTT Bausteine gar keinen alternativen Error Handler verwenden.
Daher die Frage, bei welchen MQTT Baustein ist das Problem aufgetreten?
Ich hab aktuell beide Subscribe LBS am laufen, also Server und Client.
Im Mosquitto Log konnte ich sehen das es jede Sekunde ein Reconnect gab das dann aber vom Client wieder abgebrochen wurde dabei ging ziemlich schnell der Speicher beim EXEC Script hoch.
Beim Subscribe Client im Log hatte ich dann folgendes:
Code:
[TABLE="class: log, border: 0, cellpadding: 0, cellspacing: 0, width: 0, height: 12"]
[TR]
[TD]2019-01-28 23:04:17[/TD]
[TD]084237[/TD]
[TD]17111[/TD]
[TD]debug[/TD]
[TD]EXE19001054 [v0.2.3]: Exception caught: The client is not currently connected. (4630)[/TD]
[/TR]
[TR]
[TD]2019-01-28 23:04:20[/TD]
[TD]155975[/TD]
[TD]17111[/TD]
[TD]debug[/TD]
[TD]EXE19001054 [v0.2.3]: Exception caught: The client is not currently connected. (4630)[/TD]
[/TR]
[TR]
[TD]2019-01-28 23:04:24[/TD]
[TD]539427[/TD]
[TD]17111[/TD]
[TD]debug[/TD]
[TD]EXE19001054 [v0.2.3]: Exception caught: The client is not currently connected. (4630)[/TD]
[/TR]
[TR]
[TD]2019-01-28 23:04:27[/TD]
[TD]611840[/TD]
[TD]17111[/TD]
[TD]debug[/TD]
[TD]EXE19001054 [v0.2.3]: Exception caught: The client is not currently connected. (4630)[/TD]
[/TR]
[TR]
[TD]2019-01-28 23:04:30[/TD]
[TD]672604[/TD]
[TD]17111[/TD]
[TD]debug[/TD]
[TD]EXE19001054 [v0.2.3]: Exception caught: A TLS error occurred. (4630)[/TD]
[/TR]
[TR]
[TD]2019-01-28 23:04:33[/TD]
[TD]692131[/TD]
[TD]17111[/TD]
[TD]debug[/TD]
[TD]EXE19001054 [v0.2.3]: Exception caught: The client is not currently connected. (4630)[/TD]
[/TR]
[TR]
[TD]2019-01-28 23:04:36[/TD]
[TD]754374[/TD]
[TD]17111[/TD]
[TD]debug[/TD]
[TD]EXE19001054 [v0.2.3]: Exception caught: A TLS error occurred. (4630)[/TD]
[/TR]
[TR]
[TD]2019-01-28 23:04:39[/TD]
[TD]771720[/TD]
[TD]17111[/TD]
[TD]debug[/TD]
[TD]EXE19001054 [v0.2.3]: Exception caught: The client is not currently connected. (4630)[/TD]
[/TR]
[/TABLE]
Zuletzt geändert von gulp2k; 15.02.2019, 21:37.
Grund: Logs
Spontan kann ich die Ursache dafür nicht finden. Grundsätzlich wird alle 3 Sekunden versucht die Verbindung neu aufzubauen, dazu wird aber kein neues Client Objekt angelegt, sondern das bestehende immer wiederverwendet. Kam wirklich jede Sekunde ein Connect im Mosquitto? Im obigen Log sieht man, dass die Exception alle drei Sekunden auftritt. Dies passt zu dem Reconnect Verfahren des LBS. Dann sollten aber die Connect Versuche im Mosquitto auch nur alle 3 Sekunden stattfinden, es sei denn, die kommen von unterschiedlichen LBSen.
Spontan kann ich die Ursache dafür nicht finden. Grundsätzlich wird alle 3 Sekunden versucht die Verbindung neu aufzubauen, dazu wird aber kein neues Client Objekt angelegt, sondern das bestehende immer wiederverwendet. Kam wirklich jede Sekunde ein Connect im Mosquitto? Im obigen Log sieht man, dass die Exception alle drei Sekunden auftritt. Dies passt zu dem Reconnect Verfahren des LBS. Dann sollten aber die Connect Versuche im Mosquitto auch nur alle 3 Sekunden stattfinden, es sei denn, die kommen von unterschiedlichen LBSen.
Sorry für die späte Antwort...
Ich denke das past so, beide LBS haben wohl abwechselnd versucht sich zu verbinden was da ca 1s war. Da beide denn gleichen User verwenden konnte ich das nicht unterscheiden...
Aktuell ist wieder alles gut, eventuell ist es ja auch ein Problem der MQTT Lib?! Ist halt schon ein Edge Case sich per TLS auf einen Mosquitto mit abgelaufenen Zertifikat zu verbinden...
Ist halt schon ein Edge Case sich per TLS auf einen Mosquitto mit abgelaufenen Zertifikat zu verbinden...
Das stimmt. Aber ich werde das bei Gelegenheit mal nachstellen um zumindest zu sehen, wo die Ursache liegt. Könnte wirklich sein, dass es in der Mosquittot Lib liegt.
Ich beschäftige mich momentan nicht mehr mit Edomi.
...schade. Leistest Du noch Support für Deine Parser-LBSe?
Ich möchte momentan meinen Automower über MQTT (statt robonect-LBS) in EDOMI einbinden.
Es gibt zwei ähnliche Topics (Ich habe im robonect "am430x" als device konfiguriert.):
am430x/mower/status
am430x/mower/status/duration
Dabei tritt folgender Fehler auf:
Wenn am Topic Parser (LBS19001078) an E2 als Filter "am430x/mower/status" angegeben ist und folgende MQTT-Message vom Broker kommt:
am430x/mower/status/duration||32 Min.||0||0||0
kommt es im Fehler-Log von EDOMI zu folgendem Eintrag:
Leider kenne ich mich nicht so gut mit php aus, um Deinen LBS (list, foreach ...) zu durchschauen und einen Vorschlag zur Fehlerbehebung zu machen. Vielleicht kannst Du ja noch einmal Deinen LBS überarbeiten.
vielen Dank für den Hinweis. Damit ist dann kein Topic-Parser o.ä. mehr im Downloadportal.
Ich mache mir die nächsten Tage mal ein paar Gedanken dazu ...
vielen Dank für den Hinweis. Damit ist dann kein Topic-Parser o.ä. mehr im Downloadportal.
Ich mache mir die nächsten Tage mal ein paar Gedanken dazu ...
Hi.
Falls neu Entwicklung des Parser dann gebe ich folgendes in die Runde:
Wäre es auch möglich einen Parser zu schreiben der Multilevel support hat?
So das man an E3 und fortlaufend mehrere Levels parsen kann?
Also z.B Topic:
fhem/out/status/wohnzimmer/wandheizkoerper/pid/delta||-0.300000000000001||1||0||176
Ich war jetzt etwas ungeduldig (und wollte auch wieder mal etwas selbst versuchen )
Wozu ein "Grundgerüst" - keep it simple
Ich habe den LBS19001607 gerade ins DL-Portal geladen. Darin berücksichtigt ist quasi auch der Hinweis von trollmar. Einfach an den Eingängen 2 bis 10 die gewünschten Topics eintragen (vollständig, ohne Filter - aber sollte ja nureinmalige Arbeit sein). Dann werden an den jeweiligen Ausgängen die Payloads ausgegeben.
Also, um beim Beispiel zu bleiben:
E2= fhem/out/status/wohnzimmer/wandheizkoerper/pid/delta
E3= fhem/out/status/wohnzimmer/wandheizkoerper/pid/actuation
...
Ich hoffe es ist nicht zu simpel (rudimentäre Fehlerbehandlung und kein Logfile bzw. Debug-Option).
Bitte testet und gebt mir Hinweise, was ggf. verbessert werden kann
Gruß Marco
Wir verarbeiten personenbezogene Daten über die Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen. Weitere Informationen findest Du in unserer Datenschutzerklärung.
Indem Du unten auf "ICH stimme zu" klickst, stimmst Du unserer Datenschutzerklärung und unseren persönlichen Datenverarbeitungs- und Cookie-Praktiken zu, wie darin beschrieben. Du erkennst außerdem an, dass dieses Forum möglicherweise außerhalb Deines Landes gehostet wird und bist damit einverstanden, dass Deine Daten in dem Land, in dem dieses Forum gehostet wird, gesammelt, gespeichert und verarbeitet werden.
Kommentar