Tengo un problema desde ayer: mi Gladys ya no interactúa con mis dispositivos y no está « actualizada ».
Todos mis gráficos se detuvieron el 2 de junio (cuando todo funcionaba hasta hace unos dos días).
Cuando accedo a mi instancia local, todo está actualizado, sin problemas… ¿Qué está pasando?
¿Alguna pista por tu parte @pierre-gilles?
Bueno, tengo un problema: el problema se repite.
Sin embargo, en mi caso: ningún problema de red, no tengo problemas de alimentación ya que todo está en un UPS.
Dado que no puedo saber cuándo se produce la desconexión, estoy un poco perdido en cuanto a los registros.
Lo que noto esta mañana es que mis registros de Gladys están totalmente contaminados por errores de Telegram:
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
Hay cientos de ellos en los pocos registros que he revisado.
Además, le pregunto a ChatGPT qué opina, y me sugiere probar un comando:
Eso no es grave, me adaptaré. Por otro lado, lo que me parece extraño es que no encuentro ningún flujo de node-red que utilice la misma API que la configurada en Gladys …!
Y sí, tenía un flujo de node-red que utilizaba el mismo Telegram que Gladys. Desactivé ese flujo de node-red, y Gladys funciona mucho mejor desde entonces.
Pero aún no es perfecto, tuve otro bloqueo después, pero no pude analizarlo en ese momento… Así que estoy en ‹ observación ›, con una escena de Gladys que se activa cada hora y me escribe un ‹ keep alive › en Telegram, para detectar eficazmente la próxima caída
Pero bueno, en este momento tengo muy poco tiempo para sentarme y analizar todo esto seriamente…
Puede haber una pequeña confusión, el « 33ms ping » solo significa que tu frontend está conectado al backend de Gladys (en modo local puro), no significa que Gladys esté conectada a internet.
Ningún problema particular ayer en la infraestructura. No tengo detalles por instancia, sin embargo.
¿Has mirado los logs para ver si algo no iba bien? ¿La actividad en tu máquina?
2024-07-02T04:00:00+0200 <info> device.purgeStates.js:29 (DeviceManager.purgeStates) Purging device feature states of the last 90 days. States older than Wed Apr 03 2024 04:00:00 GMT+0200 (Central European Summer Time) will be purged.
2024-07-02T04:00:06+0200 <warn> device.calculateAggregate.js:95 (Socket.<anonymous>) device.calculateAggregate stderr: 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: database is locked] {
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: database is locked] {
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: Exiting child process with code 1
2024-07-02T04:00:19+0200 <info> device.purgeAggregateStates.js:31 (DeviceManager.purgeAggregateStates) Purging device feature states of the last 365 days. States older than Mon Jul 03 2023 04:00:19 GMT+0200 (Central European Summer Time) will be purged.
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: database is locked] {
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: database is locked] {
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)
¿Podría ser eso?
Porque noto esta mañana que mi conexión a Gladys Plus se ha caído de nuevo…
Joder … lo creía
Voy a seguir buscando, el problema es que nunca sé cuándo se cae la conexión, me doy cuenta cuando ya estoy fuera de casa generalmente
Lo que observo es que, en el momento en que reinicio Gladys, la memoria utilizada disminuye drásticamente:
Pasamos de 1,9 GB de RAM a aproximadamente 250 MB
Aquí están los registros de inicio (no sé qué es interesante para investigar o no):
Container started
2024-07-02T13:14:19+0200 <info> job.purge.js:17 (Job.purge) Eliminando todos los trabajos en segundo plano creados antes = Tue Jun 25 2024 13:14:19 GMT+0200 (Hora de verano de Europa central)
2024-07-02T13:14:21+0200 <info> index.js:14 (Object.start) iniciando servicio Alexa
2024-07-02T13:14:21+0200 <info> index.js:20 (Object.start) Iniciando servicio Open Weather
2024-07-02T13:14:21+0200 <info> index.js:88 (Object.start) Iniciando servicio CalDAV
2024-07-02T13:14:21+0200 <info> index.js:15 (Object.start) Iniciando servicio enedis
2024-07-02T13:14:21+0200 <info> index.js:18 (Object.start) Iniciando servicio GoogleCast
2024-07-02T13:14:21+0200 <info> index.js:16 (Object.start) Iniciando servicio Z-Wave JS UI
2024-07-02T13:14:21+0200 <info> service.start.js:40 (Service.start) El servicio zwavejs-ui no está configurado, por lo que no se inició.
2024-07-02T13:14:21+0200 <info> index.js:17 (Object.start) Iniciando servicio Sonos
2024-07-02T13:14:21+0200 <info> index.js:17 (Object.start) Iniciando servicio Netatmo 2c286e6d-2a29-4b91-acff-6f4d942430a4
2024-07-02T13:14:21+0200 <info> service.start.js:40 (Service.start) El servicio netatmo no está configurado, por lo que no se inició.
2024-07-02T13:14:21+0200 <info> init.js:14 (NodeRedManager.init) Nodered: no está habilitado, se omite...
2024-07-02T13:14:21+0200 <info> index.js:27 (Object.start) Iniciando servicio MELCloud 1ef9a32d-2664-4a3b-8824-ac983bb3cc12
2024-07-02T13:14:21+0200 <info> service.start.js:40 (Service.start) El servicio melcloud no está configurado, por lo que no se inició.
2024-07-02T13:14:21+0200 <info> index.js:17 (Object.start) Iniciando servicio Tuya d94188bc-9520-4043-9171-3e8dc9c4ee48
2024-07-02T13:14:21+0200 <info> service.start.js:40 (Service.start) El servicio tuya no está configurado, por lo que no se inició.
2024-07-02T13:14:21+0200 <info> index.js:16 (Object.start) Iniciando servicio Nextcloud Talk
2024-07-02T13:14:21+0200 <info> service.start.js:40 (Service.start) El servicio nextcloud-talk no está configurado, por lo que no se inició.
2024-07-02T13:14:21+0200 <info> index.js:17 (Object.start) Iniciando servicio LAN Manager
2024-07-02T13:14:21+0200 <info> lan-manager.initPresenceScanner.js:18 (LANManager.initPresenceScanner) Configuración de LANManager: iniciando escáner de presencia
2024-07-02T13:14:21+0200 <info> index.js:16 (Object.start) iniciando servicio Broadlink
2024-07-02T13:14:22+0200 <info> index.js:18 (Object.start) Iniciando servicio HomeKit
2024-07-02T13:14:22+0200 <info> index.js:14 (Object.start) iniciando servicio GoogleActions
2024-07-02T13:14:22+0200 <info> init.js:63 (Zigbee2mqttManager.init) Zigbee2mqtt USB dongle conectado a /dev/ttyUSB0
2024-07-02T13:14:22+0200 <info> checkForContainerUpdates.js:14 (Zigbee2mqttManager.checkForContainerUpdates) Comprobando las versiones instaladas actuales y las actualizaciones requeridas...
2024-07-02T13:14:22+0200 <info> installMqttContainer.js:114 (Zigbee2mqttManager.installMqttContainer) Contenedor del broker MQTT iniciado correctamente
2024-07-02T13:14:22+0200 <info> configureContainer.js:23 (Zigbee2mqttManager.configureContainer) El contenedor Z2M está siendo configurado...
2024-07-02T13:14:22+0200 <info> configureContainer.js:36 (Zigbee2mqttManager.configureContainer) El archivo de configuración Z2M ya existe.
2024-07-02T13:14:23+0200 <info> installZ2mContainer.js:90 (Zigbee2mqttManager.installZ2mContainer) Contenedor Zigbee2mqtt iniciado correctamente
2024-07-02T13:14:23+0200 <info> connect.js:25 (Zigbee2mqttManager.connect) Conectando Gladys al broker MQTT mqtt://localhost:1884...
2024-07-02T13:14:23+0200 <error> index.js:20 (process.<anonymous>) uncaughtException catched: uncaughtException
2024-07-02T13:14:23+0200 <error> index.js:21 (process.<anonymous>) Error: El nombre del servicio ya está en uso en la red
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>) Conectado al contenedor MQTT mqtt://localhost:1884
2024-07-02T13:14:23+0200 <info> subscribe.js:12 (Zigbee2mqttManager.subscribe) Suscribiéndose al tema MQTT zigbee2mqtt/#
2024-07-02T13:14:23+0200 <info> index.js:18 (Object.start) Iniciando servicio TP-Link
2024-07-02T13:14:23+0200 <info> index.js:17 (Object.start) Iniciando servicio eWeLink
2024-07-02T13:14:23+0200 <warn> service.start.js:44 (Service.start) No se pudo iniciar el servicio ewelink 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) Iniciando servicio Bluetooth
2024-07-02T13:14:23+0200 <info> index.js:15 (Object.start) Iniciando servicio Tasmota
2024-07-02T13:14:23+0200 <info> index.js:14 (Object.start) Iniciando servicio Xiaomi
2024-07-02T13:14:23+0200 <info> index.js:13 (Object.start) Iniciando servicio usb
2024-07-02T13:14:23+0200 <info> index.js:19 (Object.start) Iniciando servicio Telegram
2024-07-02T13:14:23+0200 <info> index.js:18 (Object.start) Iniciando servicio RTSP
2024-07-02T13:14:23+0200 <info> index.js:18 (Object.start) Iniciando servicio Philips Hue
2024-07-02T13:14:23+0200 <info> index.js:16 (Object.start) Iniciando servicio MQTT
2024-07-02T13:14:23+0200 <info> updateContainer.js:13 (MqttHandler.updateContainer) MQTT: comprobando cambios requeridos...
2024-07-02T13:14:23+0200 <info> updateContainer.js:41 (MqttHandler.updateContainer) MQTT: no se requiere actualización del contenedor
2024-07-02T13:14:23+0200 <info> connect.js:38 (MqttClient.<anonymous>) Conectado al servidor MQTT mqtt://localhost
2024-07-02T13:14:23+0200 <info> subscribe.js:12 (MqttHandler.subscribe) Suscribiéndose al tema MQTT stat/+/+
2024-07-02T13:14:23+0200 <info> subscribe.js:12 (MqttHandler.subscribe) Suscribiéndose al tema MQTT tele/+/+
2024-07-02T13:14:23+0200 <info> subscribe.js:12 (MqttHandler.subscribe) Suscribiéndose al tema MQTT gladys/master/#
2024-07-02T13:14:23+0200 <info> index.js:26 (Object.start) Iniciando servicio EDF Tempo
2024-07-02T13:14:23+0200 <info> index.js:17 (Object.start) Iniciando servicio Ecowatt
2024-07-02T13:14:23+0200 <info> index.js:21 (Object.start) Iniciando servicio de ejemplo
2024-07-02T13:14:23+0200 <info> scene.dailyUpdate.js:58 () Hoy el amanecer es a las 6:18, en tu zona horaria = Europe/Paris
2024-07-02T13:14:23+0200 <info> scene.dailyUpdate.js:59 () Hoy el atardecer es a las 21:42, en tu zona horaria = Europe/Paris
2024-07-02T13:14:23+0200 <info> scene.dailyUpdate.js:70 () El sol salió esta mañana. No programando para hoy.
2024-07-02T13:14:23+0200 <info> scene.dailyUpdate.js:81 () El atardecer está programado, en 8 horas.
2024-07-02T13:14:24+0200 <info> index.js:64 (Server.<anonymous>) Servidor escuchando en el puerto 80
2024-07-02T13:14:24+0200 <info> index.js:884 (Socket.<anonymous>) Gladys Gateway: conectado en websockets
Voy a instalar Netdata, ya lo he utilizado para mi NAS, pero debo admitir que me pierdo entre tanta información (¡sobre todo porque la herramienta es súper potente!).
Tengo un mini PC con un Core i3 y 8 GB de RAM.
Conexión de fibra con Free que parece bastante estable.