Problem mit Gladys Plus

Ich habe seit gestern ein Problem: Mein Gladys interagiert nicht mehr mit meinen Geräten und ist nicht mehr „auf dem neuesten Stand“.
Alle meine Diagramme sind am 2. Juni stehengeblieben (obwohl alles bis vor etwa zwei Tagen funktioniert hat).

Wenn ich auf meine lokale Instanz zugreife, ist alles aktuell, kein Problem… Was passiert da? :thinking:
Ein Hinweis von dir @pierre-gilles?

Deine lokale Instanz muss von Gladys Plus getrennt werden, es gibt nicht nur einen Grund, es kann viele Dinge sein:

  • Internetverbindungsproblem bei dir zu Hause
  • Langsamkeit in deiner Instanz, die Aufgaben anhäuft und zu langsam zum Antworten wird

Alles klar, ich schau mir das an, wenn ich nach Hause komme :+1:

Bon… Ben heute funktioniert es wieder ^^

Vielleicht ein Netzwerkproblem bei mir!

Okay, ich habe ein Problem: Das Problem wiederholt sich.
Trotzdem bei mir: Keine Netzwerkprobleme, ich habe kein Stromproblem, da alles an einem USV hängt.

Da ich nicht herausfinden kann, wann die Verbindung unterbrochen wird, bin ich etwas ratlos, was die Logs angeht.

Was ich heute Morgen bemerkt habe, ist, dass meine Gladys-Logs völlig mit Telegram-Fehlern überschwemmt sind:

2024-06-28T09:05:27+0200 <warn> message.connect.js:19 (TelegramBot.<anonymous>) Telegram polling error, code = ETELEGRAM, message = ETELEGRAM: 409 Conflict: terminated by other getUpdates request; make sure that only one bot instance is running

Es gibt Hunderte davon in den wenigen Logs, die ich herausgefiltert habe.

Außerdem frage ich ChatGPT, was er dazu denkt, und er schlägt vor, einen Befehl zu testen:

ps aux | grep node

Was folgendes zurückgibt:

root        1995  0.0  0.0    816   384 ?        Ss   juin26   0:07 /sbin/tini -- node index.js
root        2009  3.7  3.7 21538828 301480 ?     Ssl  juin26 100:08 node index.js
root        2011  0.0  1.9 390480 159928 pts/0   Ssl+ juin26   1:10 /app/presearch-node
root        2127  0.9  1.7 362256 139616 ?       Sl   juin26  24:28 node index.js
root        3118  0.0  0.0   2796  1792 ?        Ss   juin26   0:00 fusermount3 -o rw,nosuid,nodev,fsname=portal,auto_unmount,subtype=portal -- /run/user/1000/doc
guilhem    35783  0.4  2.1 11333556 172344 pts/0 Sl+  juin26  11:19 node-red
guilhem   353315  0.0  0.0  11780  2560 pts/1    S+   09:09   0:00 grep --color=auto node

Falls das jemandem von euch etwas sagt…? :thinking:

Versuche schon mal, die Telegram-Logs zu bereinigen, das wird dir helfen, klarer zu sehen :slight_smile:

Dieser Fehler liegt daran, dass du denselben API-Schlüssel für Gladys und für ein anderes Programm (z. B. Node-RED) verwendet hast.

In Telegram gilt: Ein API-Schlüssel = Ein Client.

Sollte ich das anders machen?
Muss ich also einen Bot erstellen, der mit Gladys verbunden ist, und einen anderen, der mit NodeRed verbunden ist?

Ich habe gesucht, ob es möglich ist, mehrere API-Schlüssel für denselben Bot (selbe Konversation) zu haben, und anscheinend ist das nicht möglich

Also ja, man muss einen neuen Bot im BotFather erstellen, aber dadurch werden es dann 2 Konversationen

Das ist nicht so schlimm, damit werde ich schon fertig. Aber was ich seltsam finde, ist, dass ich keinen Node-RED-Fluss finde, der dieselbe API verwendet wie die in Gladys konfigurierte …!

Was @guim31 beschreibt, ist sehr ähnlich zu dem, was ich bei mir beobachtet habe. Hier: Gladys devient injoignable après quelques heures de fonctionnement - #9 par pierre-gilles

Und ich hatte tatsächlich einen Node-Red-Fluss, der denselben Telegram-Kanal wie Gladys nutzte. Ich habe diesen Node-Red-Fluss deaktiviert, und seitdem läuft Gladys deutlich besser.
Aber noch nicht perfekt, ich hatte einen weiteren Absturz, den ich aber nicht sofort analysieren konnte… Also bin ich jetzt in „Beobachtungsmodus“, mit einer Gladys-Szene, die sich alle Stunden auslöst und mir eine „keep alive“-Nachricht in Telegram schreibt, um den nächsten Absturz effektiv zu erkennen :wink:

