Ich bestätige, dass ich seit der Integration von zwavejs mindestens drei ähnliche Abmeldungen hatte.
Jedes Mal musste ich auf die Konfigurationsseite gehen und speichern, und dann funktionierte es wieder.
Aber nicht in letzter Zeit.
Danke für euer Feedback ![]()
@Will_71 Glaubst du, du könntest beim nächsten Mal, wenn es passiert, mal ein bisschen recherchieren?
Ich habe es von meiner Seite aus versucht, aber es ist mir nicht gelungen… Ich würde euch gerne helfen, es ist frustrierend, diese Rückmeldungen zu sehen ![]()
Ich werde es versuchen, aber ehrlich gesagt passiert das nie, wenn man es braucht, und ich hatte das Problem nur dreimal.
Allerdings tritt es nur mit der MQTT-Verbindung von zwavejs auf. Nie mit der von zigbee2mqtt.
Ich werde versuchen, während der Weihnachtsferien etwas genauer nachzuschauen.
Ich habe den Mini-PC gerade „verdammt noch mal“ neu gestartet, weil ich keinen Zugriff mehr darauf hatte (Problem mit dem CPL-Stecker).
Der MQTT-Broker war nicht neu gestartet, aber der von Z-Wave JS UI schon.
Ich starte hier die Diskussion erneut, nachdem @mutmut in einem anderen Thema etwas geschrieben hat ![]()
Was die erneute Verbindung von Gladys zum MQTT-Broker nach einem Verbindungsabbruch oder einem Neustart des Brokers angeht, sollte das normalerweise vollständig von der von uns verwendeten Bibliothek verwaltet werden. Die erneute Verbindung erfolgt automatisch!
Bei euch muss ein spezieller Fall vorliegen, der die Bibliothek in einen unbestimmten Zustand versetzt. Ich habe versucht, alles nachzustellen, was mir beschrieben wurde, aber bei mir funktioniert die erneute Verbindung einwandfrei. Ich kann es nicht reproduzieren, das ist wirklich frustrierend ^^
@Terdious ist der einzige Entwickler, der es geschafft hat, den Fehler bei sich selbst zu reproduzieren, aber er ist mit Isolierungsarbeiten beschäftigt und hat noch keine Zeit, sich damit zu beschäftigen.
Falls jemand uns helfen möchte, sind wir wirklich dankbar für Unterstützung bei diesem Problem!
Hallo !
Ich habe die Arbeiten noch nicht abgeschlossen, aber ich habe alles, um meine Entwicklungsmaschine wiederherzustellen.
Ich schaue mir das so schnell wie möglich an (spätestens dieses Wochenende), um zumindest zu sehen, was nicht stimmt, und euch zu führen.
Ich konnte es bisher leider nicht reproduzieren.
- Logs beim Neustart von Gladys:
2025-01-15T06:49:16+0100 <error> index.js:15 (process.<anonymous>) unhandledRejection catched: Promise {
<rejected> NotFoundError: DeviceFeature tasmota:tasmota_836534:ENERGY:Voltage not found
at DeviceManager.newStateEvent (/home/terdieu/PR-Gladys/netatmo-integration/server/lib/device/device.newStateEvent.js:17:11)
at EventEmitter.emit (node:events:517:28)
at Event.emit (/home/terdieu/PR-Gladys/netatmo-integration/server/lib/event/index.js:18:16)
}
2025-01-15T06:49:16+0100 <error> index.js:16 (process.<anonymous>)
2025-01-15T06:49:16+0100 <error> index.js:15 (process.<anonymous>) unhandledRejection catched: Promise {
<rejected> NotFoundError: DeviceFeature tasmota:tasmota_836534:ENERGY:Current not found
at DeviceManager.newStateEvent (/home/terdieu/PR-Gladys/netatmo-integration/server/lib/device/device.newStateEvent.js:17:11)
at EventEmitter.emit (node:events:517:28)
at Event.emit (/home/terdieu/PR-Gladys/netatmo-integration/server/lib/event/index.js:18:16)
}
2025-01-15T06:49:16+0100 <error> index.js:16 (process.<anonymous>)
2025-01-15T06:49:16+0100 <warn> handleNewMessage.js:53 (MqttHandler.handleNewMessage)
2025-01-15T06:49:16+0100 <warn> handleNewMessage.js:54 (MqttHandler.handleNewMessage)
2025-01-15T06:49:16+0100 <warn> handleNewMessage.js:53 (MqttHandler.handleNewMessage)
2025-01-15T06:49:16+0100 <warn> handleNewMessage.js:54 (MqttHandler.handleNewMessage)
2025-01-15T06:49:16+0100 <warn> handleNewMessage.js:53 (MqttHandler.handleNewMessage)
2025-01-15T06:49:16+0100 <warn> handleNewMessage.js:54 (MqttHandler.handleNewMessage)
2025-01-15T06:49:16+0100 <warn> handleNewMessage.js:53 (MqttHandler.handleNewMessage)
2025-01-15T06:49:16+0100 <warn> handleNewMessage.js:54 (MqttHandler.handleNewMessage)
2025-01-15T06:49:16+0100 <warn> handleNewMessage.js:53 (MqttHandler.handleNewMessage)
2025-01-15T06:49:16+0100 <warn> handleNewMessage.js:54 (MqttHandler.handleNewMessage)
2025-01-15T06:49:16+0100 <warn> handleNewMessage.js:53 (MqttHandler.handleNewMessage)
2025-01-15T06:49:16+0100 <warn> handleNewMessage.js:54 (MqttHandler.handleNewMessage)
2025-01-15T06:49:16+0100 <warn> handleNewMessage.js:53 (MqttHandler.handleNewMessage)
2025-01-15T06:49:16+0100 <warn> handleNewMessage.js:54 (MqttHandler.handleNewMessage)
Er schafft es also, sich zu verbinden, und wir finden etwa 650 Zeilen mit Logs von empfangenen Nachrichten in derselben Sekunde.
Dann:
2025-01-15T06:49:16+0100 <warn> connect.js:50 (MqttClient.<anonymous>) Error while connecting to MQTT - Error: write ECONNRESET
er stürzt in Zeile 50 des connect ab
Wenn ich Logs in der Funktion des connect this.mqttClient.on('message', (topic, message) hinzufüge, erhalte ich Logs des Buffers:
2025-01-15T06:57:50+0100 <error> index.js:16 (process.<anonymous>)
2025-01-15T06:57:50+0100 <error> index.js:15 (process.<anonymous>) unhandledRejection catched: Promise {
<rejected> NotFoundError: DeviceFeature tasmota:tasmota_837F73:ENERGY:ApparentPower nicht gefunden
at DeviceManager.newStateEvent (/home/terdieu/PR-Gladys/netatmo-integration/server/lib/device/device.newStateEvent.js:17:11)
at EventEmitter.emit (node:events:517:28)
at Event.emit (/home/terdieu/PR-Gladys/netatmo-integration/server/lib/event/index.js:18:16)
}
2025-01-15T06:57:50+0100 <error> index.js:16 (process.<anonymous>)
2025-01-15T06:57:50+0100 <error> index.js:15 (process.<anonymous>) unhandledRejection catched: Promise {
<rejected> NotFoundError: DeviceFeature tasmota:tasmota_837F73:ENERGY:ReactivePower nicht gefunden
at DeviceManager.newStateEvent (/home/terdieu/PR-Gladys/netatmo-integration/server/lib/device/device.newStateEvent.js:17:11)
at EventEmitter.emit (node:events:517:28)
at Event.emit (/home/terdieu/PR-Gladys/netatmo-integration/server/lib/event/index.js:18:16)
}
2025-01-15T06:57:50+0100 <error> index.js:16 (process.<anonymous>)
2025-01-15T06:57:50+0100 <error> index.js:15 (process.<anonymous>) unhandledRejection catched: Promise {
<rejected> NotFoundError: DeviceFeature tasmota:tasmota_837F73:ENERGY:Voltage nicht gefunden
at DeviceManager.newStateEvent (/home/terdieu/PR-Gladys/netatmo-integration/server/lib/device/device.newStateEvent.js:17:11)
at EventEmitter.emit (node:events:517:28)
at Event.emit (/home/terdieu/PR-Gladys/netatmo-integration/server/lib/event/index.js:18:16)
}
2025-01-15T06:57:50+0100 <error> index.js:16 (process.<anonymous>)
2025-01-15T06:57:50+0100 <error> index.js:15 (process.<anonymous>) unhandledRejection catched: Promise {
<rejected> NotFoundError: DeviceFeature tasmota:tasmota_837F73:ENERGY:Current nicht gefunden
at DeviceManager.newStateEvent (/home/terdieu/PR-Gladys/netatmo-integration/server/lib/device/device.newStateEvent.js:17:11)
at EventEmitter.emit (node:events:517:28)
at Event.emit (/home/terdieu/PR-Gladys/netatmo-integration/server/lib/event/index.js:18:16)
}
2025-01-15T06:57:50+0100 <error> index.js:16 (process.<anonymous>)
2025-01-15T06:57:50+0100 <error> connect.js:68 (MqttClient.<anonymous>) message <Buffer 7b 22 53 74 61 74 75 73 53 54 53 22 3a 7b 22 54 69 6d 65 22 3a 22 32 30 32 35 2d 30 31 2d 31 35 54 30 36 3a 35 37 3a 34 37 22 2c 22 55 70 74 69 6d 65 ... 302 more bytes>
2025-01-15T06:57:50+0100 <error> connect.js:68 (MqttClient.<anonymous>) message <Buffer 7b 22 53 74 61 74 75 73 53 4e 53 22 3a 7b 22 54 69 6d 65 22 3a 22 32 30 32 35 2d 30 31 2d 31 35 54 30 36 3a 35 37 3a 34 36 22 7d 7d>
2025-01-15T06:57:50+0100 <error> connect.js:68 (MqttClient.<anonymous>) message <Buffer 7b 22 53 74 61 74 75 73 53 54 53 22 3a 7b 22 54 69 6d 65 22 3a 22 32 30 32 35 2d 30 31 2d 31 35 54 30 36 3a 35 37 3a 34 37 22 2c 22 55 70 74 69 6d 65 ... 267 more bytes>
2025-01-15T06:57:50+0100 <error> connect.js:68 (MqttClient.<anonymous>) message <Buffer 7b 22 53 74 61 74 75 73 53 54 53 22 3a 7b 22 54 69 6d 65 22 3a 22 32 30 32 35 2d 30 31 2d 31 35 54 30 36 3a 35 37 3a 34 37 22 2c 22 55 70 74 69 6d 65 ... 267 more bytes>
2025-01-15T06:57:50+0100 <error> connect.js:68 (MqttClient.<anonymous>) message <Buffer 7b 22 53 74 61 74 75 73 53 4e 53 22 3a 7b 22 54 69 6d 65 22 3a 22 32 30 32 35 2d 30 31 2d 31 35 54 30 36 3a 35 37 3a 34 37 22 2c 22 53 77 69 74 63 68 ... 10 more bytes>
2025-01-15T06:57:50+0100 <error> connect.js:68 (MqttClient.<anonymous>) message <Buffer 7b 22 53 74 61 74 75 73 53 54 53 22 3a 7b 22 54 69 6d 65 22 3a 22 32 30 32 35 2d 30 31 2d 31 35 54 30 36 3a 35 37 3a 34 37 22 2c 22 55 70 74 69 6d 65 ... 271 more bytes>
2025-01-15T06:57:50+0100 <error> connect.js:68 (MqttClient.<anonymous>) message <Buffer 7b 22 53 74 61 74 75 73 53 54 53 22 3a 7b 22 54 69 6d 65 22 3a 22 32 30 32 35 2d 30 31 2d 31 35 54 30 36 3a 35 37 3a 34 37 22 2c 22 55 70 74 69 6d 65 ... 306 more bytes>
2025-01-15T06:57:50+0100 <error> connect.js:68 (MqttClient.<anonymous>) message <Buffer 7b 22 53 74 61 74 75 73 53 4e 53 22 3a 7b 22 54 69 6d 65 22 3a 22 32 30 32 35 2d 30 31 2d 31 35 54 30 36 3a 35 37 3a 34 37 22 7d 7d>
2025-01-15T06:57:50+0100 <error> connect.js:68 (MqttClient.<anonymous>) message <Buffer 7b 22 53 74 61 74 75 73 53 4e 53 22 3a 7b 22 54 69 6d 65 22 3a 22 32 30 32 35 2d 30 31 2d 31 35 54 30 36 3a 35 37 3a 34 37 22 2c 22 45 4e 45 52 47 59 ... 184 more bytes>
2025-01-15T06:57:50+0100 <error> connect.js:68 (MqttClient.<anonymous>) message <Buffer 7b 22 53 74 61 74 75 73 53 4e 53 22 3a 7b 22 54 69 6d 65 22 3a 22 32 30 32 35 2d 30 31 2d 31 35 54 30 36 3a 35 37 3a 34 37 22 7d 7d>
2025-01-15T06:57:50+0100 <error> connect.js:68 (MqttClient.<anonymous>) message <Buffer 7b 22 53 74 61 74 75 73 53 4e 53 22 3a 7b 22 54 69 6d 65 22 3a 22 32 30 32 35 2d 30 31 2d 31 35 54 30 36 3a 35 37 3a 34 37 22 2c 22 45 4e 45 52 47 59 ... 182 more bytes>
2025-01-15T06:57:50+0100 <error> connect.js:68 (MqttClient.<anonymous>) message <Buffer 7b 22 53 74 61 74 75 73 53 54 53 22 3a 7b 22 54 69 6d 65 22 3a 22 32 30 32 35 2d 30 31 2d 31 35 54 30 36 3a 35 37 3a 34 37 22 2c 22 55 70 74 69 6d 65 ... 271 more bytes>
2025-01-15T06:57:50+0100 <error> connect.js:68 (MqttClient.<anonymous>) message <Buffer 7b 22 53 74 61 74 75 73 53 54 53 22 3a 7b 22 54 69 6d 65 22 3a 22 32 30 32 35 2d 30 31 2d 31 35 54 30 36 3a 35 37 3a 34 36 22 2c 22 55 70 74 69 6d 65 ... 300 more bytes>
2025-01-15T06:57:50+0100 <error> connect.js:68 (MqttClient.<anonymous>) message <Buffer 7b 22 53 74 61 74 75 73 53 4e 53 22 3a 7b 22 54 69 6d 65 22 3a 22 32 30 32 35 2d 30 31 2d 31 35 54 30 36 3a 35 37 3a 34 37 22 7d 7d>
2025-01-15T06:57:50+0100 <error> connect.js:68 (MqttClient.<anonymous>) message <Buffer 7b 22 53 74 61 74 75 73 53 4e 53 22 3a 7b 22 54 69 6d 65 22 3a 22 32 30 32 35 2d 30 31 2d 31 35 54 30 36 3a 35 37 3a 34 37 22 2c 22 53 77 69 74 63 68 ... 10 more bytes>
2025-01-15T06:57:50+0100 <error> connect.js:68 (MqttClient.<anonymous>) message <Buffer 7b 22 53 74 61 74 75 73 53 4e 53 22 3a 7b 22 54 69 6d 65 22 3a 22 32 30 32 35 2d 30 31 2d 31 35 54 30 36 3a 35 37 3a 34 37 22 2c 22 45 4e 45 52 47 59 ... 182 more bytes>
2025-01-15T06:57:50+0100 <error> connect.js:68 (MqttClient.<anonymous>) message <Buffer 7b 22 53 74 61 74 75 73 53 4e 53 22 3a 7b 22 54 69 6d 65 22 3a 22 32 30 32 35 2d 30 31 2d 31 35 54 30 36 3a 35 37 3a 34 36 22 7d 7d>
2025-01-15T06:57:50+0100 <error> connect.js:68 (MqttClient.<anonymous>) message <Buffer 7b 22 53 74 61 74 75 73 53 54 53 22 3a 7b 22 54 69 6d 65 22 3a 22 32 30 32 35 2d 30 31 2d 31 35 54 30 36 3a 35 37 3a 34 37 22 2c 22 55 70 74 69 6d 65 ... 302 more bytes>
2025-01-15T06:57:50+0100 <error> connect.js:68 (MqttClient.<anonymous>) message <Buffer 7b 22 53 74 61 74 75 73 53 4e 53 22 3a 7b 22 54 69 6d 65 22 3a 22 32 30 32 35 2d 30 31 2d 31 35 54 30 36 3a 35 37 3a 34 37 22 2c 22 45 4e 45 52 47 59 ... 180 more bytes>
2025-01-15T06:57:50+0100 <error> connect.js:68 (MqttClient.<anonymous>) message <Buffer 7b 22 53 74 61 74 75 73 53 4e 53 22 3a 7b 22 54 69 6d 65 22 3a 22 32 30 32 35 2d 30 31 2d 31 35 54 30 36 3a 35 37 3a 34 36 22 7d 7d>
2025-01-15T06:57:50+0100 <error> connect.js:68 (MqttClient.<anonymous>) message <Buffer 7b 22 53 74 61 74 75 73 53 4e 53 22 3a 7b 22 54 69 6d 65 22 3a 22 32 30 32 35 2d 30 31 2d 31 35 54 30 36 3a 35 37 3a 34 37 22 2c 22 45 4e 45 52 47 59 ... 178 more bytes>
2025-01-15T06:57:50+0100 <warn> handleNewMessage.js:53 (MqttHandler.handleNewMessage)
2025-01-15T06:57:50+0100 <warn> handleNewMessage.js:54 (MqttHandler.handleNewMessage)
2025-01-15T06:57:50+0100 <error> connect.js:68 (MqttClient.<anonymous>) message <Buffer 7b 22 53 74 61 74 75 73 53 4e 53 22 3a 7b 22 54 69 6d 65 22 3a 22 32 30 32 35 2d 30 31 2d 31 35 54 30 36 3a 35 37 3a 34 37 22 2c 22 45 4e 45 52 47 59 ... 178 weitere Bytes>
2025-01-15T06:57:50+0100 <warn> handleNewMessage.js:53 (MqttHandler.handleNewMessage)
2025-01-15T06:57:50+0100 <warn> handleNewMessage.js:54 (MqttHandler.handleNewMessage)
2025-01-15T06:57:50+0100 <error> connect.js:68 (MqttClient.<anonymous>) message <Buffer 7b 22 53 74 61 74 75 73 53 4e 53 22 3a 7b 22 54 69 6d 65 22 3a 22 32 30 32 35 2d 30 31 2d 31 35 54 30 36 3a 35 37 3a 34 37 22 2c 22 45 4e 45 52 47 59 ... 178 weitere Bytes>
2025-01-15T06:57:50+0100 <warn> handleNewMessage.js:53 (MqttHandler.handleNewMessage)
2025-01-15T06:57:50+0100 <warn> handleNewMessage.js:54 (MqttHandler.handleNewMessage)
2025-01-15T06:57:50+0100 <error> connect.js:68 (MqttClient.<anonymous>) message <Buffer 7b 22 53 74 61 74 75 73 53 4e 53 22 3a 7b 22 54 69 6d 65 22 3a 22 32 30 32 35 2d 30 31 2d 31 35 54 30 36 3a 35 37 3a 34 37 22 2c 22 45 4e 45 52 47 59 ... 184 weitere Bytes>
2025-01-15T06:57:50+0100 <warn> handleNewMessage.js:53 (MqttHandler.handleNewMessage)
2025-01-15T06:57:50+0100 <warn> handleNewMessage.js:54 (MqttHandler.handleNewMessage)
2025-01-15T06:57:50+0100 <error> connect.js:68 (MqttClient.<anonymous>) message <Buffer 7b 22 53 74 61 74 75 73 53 4e 53 22 3a 7b 22 54 69 6d 65 22 3a 22 32 30 32 35 2d 30 31 2d 31 35 54 30 36 3a 35 37 3a 34 37 22 2c 22 45 4e 45 52 47 59 ... 184 weitere Bytes>
2025-01-15T06:57:50+0100 <warn> handleNewMessage.js:53 (MqttHandler.handleNewMessage)
2025-01-15T06:57:50+0100 <warn> handleNewMessage.js:54 (MqttHandler.handleNewMessage)
2025-01-15T06:57:50+0100 <error> connect.js:68 (MqttClient.<anonymous>) message <Buffer 7b 22 53 74 61 74 75 73 53 4e 53 22 3a 7b 22 54 69 6d 65 22 3a 22 32 30 32 35 2d 30 31 2d 31 35 54 30 36 3a 35 37 3a 34 37 22 7d 7d>
2025-01-15T06:57:50+0100 <warn> handleNewMessage.js:53 (MqttHandler.handleNewMessage)
2025-01-15T06:57:50+0100 <warn> handleNewMessage.js:54 (MqttHandler.handleNewMessage)
2025-01-15T06:57:50+0100 <error> connect.js:68 (MqttClient.<anonymous>) message <Buffer 7b 22 53 74 61 74 75 73 53 4e 53 22 3a 7b 22 54 69 6d 65 22 3a 22 32 30 32 35 2d 30 31 2d 31 35 54 30 36 3a 35 37 3a 34 37 22 7d 7d>
2025-01-15T06:57:50+0100 <warn> handleNewMessage.js:53 (MqttHandler.handleNewMessage)
2025-01-15T06:57:50+0100 <warn> handleNewMessage.js:54 (MqttHandler.handleNewMessage)
2025-01-15T06:57:50+0100 <error> connect.js:68 (MqttClient.<anonymous>) message <Buffer 7b 22 53 74 61 74 75 73 53 54 53 22 3a 7b 22 54 69 6d 65 22 3a 22 32 30 32 35 2d 30 31 2d 31 35 54 30 36 3a 35 37 3a 34 36 22 2c 22 55 70 74 69 6d 65 ... 300 weitere Bytes>
2025-01-15T06:57:50+0100 <warn> handleNewMessage.js:53 (MqttHandler.handleNewMessage)
2025-01-15T06:57:50+0100 <warn> handleNewMessage.js:54 (MqttHandler.handleNewMessage)
2025-01-15T06:57:50+0100 <error> connect.js:68 (MqttClient.<anonymous>) message <Buffer 7b 22 53 74 61 74 75 73 53 4e 53 22 3a 7b 22 54 69 6d 65 22 3a 22 32 30 32 35 2d 30 31 2d 31 35 54 30 36 3a 35 37 3a 34 36 22 7d 7d>
2025-01-15T06:57:50+0100 <warn> handleNewMessage.js:53 (MqttHandler.handleNewMessage)
2025-01-15T06:57:50+0100 <warn> handleNewMessage.js:54 (MqttHandler.handleNewMessage)
2025-01-15T06:57:50+0100 <error> connect.js:68 (MqttClient.<anonymous>) message <Buffer 7b 22 53 74 61 74 75 73 53 4e 53 22 3a 7b 22 54 69 6d 65 22 3a 22 32 30 32 35 2d 30 31 2d 31 35 54 30 36 3a 35 37 3a 34 36 22 7d 7d>
2025-01-15T06:57:50+0100 <warn> handleNewMessage.js:53 (MqttHandler.handleNewMessage)
2025-01-15T06:57:50+0100 <warn> handleNewMessage.js:54 (MqttHandler.handleNewMessage)
Okay, der Fehler ist ziemlich klar: Error: write ECONNRESET
EDIT:
Okay … ich kann die Tests im Moment nicht mehr fortsetzen, offensichtlich habe ich DuckDB mit all diesen Schreibvorgängen kaputt gemacht:
> start
> cross-env NODE_ENV=development nodemon index.js
[nodemon] 2.0.20
[nodemon] zum Neustart jederzeit `rs` eingeben
[nodemon] überwachte Pfade: *.*
[nodemon] überwachte Erweiterungen: js,mjs,json
[nodemon] Start `node index.js`
development
2025-01-15T07:12:43+0100 <error> index.js:15 (process.<anonymous>) unhandledRejection abgefangen: Promise {
<rejected> [Error: Connection Error: Connection wurde nie hergestellt oder bereits geschlossen] {
errno: -1,
code: 'DUCKDB_NODEJS_ERROR',
errorType: 'Connection'
}
}
2025-01-15T07:12:43+0100 <error> index.js:16 (process.<anonymous>) [Error: Connection Error: Connection wurde nie hergestellt oder bereits geschlossen] {
errno: -1,
code: 'DUCKDB_NODEJS_ERROR',
errorType: 'Connection'
}
[nodemon] sauberes Ende - Warten auf Änderungen vor dem Neustart
Ich habe es geschafft, mich wieder mit der DB zu verbinden.
@pierre-gilles
Wenn ich in der Datei server/services/mqtt/lib/connect.js eine einzige automatische Wiederverbindung im mqttClient.on 'error' hinzufüge:
this.mqttClient.on('error', (err) => {
logger.warn(`Error while connecting to MQTT - ${err}`);
this.gladys.event.emit(EVENTS.WEBSOCKET.SEND_ALL, {
type: WEBSOCKET_MESSAGE_TYPES.MQTT.ERROR,
payload: err,
});
this.disconnect();
});
zu
this.mqttClient.on('error', (err) => {
logger.warn(`Error while connecting to MQTT - ${err}`);
this.gladys.event.emit(EVENTS.WEBSOCKET.SEND_ALL, {
type: WEBSOCKET_MESSAGE_TYPES.MQTT.ERROR,
payload: err,
});
if (!this.reconnecting) {
this.reconnecting = true;
logger.warn('Attempting to reconnect to MQTT server...');
setTimeout(() => {
this.connect({
mqttUrl: mqttUrl,
mqttUsername: mqttUsername,
mqttPassword: mqttPassword
}).finally(() => {
this.reconnecting = false;
});
}, 500);
} else {
this.disconnect();
}
Nach 500 ms bin ich automatisch wieder verbunden.
Ich nehme also an, dass die automatische Wiederverbindung der Bibliothek mit dem externen Broker nicht funktioniert? Und dass das, was wir im Buffer beim Verbindungsversuch sehen, nur die vorherigen Spuren sind.
Vielleicht ist das nicht die richtige Methode. Sag mir Bescheid.
@Terdious ja, das ist eine der Möglichkeiten ![]()
Wie ich oben schon sagte, muss für mich auch das Update der Bibliothek getestet werden. Wir verwenden eine alte Version, und vielleicht wurde die automatische Wiederverbindung in einer neueren Version behoben.
Hallo @pierre-gilles,
Ich habe gerade einen Test durchgeführt. Keine Veränderung! Ich habe meine Änderung entfernt und auf 4.2.6 aktualisiert (Du wirst sagen, das hindert die Aktualisierung nicht ^^).
Offensichtlich tritt das Problem sowohl beim internen (localhost) als auch beim externen Broker auf
Und auf der Seite des internen Containers von gladys verwenden wir dieselbe feste Version und offenbar hat @gaetanb76 dasselbe Problem…
Der Eindruck, den ich hatte, war, dass bei der Verbindung zu viele Daten empfangen wurden und dass das alles durcheinander brachte. Aber in diesem Fall gibt es keinen Grund, warum @gaetanb76 in derselben Situation landen sollte, da der Broker gleichzeitig neu startet.
Aber der Code-Ausschnitt für die automatische Wiederverbindung funktioniert bei ihm… ^^
C’est bon j’ai la cause du problème
![]()
Je regarde si je sais faire !!^^
Je me disais bien que le problème de départ avait été corrigé un jour, puis que le souci est revenu ^^
Dans server/services/mqtt/lib/listenToCustomMqttTopicIfNeeded.js si je vire dans le code :
if (this.mqttClient) {
logger.info(`Subscribing to MQTT topic ${mqttTopic}`);
// this.mqttClient.subscribe(mqttTopic);
}
Alors plus de soucis de connexion au redémarrage. Si je fais :
if (this.mqttClient) {
logger.error(`Subscribing to MQTT topic ${mqttTopic}`);
// this.mqttClient.subscribe(mqttTopic);
try {
const result = this.mqttClient.subscribe(mqttTopic);
logger.warn(result);
} catch (error) {
logger.error(`Error subscribing to MQTT topic ${mqttTopic}: ${error}`);
}
}
Les logs :
2025-01-16T11:05:17+0100 <error> listenToCustomMqttTopicIfNeeded.js:32 () Subscribing to MQTT topic
2025-01-16T11:05:17+0100 <error> listenToCustomMqttTopicIfNeeded.js:38 () Error subscribing to MQTT topic : RangeError: Maximum call stack size exceeded
2025-01-16T11:05:17+0100 <error> listenToCustomMqttTopicIfNeeded.js:32 () Subscribing to MQTT topic
2025-01-16T11:05:17+0100 <error> listenToCustomMqttTopicIfNeeded.js:38 () Error subscribing to MQTT topic : RangeError: Maximum call stack size exceeded
2025-01-16T11:05:17+0100 <error> listenToCustomMqttTopicIfNeeded.js:32 () Subscribing to MQTT topic gladys/master/device/mqtt:light-ambiance-piscine/feature/mqtt:light-ambiance-piscine
2025-01-16T11:05:17+0100 <error> listenToCustomMqttTopicIfNeeded.js:38 () Error subscribing to MQTT topic gladys/master/device/mqtt:light-ambiance-piscine/feature/mqtt:light-ambiance-piscine: RangeError: Maximum call stack size exceeded
2025-01-16T11:05:17+0100 <error> listenToCustomMqttTopicIfNeeded.js:32 () Subscribing to MQTT topic gladys/master/device/mqtt:light-ambiance-piscine/feature/mqtt:light-ambiance-piscine
2025-01-16T11:05:17+0100 <error> listenToCustomMqttTopicIfNeeded.js:38 () Error subscribing to MQTT topic gladys/master/device/mqtt:light-ambiance-piscine/feature/mqtt:light-ambiance-piscine: RangeError: Maximum call stack size exceeded
2025-01-16T11:05:17+0100 <error> listenToCustomMqttTopicIfNeeded.js:32 () Subscribing to MQTT topic tarifs-total-energie
2025-01-16T11:05:17+0100 <error> listenToCustomMqttTopicIfNeeded.js:38 () Error subscribing to MQTT topic tarifs-total-energie: RangeError: Maximum call stack size exceeded
2025-01-16T11:05:17+0100 <error> listenToCustomMqttTopicIfNeeded.js:32 () Subscribing to MQTT topic tarifs-total-energie
2025-01-16T11:05:17+0100 <error> listenToCustomMqttTopicIfNeeded.js:38 () Error subscribing to MQTT topic tarifs-total-energie: RangeError: Maximum call stack size exceeded
2025-01-16T11:05:17+0100 <error> listenToCustomMqttTopicIfNeeded.js:32 () Subscribing to MQTT topic consos-vince
2025-01-16T11:05:17+0100 <error> listenToCustomMqttTopicIfNeeded.js:38 () Error subscribing to MQTT topic consos-vince: RangeError: Maximum call stack size exceeded
2025-01-16T11:05:17+0100 <error> listenToCustomMqttTopicIfNeeded.js:32 () Subscribing to MQTT topic consos-vince
2025-01-16T11:05:17+0100 <error> listenToCustomMqttTopicIfNeeded.js:38 () Error subscribing to MQTT topic consos-vince: RangeError: Maximum call stack size exceeded
2025-01-16T11:05:17+0100 <error> listenToCustomMqttTopicIfNeeded.js:32 () Subscribing to MQTT topic consos-vince
2025-01-16T11:05:17+0100 <error> listenToCustomMqttTopicIfNeeded.js:38 () Error subscribing to MQTT topic consos-vince: RangeError: Maximum call stack size exceeded
2025-01-16T11:05:17+0100 <error> listenToCustomMqttTopicIfNeeded.js:32 () Subscribing to MQTT topic consos-vince
2025-01-16T11:05:17+0100 <error> listenToCustomMqttTopicIfNeeded.js:38 () Error subscribing to MQTT topic consos-vince: RangeError: Maximum call stack size exceeded
2025-01-16T11:05:17+0100 <error> listenToCustomMqttTopicIfNeeded.js:32 () Subscribing to MQTT topic
2025-01-16T11:05:17+0100 <error> listenToCustomMqttTopicIfNeeded.js:38 () Error subscribing to MQTT topic : RangeError: Maximum call stack size exceeded
2025-01-16T11:05:17+0100 <error> listenToCustomMqttTopicIfNeeded.js:32 () Subscribing to MQTT topic consos-vince
2025-01-16T11:05:17+0100 <error> listenToCustomMqttTopicIfNeeded.js:38 () Error subscribing to MQTT topic consos-vince: RangeError: Maximum call stack size exceeded
2025-01-16T11:05:17+0100 <error> listenToCustomMqttTopicIfNeeded.js:32 () Subscribing to MQTT topic consos-vince
2025-01-16T11:05:17+0100 <error> listenToCustomMqttTopicIfNeeded.js:38 () Error subscribing to MQTT topic consos-vince: RangeError: Maximum call stack size exceeded
2025-01-16T11:05:17+0100 <error> listenToCustomMqttTopicIfNeeded.js:32 () Subscribing to MQTT topic consos-vince
2025-01-16T11:05:17+0100 <error> listenToCustomMqttTopicIfNeeded.js:38 () Error subscribing to MQTT topic consos-vince: RangeError: Maximum call stack size exceeded
2025-01-16T11:05:17+0100 <error> listenToCustomMqttTopicIfNeeded.js:32 () Subscribing to MQTT topic consos-vince
2025-01-16T11:05:17+0100 <error> listenToCustomMqttTopicIfNeeded.js:38 () Error subscribing to MQTT topic consos-vince: RangeError: Maximum call stack size exceeded
2025-01-16T11:05:17+0100 <warn> connect.js:54 (MqttClient.<anonymous>) Error while connecting to MQTT - Error: write ECONNRESET
2025-01-16T11:05:17+0100 <warn> connect.js:80 (MqttClient.<anonymous>) Disconnected from MQTT server
2025-01-16T11:05:22+0100 <error> connect.js:41 (MqttClient.<anonymous>) Connected to MQTT server mqtt://10.5.0.50:1883
2025-01-16T11:05:22+0100 <warn> connect.js:80 (MqttClient.<anonymous>) Disconnected from MQTT server
Il ne veut donc plus se reconnecter… Je n’ai pas la réponse de pourquoi …
Et l’appuie sur le bouton de sauvegarde ne redéclenche aucun logs de cette partie du code (donc pas de reconnexion aux topics custom ??)
@Terdious, super cool, dass du das gefunden hast!
Nutzt du häufig die Funktion für benutzerdefinierte MQTT-Topics?
Hast du mehrere Geräte, die auf dasselbe MQTT-Topic hören?
Ja trotzdem ^^
Ja, mehrere Geräte, aber nur für ein Thema. Offensichtlich funktioniert kein benutzerdefiniertes Thema.
Hast du etwa Custom-Topics für native Gladys-Topics erstellt?
Dafür sind sie nicht vorgesehen ![]()
Aber man muss schauen, ob es nicht daran liegt, dass man denselben Topic für verschiedene Features verwendet, was Probleme verursacht
Hallo @pierre-gilles,
Nach deiner Antwort habe ich die Logs etwas weiter verfolgt. Es handelt sich eindeutig um einen Fehler in den Feldern … Daher wird das Problem wahrscheinlich sein, wie man darauf aufmerksam machen kann, aber nicht nur das. Ich erkläre es: In der Datei der benutzerdefinierten Einträge habe ich also geloggt:
- device.param:
device.params [
{
id: 'df3028da-f845-43a4-8f16-2ee02aa15b39',
device_id: '088f3819-2f5e-4622-8f5b-b3e3b7710918',
name: 'mqtt_custom_topic_feature:c2ffe676-bd49-4009-a193-ca5b2d6bcf2a',
value: '',
created_at: 2024-07-04T04:09:00.529Z,
updated_at: 2024-07-04T04:35:56.381Z
},
{
id: '1f3089f0-7179-4ad7-b133-79ad2d82a7c5',
device_id: '088f3819-2f5e-4622-8f5b-b3e3b7710918',
name: 'mqtt_custom_object_path_feature:c2ffe676-bd49-4009-a193-ca5b2d6bcf2a',
value: '',
created_at: 2024-07-04T04:09:00.529Z,
updated_at: 2024-07-04T04:35:56.386Z
},
{
id: 'abc366a4-247f-496c-bd0a-a0ee9629c43d',
device_id: '088f3819-2f5e-4622-8f5b-b3e3b7710918',
name: 'mqtt_custom_topic_feature:b47df305-53f7-4d47-9610-1b630bd49ac7',
value: '',
created_at: 2024-07-04T04:09:00.529Z,
updated_at: 2024-07-04T04:35:56.385Z
},
{
id: '6e31226e-6b03-4908-870e-687403b05fbb',
device_id: '088f3819-2f5e-4622-8f5b-b3e3b7710918',
name: 'mqtt_custom_object_path_feature:b47df305-53f7-4d47-9610-1b630bd49ac7',
value: '',
created_at: 2024-07-04T04:09:00.529Z,
updated_at: 2024-07-04T04:35:56.387Z
},
{
id: '500b2c1f-d6ee-4e66-84b7-2612ec3c2414',
device_id: '088f3819-2f5e-4622-8f5b-b3e3b7710918',
name: 'mqtt_custom_topic_feature:62b057da-d367-4972-97d3-00dc8fc1a065',
value: 'gladys/master/device/mqtt:light-ambiance-piscine/feature/mqtt:light-ambiance-piscine',
created_at: 2024-07-04T04:15:43.875Z,
updated_at: 2024-07-04T04:15:43.875Z
},
{
id: 'da0d94b8-79bf-4ffe-9058-c997a3debc1d',
device_id: '088f3819-2f5e-4622-8f5b-b3e3b7710918',
name: 'mqtt_custom_object_path_feature:62b057da-d367-4972-97d3-00dc8fc1a065',
value: 'speed',
created_at: 2024-07-04T04:15:43.875Z,
updated_at: 2024-07-04T04:24:24.834Z
},
Man kann leere ‹ value ›-Felder, Punkte und ‹ value ›-Felder sehen, die die MQTT-Nachricht im JSON-Format anstelle des Topics enthalten, wie zum Beispiel:
- this.deviceFeatureCustomMqttTopics
this.deviceFeatureCustomMqttTopics [
{
topic: '',
regex_key: '',
device_feature_id: 'c2ffe676-bd49-4009-a193-ca5b2d6bcf2a',
object_path: ''
},
{
topic: '',
regex_key: '',
device_feature_id: 'b47df305-53f7-4d47-9610-1b630bd49ac7',
object_path: ''
},
{
topic: 'gladys/master/device/mqtt:light-ambiance-piscine/feature/mqtt:light-ambiance-piscine',
regex_key: 'gladys/master/device/mqtt:light-ambiance-piscine/feature/mqtt:light-ambiance-piscine',
device_feature_id: '62b057da-d367-4972-97d3-00dc8fc1a065',
object_path: 'speed'
}
]
Und hier gibt es bereits ein Problem, leere Werte … und einige gefüllte, die nicht mehr existieren. Zum Beispiel existiert dieses Feature nicht mehr. Aber die Parameter sind immer noch da (Test von einem Tag):
Und umgekehrt, im folgenden Beispiel habe ich tatsächlich ein vorhandenes Feature mit Parametern, bei denen der Wert leer ist …
Aber dann habe ich nichts in den benutzerdefinierten Feldern angegeben (und bei diesen bin ich mir sicher, nie etwas ausgefüllt zu haben - aber andere waren bei der Erstellung damit ausgestattet):
Gibt es nicht ein Problem bei der Verwaltung der Parameter beim Löschen von Funktionen + anderen?
Und tatsächlich habe ich gerade das Entfernen eines Features getestet, also das Feature mit der ID b6929839-c590-460d-abb1-28c795ed5628. Es ist nicht mehr in den Features, aber immer noch in den Parametern:
Und tatsächlich, nach ein wenig Nachdenken wundert mich das nicht, da die Parameter den Geräten zugeordnet sind und die Verbindung nicht existieren sollte.
Wenn wir also ein benutzerdefiniertes Topic auf die gleiche Weise konfigurieren, nehme ich an, dass es, wenn wir es anschließend entfernen, einfach durch ein leeres Feld ersetzt wird.
@gaetanb76, kannst du bestätigen, ob du Features oder benutzerdefinierte Topics entfernt hast?
Daher Test des Entfernens der betroffenen Geräte und Erstellung neuer Geräte mit benutzerdefinierten Einstellungen: Keine Probleme mehr ![]()
this.deviceFeatureCustomMqttTopics [
{
topic: 'test',
regex_key: 'test',
device_feature_id: 'd1a558eb-07d6-4972-900d-c3b4bc1587b8',
object_path: null
}
]
device.params [
{
id: 'b1795c88-c39e-447a-a683-81f8c6fe1e6a',
device_id: '6cb64637-71b2-4b34-be5c-75a0eeaff17c',
name: 'mqtt_custom_topic_feature:d1a558eb-07d6-4972-900d-c3b4bc1587b8',
value: 'test',
created_at: 2025-01-17T10:09:39.371Z,
updated_at: 2025-01-17T10:14:24.625Z
}
]
2025-01-17T11:14:43+0100 <error> listenToCustomMqttTopicIfNeeded.js:35 () Subscribing to MQTT topic test
Wenn wir anschließend das benutzerdefinierte Topic leeren, sehen wir, dass das Problem vom Entfernen oder Leeren kommt:
this.deviceFeatureCustomMqttTopics [
{
topic: '',
regex_key: '',
device_feature_id: 'd1a558eb-07d6-4972-900d-c3b4bc1587b8',
object_path: null
}
]
device.params [
{
id: 'b1795c88-c39e-447a-a683-81f8c6fe1e6a',
device_id: '6cb64637-71b2-4b34-be5c-75a0eeaff17c',
name: 'mqtt_custom_topic_feature:d1a558eb-07d6-4972-900d-c3b4bc1587b8',
value: '',
created_at: 2025-01-17T10:09:39.371Z,
updated_at: 2025-01-17T10:15:27.005Z
}
]
2025-01-17T11:15:27+0100 <error> listenToCustomMqttTopicIfNeeded.js:35 () Subscribing to MQTT topic
2025-01-17T11:15:27+0100 <warn> connect.js:82 (MqttClient.<anonymous>) Disconnected from MQTT server
Gut erkannt @Terdious! Das ist es bestimmt!
Ich denke, das lässt sich ganz einfach lösen, indem man einen if(mqttTopic && mqttTopic.length) hinzufügt ![]()
Es ist nicht so schlimm, wenn die Parameter leer sind, listenToCustomMqttTopicIfNeeded.js sollte sie einfach ignorieren.
Ich aktualisiere die PR damit!!
Wir sind uns einig!
Das ist okay für mich @pierre-gilles:




