[Retorno de experiencia + Propuesta] Vidéovigilancia local universal en Gladys — go2rtc + Frigate (detección persona/perro/caballo... sin cloud)

@mutmut gracias por los registros, son muy claros :backhand_index_pointing_down:

1. La barra de progreso — Efectivamente: de las ~4 minutos, es la descarga de la imagen Frigate la que toma ~3 min por sí sola (el resto es casi instantáneo). Buena noticia: aunque es «una sola etapa», Docker nos devuelve el progreso de la descarga — por lo tanto, vamos a mostrar una barra real «Descargando la imagen Frigate… X %» durante estos 3 minutos, además de las etiquetas de las siguientes etapas (broker MQTT, configuración, inicio). Está en preparación.
Lo reproduje ejecutando la imagen en raspberry-pi, más o menos el mismo tiempo que tú para la instalación.

2 & 3. Los brokers MQTT / el nombre eclipse-mosquitto — estamos de acuerdo. El broker dedicado a Frigate es una elección consciente (aislamiento, identificadores propios), y mosquitto es ultra-ligero (unos pocos Mo), por lo que no hay preocupación de recursos. Para la pregunta «¿y si lo compartimos / mejoramos el nombre?», coincide exactamente con lo que está preparando Pierre-Gilles sobre las integraciones en contenedores externos — el buen lugar para discutirlo es el tema dedicado donde se habla de ello: Intégrations externes dans Gladys Assistant

4. Tu iGPU Intel HD 530 — sí, ya está soportado: la integración detecta automáticamente el GPU Intel y activa la aceleración (decodificación de video + detección OpenVINO). La única condición depende de tu montaje: debes exponer /dev/dri en tu contenedor LXC Proxmox y luego en el contenedor Docker de Gladys. Una vez hecho, dime qué muestra la sección «Aceleración de hardware» de la página de configuración de Frigate — lo validaremos juntos.

5. El reinicio de Frigate — mismo principio que el punto 1: vamos a mostrar «Frigate reiniciando…» luego «Frigate operativo», basándonos en la señal que Frigate nos envía cuando vuelve a estar en línea.

6. Tu Myfox — el mensaje connection refused …:554 significa que la cámara en sí no responde en ese puerto: es en el lado de la cámara donde hay que «reajustar», como lo sentiste. La banda roja «Ningún flujo recibido» está precisamente para eso. También vamos a enriquecer el botón «Proponer esta cámara al catálogo» para que incluya automáticamente los registros útiles (Gladys, MQTT, Frigate, go2rtc) — esto nos permitirá ayudarte mucho más rápido en casos como este, y agregar tu Myfox al catálogo.

Y no olvido de mirar si la eufy Security Solar Wall Light Cam S120 puede ser fácilmente soportada antes de que la compres. Pero sin prueba, no podré confirmar al 100% creo…

Bueno, parece que algo está mal hecho, probablemente por mi parte. De hecho, incluso cuando el contenedor está en funcionamiento, la base de datos no se almacena allí. Y de la misma manera en la otra carpeta de prueba (tuya), solo tengo la carpeta mosquitto.

Por lo tanto, para responder a la pregunta, queda la carpeta mosquitto, pero es lo mismo que había antes…

En cuanto a los permisos, también parece estar bien…

Estamos de acuerdo, el riesgo de que esto ocurra es casi inexistente en producción. ¡Y es un caso que lógicamente no está gestionado porque nunca ha ocurrido!

¡Actualizo y lo pruebo a finales de la tarde!

OMG :heart_eyes: Lo siento, no encuentro otra expresión adecuada para lo que acabo de leer en el conjunto de sus mensajes. En realidad, están todos locos y me parece increíble :star_struck:

No puedo más que adherirme calurosamente a esta propuesta de integración, que también he implementado, pero solo a través de MotioEyes… Por lo tanto, ninguna integración, ni optimización, solo notificaciones cuando se guarda un video después de un movimiento.

Si puedo ayudarles de alguna manera, lo haré con gusto :grin:

Gracias a todos,

Jean

Así que empecé a probar y uso mqtts en lugar de mqtt a través de un mosquitto externo.
Por lo tanto, Gladys no puede conectarse:

gladys  | 2026-07-15T23:38:34+0200 <info> connect.js:27 (FrigateManager.connect) Conectando Gladys al broker MQTT mqtt://mqtt.xxxx.local:8883...
gladys  | 2026-07-15T23:38:34+0200 <warn> connect.js:48 (MqttClient.<anonymous>) Error al conectar al broker MQTT de Frigate - Error: read ECONNRESET