Aber ich habe im Moment leider keine Zeit, mich hinzusetzen und das alles ernsthaft zu analysieren…

Bon… Ben wieder da.

Trotzdem bin ich gut mit dem Internet verbunden:

Bei dir @pierre-gilles, ist alles in Ordnung mit den Verbindungen zu Gladys Plus?

Vielleicht gibt es hier eine kleine Verwechslung, die « 33ms Ping » bedeutet nur, dass dein Frontend mit dem Gladys-Backend (rein lokal) verbunden ist, das bedeutet nicht, dass Gladys mit dem Internet verbunden ist.

Gestern gab es keine besonderen Probleme mit der Infrastruktur. Ich habe jedoch keine Details pro Instanz.

Hast du die Logs überprüft, ob etwas nicht in Ordnung ist? Die Aktivität auf deinem Gerät?

AH !

Vielleicht ein Hinweis:


2024-07-02T04:00:00+0200 <info> device.purgeStates.js:29 (DeviceManager.purgeStates) Löscht Gerätemerkmalzustände der letzten 90 Tage. Zustände, die älter als Mi Apr 03 2024 04:00:00 GMT+0200 (Mitteleuropäische Sommerzeit) sind, werden gelöscht.
2024-07-02T04:00:06+0200 <warn> device.calculateAggregate.js:95 (Socket.<anonymous>) device.calculateAggregate stderr: Fehler
    at Database.<anonymous> (/src/server/node_modules/sequelize/lib/dialects/sqlite/query.js:179:27)
    at /src/server/node_modules/sequelize/lib/dialects/sqlite/query.js:177:50
    at new Promise (<anonymous>)
    at Query.run (/src/server/node_modules/sequelize/lib/dialects/sqlite/query.js:177:12)
    at /src/server/node_modules/sequelize/lib/sequelize.js:314:28
    at async SQLiteQueryInterface.bulkUpdate (/src/server/node_modules/sequelize/lib/dialects/abstract/query-interface.js:366:12)
    at async t_device_feature.update (/src/server/node_modules/sequelize/lib/model.js:1958:28)
    at async /src/server/lib/device/device.calculcateAggregateChildProcess.js:153:5 {
  name: 'SequelizeTimeoutError',
  parent: [Error: SQLITE_BUSY: Datenbank ist gesperrt] {
    errno: 5,
    code: 'SQLITE_BUSY',
    sql: 'UPDATE `t_device_feature` SET `last_hourly_aggregate`=$1,`updated_at`=$2 WHERE `id` = $3'
  },
  original: [Error: SQLITE_BUSY: Datenbank ist gesperrt] {
    errno: 5,
    code: 'SQLITE_BUSY',
    sql: 'UPDATE `t_device_feature` SET `last_hourly_aggregate`=$1,`updated_at`=$2 WHERE `id` = $3'
  },
  sql: 'UPDATE `t_device_feature` SET `last_hourly_aggregate`=$1,`updated_at`=$2 WHERE `id` = $3',
  parameters: {}
}
all values are hidden
2024-07-02T04:00:06+0200 <warn> device.calculateAggregate.js:101 (ChildProcess.<anonymous>) device.calculateAggregate: Beendet Kindprozess mit Code 1
2024-07-02T04:00:19+0200 <info> device.purgeAggregateStates.js:31 (DeviceManager.purgeAggregateStates) Löscht Gerätemerkmalzustände der letzten 365 Tage. Zustände, die älter als Mo Jul 03 2023 04:00:19 GMT+0200 (Mitteleuropäische Sommerzeit) sind, werden gelöscht.
2024-07-02T04:00:19+0200 <error> device.onHourlyDeviceAggregateEvent.js:22 (DeviceManager.onHourlyDeviceAggregateEvent) Error: Error
    at Database.<anonymous> (/src/server/node_modules/sequelize/lib/dialects/sqlite/query.js:179:27)
    at /src/server/node_modules/sequelize/lib/dialects/sqlite/query.js:177:50
    at new Promise (<anonymous>)
    at Query.run (/src/server/node_modules/sequelize/lib/dialects/sqlite/query.js:177:12)
    at /src/server/node_modules/sequelize/lib/sequelize.js:314:28
    at async SQLiteQueryInterface.bulkUpdate (/src/server/node_modules/sequelize/lib/dialects/abstract/query-interface.js:366:12)
    at async t_device_feature.update (/src/server/node_modules/sequelize/lib/model.js:1958:28)
    at async /src/server/lib/device/device.calculcateAggregateChildProcess.js:153:5 {
  name: 'SequelizeTimeoutError',
  parent: [Error: SQLITE_BUSY: Datenbank ist gesperrt] {
    errno: 5,
    code: 'SQLITE_BUSY',
    sql: 'UPDATE `t_device_feature` SET `last_hourly_aggregate`=$1,`updated_at`=$2 WHERE `id` = $3'
  },
  original: [Error: SQLITE_BUSY: Datenbank ist gesperrt] {
    errno: 5,
    code: 'SQLITE_BUSY',
    sql: 'UPDATE `t_device_feature` SET `last_hourly_aggregate`=$1,`updated_at`=$2 WHERE `id` = $3'
  },
  sql: 'UPDATE `t_device_feature` SET `last_hourly_aggregate`=$1,`updated_at`=$2 WHERE `id` = $3',
  parameters: {}
}
all values are hidden
    at ChildProcess.<anonymous> (/src/server/lib/device/device.calculateAggregate.js:102:23)
    at ChildProcess.emit (node:events:517:28)
    at maybeClose (node:internal/child_process:1098:16)
    at Process.ChildProcess._handle.onexit (node:internal/child_process:303:5)

Könnte das davon kommen?

Denn ich stelle fest, dass meine Verbindung zu Gladys Plus heute Morgen wieder ausgefallen ist… :frowning:

Keine Ahnung, ob das wirklich die Ursache deiner Probleme ist ^^

Verdammt … :expressionless: Daran glaubte ich
Ich werde weitersuchen, das Problem ist, dass ich nie weiß, wann die Verbindung abbricht, ich merke es meistens erst, wenn ich nicht zu Hause bin

Hallo,
Gibt es keine Möglichkeit, eine Szene zu erstellen, um das Problem zeitlich zuzuordnen?

Gern würde ich, aber ich habe Schwierigkeiten zu wissen, wie ich das machen könnte… :confused:

Was mir auffällt, ist, dass der RAM-Verbrauch stark abnimmt, wenn ich Gladys neu starte:

image

Er sinkt von 1,9 GB auf etwa 250 MB

Hier sind die Startprotokolle (ich weiß nicht, was interessant ist oder nicht):

Container started
2024-07-02T13:14:19+0200 <info> job.purge.js:17 (Job.purge) Löschen aller Hintergrundaufträge, die vor = Di 25 Jun 2024 13:14:19 GMT+0200 (Mitteleuropäische Sommerzeit) erstellt wurden
2024-07-02T13:14:21+0200 <info> index.js:14 (Object.start) Alexa-Dienst wird gestartet
2024-07-02T13:14:21+0200 <info> index.js:20 (Object.start) Open Weather-Dienst wird gestartet
2024-07-02T13:14:21+0200 <info> index.js:88 (Object.start) CalDAV-Dienst wird gestartet
2024-07-02T13:14:21+0200 <info> index.js:15 (Object.start) Enedis-Dienst wird gestartet
2024-07-02T13:14:21+0200 <info> index.js:18 (Object.start) GoogleCast-Dienst wird gestartet
2024-07-02T13:14:21+0200 <info> index.js:16 (Object.start) Z-Wave JS UI-Dienst wird gestartet
2024-07-02T13:14:21+0200 <info> service.start.js:40 (Service.start) Der Dienst zwavejs-ui ist nicht konfiguriert, daher wurde er nicht gestartet.
2024-07-02T13:14:21+0200 <info> index.js:17 (Object.start) Sonos-Dienst wird gestartet
2024-07-02T13:14:21+0200 <info> index.js:17 (Object.start) Netatmo-Dienst 2c286e6d-2a29-4b91-acff-6f4d942430a4 wird gestartet
2024-07-02T13:14:21+0200 <info> service.start.js:40 (Service.start) Der Dienst netatmo ist nicht konfiguriert, daher wurde er nicht gestartet.
2024-07-02T13:14:21+0200 <info> init.js:14 (NodeRedManager.init) Nodered: ist nicht aktiviert, wird übersprungen...
2024-07-02T13:14:21+0200 <info> index.js:27 (Object.start) MELCloud-Dienst 1ef9a32d-2664-4a3b-8824-ac983bb3cc12 wird gestartet
2024-07-02T13:14:21+0200 <info> service.start.js:40 (Service.start) Der Dienst melcloud ist nicht konfiguriert, daher wurde er nicht gestartet.
2024-07-02T13:14:21+0200 <info> index.js:17 (Object.start) Tuya-Dienst d94188bc-9520-4043-9171-3e8dc9c4ee48 wird gestartet
2024-07-02T13:14:21+0200 <info> service.start.js:40 (Service.start) Der Dienst tuya ist nicht konfiguriert, daher wurde er nicht gestartet.
2024-07-02T13:14:21+0200 <info> index.js:16 (Object.start) Nextcloud Talk-Dienst wird gestartet
2024-07-02T13:14:21+0200 <info> service.start.js:40 (Service.start) Der Dienst nextcloud-talk ist nicht konfiguriert, daher wurde er nicht gestartet.
2024-07-02T13:14:21+0200 <info> index.js:17 (Object.start) LAN Manager-Dienst wird gestartet
2024-07-02T13:14:21+0200 <info> lan-manager.initPresenceScanner.js:18 (LANManager.initPresenceScanner) LANManager-Konfiguration: Präsenzscanner wird gestartet
2024-07-02T13:14:21+0200 <info> index.js:16 (Object.start) Broadlink-Dienst wird gestartet
2024-07-02T13:14:22+0200 <info> index.js:18 (Object.start) HomeKit-Dienst wird gestartet
2024-07-02T13:14:22+0200 <info> index.js:14 (Object.start) GoogleActions-Dienst wird gestartet
2024-07-02T13:14:22+0200 <info> init.js:63 (Zigbee2mqttManager.init) Zigbee2mqtt-USB-Dongle ist an /dev/ttyUSB0 angeschlossen
2024-07-02T13:14:22+0200 <info> checkForContainerUpdates.js:14 (Zigbee2mqttManager.checkForContainerUpdates) Überprüfung der installierten Versionen und erforderlichen Updates...
2024-07-02T13:14:22+0200 <info> installMqttContainer.js:114 (Zigbee2mqttManager.installMqttContainer) MQTT-Broker-Container erfolgreich gestartet
2024-07-02T13:14:22+0200 <info> configureContainer.js:23 (Zigbee2mqttManager.configureContainer) Z2M Docker-Container wird konfiguriert...
2024-07-02T13:14:22+0200 <info> configureContainer.js:36 (Zigbee2mqttManager.configureContainer) Z2M-Konfigurationsdatei existiert bereits.
2024-07-02T13:14:23+0200 <info> installZ2mContainer.js:90 (Zigbee2mqttManager.installZ2mContainer) Zigbee2mqtt-Container erfolgreich gestartet
2024-07-02T13:14:23+0200 <info> connect.js:25 (Zigbee2mqttManager.connect) Verbindung von Gladys zum MQTT-Broker mqtt://localhost:1884...
2024-07-02T13:14:23+0200 <error> index.js:20 (process.<anonymous>) uncaughtException gefangen: uncaughtException
2024-07-02T13:14:23+0200 <error> index.js:21 (process.<anonymous>) Error: Dienstname wird bereits im Netzwerk verwendet
    at Registry._onProbeComplete (/src/server/services/homekit/node_modules/bonjour-hap/lib/Registry.js:108:27)
    at Prober.done (/src/server/services/homekit/node_modules/bonjour-hap/lib/Prober.js:67:10)
    at Prober.onMDNSresponse (/src/server/services/homekit/node_modules/bonjour-hap/lib/Prober.js:61:102)
    at EventEmitter.emit (node:events:517:28)
    at Socket.<anonymous> (/src/server/services/homekit/node_modules/multicast-dns/index.js:49:43)
    at Socket.emit (node:events:517:28)
    at UDP.onMessage (node:dgram:942:8)