¿Es posible agregar mqtts? :blush:

Gracias

tengo una pregunta tonta: ¿no sería posible usar el mqtt configurado en gladys? (ya hay el nombre de usuario / contraseña, la url y el estado)

Hola @prohand,
Creo que sí, bueno, eso espero ^^ Lo haré lo más rápido posible y te mantendré informado.

Hola @ProtZ,
Es totalmente posible, nosotros (raro este nosotros, pero habrá que acostumbrarse ^^) hemos elegido implementarlo así por el momento para mantener la coherencia con Zigbee2mqtt. Pero creo que al final será la solución adoptada. Bueno, más amplio que eso, deberíamos poder definir cualquier mqtt, o proponer el de Gladys. Por mi parte, mi servidor mqtt está fuera de Gladys. Mi objetivo, como el de @prohand, es pasar a mqtts.

Gracias :slight_smile:

Efectivamente, la elección debería ser usar el mismo que Gladys (ya sea externo o integrado) o bien usar un MQTT externo :slight_smile:

¡Excelente trabajo! ¡Es una función realmente genial!

Hoy al mediodía jugué un poco con esto y la prueba fue exitosa con MQTT externo y Frigate externo concluyente (usé URLs en lugar de IP y solo olvidé que tenía un basic auth en mi Frigate además de la autenticación clásica), mis 6 cámaras son detectadas y los eventos funcionan junto con el retorno de imágenes.
Continuaré con algunas pruebas esta noche. Por el momento solo tengo retroalimentación sobre la pantalla de configuración que podría mejorarse (consultar la configuración MQTT de Gladys).

Finalmente podré hacer lo mismo que los hermanos Poulin con Gladys: https://www.youtube.com/watch?v=Go2ERXdH3gg&list=PLuyMGpc2xoZsA1I3FZja4zWzV-m3GZmfA
Por cierto, tengo las mismas cámaras de mala calidad en stock.

¡Hola!

Acabo de reiniciar una prueba, sin éxito…

Operaciones realizadas: instalación, creación de cuenta, activación de la integración frigate y error: La instalación de Frigate ha fallado.

El registro de Gladys:

2026-07-16T20:42:27+0200 <info> detectHardware.js:78 (FrigateManager.detectHardware) Frigate: no compatible render node found, video decoding on CPU
2026-07-16T20:42:27+0200 <info> allocatePorts.js:33 (FrigateManager.allocatePorts) Frigate: allocated port 1885 for MQTT broker
2026-07-16T20:42:27+0200 <info> allocatePorts.js:33 (FrigateManager.allocatePorts) Frigate: allocated port 8971 for Frigate UI
2026-07-16T20:42:27+0200 <info> allocatePorts.js:33 (FrigateManager.allocatePorts) Frigate: allocated port 5000 for Frigate API
2026-07-16T20:42:27+0200 <info> allocatePorts.js:33 (FrigateManager.allocatePorts) Frigate: allocated port 8554 for Frigate RTSP restream
2026-07-16T20:42:27+0200 <info> allocateContainerNames.js:54 (FrigateManager.allocateContainerNames) Frigate: allocated container name gladys-frigate                                                              -mqtt for the MQTT broker
2026-07-16T20:42:27+0200 <info> allocateContainerNames.js:63 (FrigateManager.allocateContainerNames) Frigate: allocated container name gladys-frigate                                                              -server for Frigate
2026-07-16T20:42:27+0200 <info> checkForContainerUpdates.js:14 (FrigateManager.checkForContainerUpdates) Checking for current installed versions and                                                               required updates...
2026-07-16T20:42:27+0200 <info> checkForContainerUpdates.js:18 (FrigateManager.checkForContainerUpdates) Frigate MQTT container: update #1 of the con                                                              tainer required...
2026-07-16T20:42:27+0200 <info> checkForContainerUpdates.js:32 (FrigateManager.checkForContainerUpdates) Frigate MQTT container: update #1 of the con                                                              tainer done
2026-07-16T20:42:27+0200 <info> checkForContainerUpdates.js:37 (FrigateManager.checkForContainerUpdates) Frigate container: update #1 of the containe                                                              r required...
2026-07-16T20:42:27+0200 <info> checkForContainerUpdates.js:51 (FrigateManager.checkForContainerUpdates) Frigate container: update #1 of the containe                                                              r done
2026-07-16T20:42:27+0200 <info> installMqttContainer.js:26 (FrigateManager.installMqttContainer) Frigate MQTT broker is being installed as Docker con                                                              tainer...
2026-07-16T20:42:27+0200 <info> installMqttContainer.js:27 (FrigateManager.installMqttContainer) Pulling eclipse-mosquitto:2.0.15 image...
2026-07-16T20:42:27+0200 <info> installMqttContainer.js:31 (FrigateManager.installMqttContainer) Preparing Frigate broker environment...
2026-07-16T20:42:27+0200 <info> installMqttContainer.js:40 (FrigateManager.installMqttContainer) Writing Mosquitto config file in /var/lib/gladysassi                                                              stantfrigate/frigate/mqtt/mosquitto.conf
2026-07-16T20:42:28+0200 <info> installMqttContainer.js:57 (FrigateManager.installMqttContainer) Creating container with data in "/var/lib/gladysassi                                                              stant" on host...
2026-07-16T20:42:28+0200 <info> installMqttContainer.js:70 (FrigateManager.installMqttContainer) Frigate MQTT broker is restarting...
2026-07-16T20:42:33+0200 <info> installMqttContainer.js:78 (FrigateManager.installMqttContainer) Creating user/pass...
2026-07-16T20:42:33+0200 <error> installMqttContainer.js:97 (FrigateManager.installMqttContainer) Frigate MQTT broker container failed to start: Erro                                                              r: (HTTP code 409) container stopped/paused - Container 097cd7cedd297728a2687b09135c89e59e7f7938854f7b31914d19e6174eb21b is restarting, wait until th                                                              e container is running
    at /src/server/node_modules/docker-modem/lib/modem.js:336:17
    at getCause (/src/server/node_modules/docker-modem/lib/modem.js:366:7)
    at Modem.buildPayload (/src/server/node_modules/docker-modem/lib/modem.js:335:5)
    at IncomingMessage.<anonymous> (/src/server/node_modules/docker-modem/lib/modem.js:303:16)
    at IncomingMessage.emit (node:events:531:35)
    at endReadableNT (node:internal/streams/readable:1698:12)
    at processTicksAndRejections (node:internal/process/task_queues:89:21) {
  reason: 'container stopped/paused',
  statusCode: 409,
  json: {
    message: 'Container 097cd7cedd297728a2687b09135c89e59e7f7938854f7b31914d19e6174eb21b is restarting, wait until the container is running'
  }
}
2026-07-16T20:42:33+0200 <warn> errorMiddleware.js:68 (errorMiddleware) Error: (HTTP code 409) container stopped/paused - Container 097cd7cedd297728a                                                              2687b09135c89e59e7f7938854f7b31914d19e6174eb21b is restarting, wait until the container is running
    at /src/server/node_modules/docker-modem/lib/modem.js:336:17
    at getCause (/src/server/node_modules/docker-modem/lib/modem.js:366:7)
    at Modem.buildPayload (/src/server/node_modules/docker-modem/lib/modem.js:335:5)
    at IncomingMessage.<anonymous> (/src/server/node_modules/docker-modem/lib/modem.js:303:16)
    at IncomingMessage.emit (node:events:531:35)
    at endReadableNT (node:internal/streams/readable:1698:12)
    at processTicksAndRejections (node:internal/process/task_queues:89:21) {
  reason: 'container stopped/paused',
  statusCode: 409,
  json: {
    message: 'Container 097cd7cedd297728a2687b09135c89e59e7f7938854f7b31914d19e6174eb21b is restarting, wait until the container is running'
  }
}

Y lo que sospecho que es la razón, el registro del servicio mqtt:

1784227505: Error: Unable to open config file /mosquitto/config/mosquitto.conf.

Porque el archivo .conf está en /mosquitto/mosquitto.conf… Aquí está su contenido:

sudo nano /var/lib/gladysassistantfrigate/mosquitto/mosquitto.conf

allow_anonymous false
connection_messages false
password_file /mosquitto/config/mosquitto.passwd
listener 1883

y también, el mosquitto.passwd no está en una carpeta config…

Y el misterio sigue siendo el mismo, no hay archivo de DB :distorted_face:

Hola @GBoulvin,

¿No te habrías equivocado aquí:


En amarillo, es la ruta en el contenedor que se debe usar… por lo tanto, normalmente /var/lib/gladysassistant/gladys-production.db

En mi caso:

docker run -d \
  --log-opt max-size=10m \
  --restart=no \
  --privileged \
  --network=host \
  --name frigate-test-externe \
  -e NODE_ENV=production \
  -e SERVER_PORT=81 \
  -e TZ=Europe/Paris \
  -e SQLITE_FILE_PATH=/var/lib/gladysassistant/gladys-production-test.db \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v /home/pi/Gladys-test:/var/lib/gladysassistant \
  -v /dev:/dev \
  terdious/gladys:Frigate-test-externe

¡Ahhhhh, si es la ruta en el contenedor, entonces, en efecto, ¡no es justo!

¡De inmediato, todo va mejor! :rofl:

Bueno, bueno, logré pasar la myfox a trendnet (pero no al 100% porque queda un pedazo de myfox) y puedo tener análisis con frigate.
Sin embargo, no tengo un flujo 100% operativo, pero funciona en la detección.

Sin embargo, tengo una pregunta sobre la información del panel de control: ¿qué debería haber en image :


Por otro lado, me detectó un gato y un coche en la casa cuando no tengo ni uno ni otro.

:grimacing:

@Terdious, estoy preparando una integración externa TAPO para las cámaras y Claude ha descubierto cómo descifrar el flujo propietario para ver el video en mi cámara de batería. A continuación, su explicación:

El protocolo de video de la C610

El punto de partida

Esta cámara no expone ni RTSP (554) ni ONVIF (2020) — ambos puertos están cerrados. Esto llevó a la conclusión errónea de que bloqueaba todo acceso local. En realidad, solo un puerto está abierto: el 8800, que utiliza un protocolo propietario de TP-Link, el mismo que usa la aplicación móvil.

¿Cómo funciona?

El protocolo se parece a HTTP, pero no lo es. Se abre una conexión TCP y luego:

  1. Desafío de autenticación. Una primera solicitud POST /stream sin credenciales provoca un 401 — que no es un rechazo, sino el desafío en sí:

WWW-Authenticate: Digest realm=« TP-Link IP-Camera »,
algorithm=« MD5 », encrypt_type=« 3 », nonce=« … »

El encrypt_type=« 3 » es determinante: significa que la contraseña debe ser hasheada en SHA256 antes del digest (que, por su parte, sigue siendo MD5). Es la contraseña de la cuenta en la nube de TP-Link la que se usa aquí, no una cuenta de cámara.

  1. Intercambio de claves. Una vez autenticado, la cámara devuelve un encabezado Key-Exchange que contiene un nonce. De él se deriva una clave y un IV AES-128-CBC mediante una receta impuesta por el firmware:

clave = MD5(nonce + « : » + SHA256(contraseña))
IV = MD5(username + « : » + nonce)

  1. El flujo. Se solicita el flujo, y la cámara envía un cuerpo multipart sin fin, dividido por un límite. Cada parte contiene MPEG-TS cifrado en AES. Hay que descifrarlo y luego realinear los paquetes de 188 bytes — un límite puede caer en medio de un paquete.

Un detalle vital: la cámara deja de emitir si el cliente no acusa regularmente la recepción de los paquetes.

¡Genial! ¡Voy a mirar para retomar eso para frigate de todos modos!

¡Gracias @Will_71!

Para no degradar demasiado el estado de la batería, no hay que leer el flujo de vídeo permanentemente, ya que la autonomía se agota rápidamente. Por ahora, para la integración, solo hago instantáneas para tener una imagen cada minuto. En una mañana, solo he perdido un 7% con un cielo cubierto. Habrá que ver a largo plazo si no debo aumentar el intervalo entre cada imagen.

¡Ah, sí, sí, es lo que decía antes! En 5 horas, la batería se agotó en mi casa. Para usar el flujo así, ¡es absolutamente necesario advertir que la cámara debe estar conectada a la corriente como hice yo! (¡o una condición de un % de batería superior al 50%!)

Así que incluso puedo recuperar el % de batería y la información de detección de movimiento

También me ha sacado un botón, pero no sé qué es

@Terdious ¿Quería saber en qué punto estás con esta integración? :slight_smile:

Gracias :wink:

¡Gracias por volver a sacar este «viejo» tema, es exactamente lo que me gustaría hacer con mis cámaras Aqara G100!