2024-07-02T13:14:23+0200 <info> connect.js:35 (MqttClient.<anonymous>) Verbunden mit MQTT-Container mqtt://localhost:1884
2024-07-02T13:14:23+0200 <info> subscribe.js:12 (Zigbee2mqttManager.subscribe) Abonnieren des MQTT-Themas zigbee2mqtt/#
2024-07-02T13:14:23+0200 <info> index.js:18 (Object.start) TP-Link-Dienst wird gestartet
2024-07-02T13:14:23+0200 <info> index.js:17 (Object.start) eWeLink-Dienst wird gestartet
2024-07-02T13:14:23+0200 <warn> service.start.js:44 (Service.start) Dienst ewelink konnte nicht gestartet werden Error500:
    at EweLinkHandler.throwErrorIfNeeded (/src/server/services/ewelink/lib/device/index.js:65:11)
    at EweLinkHandler.connect (/src/server/services/ewelink/lib/device/connect.js:43:14)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at Object.start (/src/server/services/ewelink/index.js:18:5)
    at Service.start (/src/server/lib/service/service.start.js:33:7) {
  status: 500,
  code: 'SERVER_ERROR',
  error: 'eWeLink: Sign:oauthClient enable invalid'
}
2024-07-02T13:14:23+0200 <info> index.js:15 (Object.start) Bluetooth-Dienst wird gestartet
2024-07-02T13:14:23+0200 <info> index.js:15 (Object.start) Tasmota-Dienst wird gestartet
2024-07-02T13:14:23+0200 <info> index.js:14 (Object.start) Xiaomi-Dienst wird gestartet
2024-07-02T13:14:23+0200 <info> index.js:13 (Object.start) USB-Dienst wird gestartet
2024-07-02T13:14:23+0200 <info> index.js:19 (Object.start) Telegram-Dienst wird gestartet
2024-07-02T13:14:23+0200 <info> index.js:18 (Object.start) RTSP-Dienst wird gestartet
2024-07-02T13:14:23+0200 <info> index.js:18 (Object.start) Philips Hue-Dienst wird gestartet
2024-07-02T13:14:23+0200 <info> index.js:16 (Object.start) MQTT-Dienst wird gestartet
2024-07-02T13:14:23+0200 <info> updateContainer.js:13 (MqttHandler.updateContainer) MQTT: Überprüfung auf erforderliche Änderungen...
2024-07-02T13:14:23+0200 <info> updateContainer.js:41 (MqttHandler.updateContainer) MQTT: Kein Container-Update erforderlich
2024-07-02T13:14:23+0200 <info> connect.js:38 (MqttClient.<anonymous>) Verbunden mit MQTT-Server mqtt://localhost
2024-07-02T13:14:23+0200 <info> subscribe.js:12 (MqttHandler.subscribe) Abonnieren des MQTT-Themas stat/+/+
2024-07-02T13:14:23+0200 <info> subscribe.js:12 (MqttHandler.subscribe) Abonnieren des MQTT-Themas tele/+/+
2024-07-02T13:14:23+0200 <info> subscribe.js:12 (MqttHandler.subscribe) Abonnieren des MQTT-Themas gladys/master/#
2024-07-02T13:14:23+0200 <info> index.js:26 (Object.start) EDF Tempo-Dienst wird gestartet
2024-07-02T13:14:23+0200 <info> index.js:17 (Object.start) Ecowatt-Dienst wird gestartet
2024-07-02T13:14:23+0200 <info> index.js:21 (Object.start) Beispiel-Dienst wird gestartet
2024-07-02T13:14:23+0200 <info> scene.dailyUpdate.js:58 () Heute geht die Sonne um 6:18 Uhr in Ihrer Zeitzone (Europe/Paris) auf
2024-07-02T13:14:23+0200 <info> scene.dailyUpdate.js:59 () Heute geht die Sonne um 21:42 Uhr in Ihrer Zeitzone (Europe/Paris) unter
2024-07-02T13:14:23+0200 <info> scene.dailyUpdate.js:70 () Die Sonne ist heute Morgen aufgegangen. Heute wird nichts geplant.
2024-07-02T13:14:23+0200 <info> scene.dailyUpdate.js:81 () Sonnenuntergang ist geplant, in 8 Stunden.
2024-07-02T13:14:24+0200 <info> index.js:64 (Server.<anonymous>) Server hört auf Port 80
2024-07-02T13:14:24+0200 <info> index.js:884 (Socket.<anonymous>) Gladys Gateway: verbunden über Websockets

@guim31 Kannst du uns deine Hardware und deine Internetverbindung (Glasfaser? DSL?) nennen? :slight_smile:

Aus dem, was du beschreibst, scheint deine Gladys-Instanz mit der Zeit Daten im Speicher anzusammeln, das kann viele Ursachen haben.

Das sieht stark nach einem Ressourcenproblem aus, was du brauchst, sind präzise Analysen aller Metriken deines Servers im Zeitverlauf.

Ich persönlich nutze Netdata auf vielen meiner Server (https://www.netdata.cloud/)

Es ist eine Open-Source-Software, die lokal installiert wird und dir eine Fülle von Daten über deinen Server mit Historie liefert.

Danach kannst du im Browser alle diese Daten visualisieren.

Ich werde Netdata installieren, ich habe es bereits für mein NAS verwendet, aber ich gestehe, ich bin mit all den Informationen überfordert (vor allem, weil das Tool super leistungsfähig ist!).

Ich habe einen Mini-PC mit einem Core i3 und 8 GB RAM.
Fiber-Anschluss bei Free, der scheinbar völlig stabil ist.