Hola a todos,
Quiero presentarles aquí mi solución, de cómo he integrado de forma automatizada una cámara para fauna salvaje alimentada por batería en Gladys, usando solo « medios a bordo ».
Requisitos previos:
La cámara debe entregar sus imágenes y videos a su red doméstica. Por ejemplo, a través de WiFi en el jardín o GSM desde el bosque. De cualquier manera, la cámara debe enviar las imágenes/videos a ustedes y de forma automática.
Un modelo así es la Reolink Argus Solar. Tiene WiFi y FTP. Ideal para el jardín doméstico.
Aquí está el procedimiento básico:
El primer paso se realiza a través de la aplicación del fabricante. Allí configuran FTP y especifican su NAS como destino.
En el NAS, FTP debe estar activado previamente, y si es necesario, configurar un compartir con un usuario FTP y una contraseña FTP.
Como resultado, la Reolink Argus Solar (solo como ejemplo, sin publicidad ni nada) transfiere automáticamente las grabaciones a su NAS.
Ahora necesitan un servidor Immich en el NAS. Pueden instalarlo con el siguiente YAML como Docker.
Antes de eso: A través del YAML, vinculan el directorio FTP / directorio compartido y, lo más importante: Para que todo funcione, es un requisito indispensable en QNAP que el servidor Immich esté en el mismo switch virtual que Gladys. De lo contrario, la siguiente presentación de diapositivas de Immich nunca funcionará.
El YAML para el Docker del servidor Immich:
********************************************************************************************
services:
redis:
container_name: immich_redis
image: redis:7-alpine
restart: unless-stopped
networks:
- internal
db:
container_name: immich_db
image: Package postgres · GitHub
restart: unless-stopped
networks:
- internal
volumes: - /share/Container/immich/pgdata:/var/lib/postgresql/data
environment:
POSTGRES_DB: immich
POSTGRES_USER: immich
POSTGRES_PASSWORD: Passwort
POSTGRES_INITDB_ARGS: ‹ –data-checksums ›
DB_STORAGE_TYPE: ‹ SSD ›
command: [« postgres », « -c », « shared_preload_libraries=vectors.so,vchord.so »]
db_backup:
container_name: immich_db_backup
image: prodrigestivill/postgres-backup-local:16
restart: unless-stopped
depends_on:
- db
networks: - internal
environment:
POSTGRES_HOST: db
POSTGRES_CLUSTER: ‹ TRUE ›
POSTGRES_USER: immich
POSTGRES_PASSWORD: Passwort
POSTGRES_DB: immich
SCHEDULE: « @daily »
POSTGRES_EXTRA_OPTS: ‹ –clean --if-exists ›
TZ: Europe/Berlin
volumes: - /share/Container/immich/pgdata-backup:/backups
immich:
container_name: immich
image: ghcr.io/immich-app/immich-server:release
restart: unless-stopped
depends_on:
- db
- redis
networks: - internal
- immichframe-private-net
ports: - 2283:2283
volumes: - /etc/localtime:/etc/localtime:ro
- /share/dockerdaten/immich/library:/usr/src/app/upload
- /share/my_bilder/reolink:/mnt/medien/reolink:rw
- /share/dockerdaten/immich/cache:/tmp # Protege contra el error « No Space Left »
environment:
DB_HOSTNAME: db
DB_USERNAME: immich
DB_DATABASE_NAME: immich
DB_PASSWORD: Passwort
IMMICH_MACHINE_LEARNING_URL: http://immich-machine-learning:3003
TZ: Europe/Berlin
immich-machine-learning:
container_name: immich_machine_learning
image: ghcr.io/immich-app/immich-machine-learning:release
restart: unless-stopped
networks:
- internal
volumes: - model-cache:/cache
environment:
TZ: Europe/Berlin
networks:
immichframe-private-net:
name: my_immich_frame_immichframe-private-net
external: true
internal:
volumes:
model-cache:
************************************************************************************************
Aquí están nuevamente las líneas decisivas del YAML:
volumes:
- /etc/localtime:/etc/localtime:ro
- /share/dockerdaten/immich/library:/usr/src/app/upload
- /share/my_bilder/reolink:/mnt/medien/reolink:rw
- /share/dockerdaten/immich/cache:/tmp # Protege contra el error « No Space Left »
environment:
La integración del directorio my_bilder/reolink en el servidor Immich como medien/reolink.
Nota: Para el flujo de trabajo en el servidor Immich, asegúrense de que la ruta no vaya directamente al directorio directo de los videos, es decir, no: my_bilder/reolink/data/2016/10… sino que termine una carpeta antes. Necesitamos una ruta verificable de manera única, es decir, my_bilder/reolink.
Paso 2:
En el servidor Immich, primero configuramos un álbum. Este álbum se conecta a una biblioteca externa y, finalmente, esta biblioteca externa se monitorea y un flujo de trabajo interno actualiza automáticamente el álbum:
Llamamos a este álbum « reolink » en nuestro ejemplo.
Luego, cambiamos a la administración del servidor Immich en la esquina superior derecha:
Dentro de la administración, primero creamos una biblioteca externa. En esta biblioteca externa, vinculamos el directorio « /mnt/medien/reolink » listado en el YAML bajo « Carpeta »:
Estado intermedio: Todas las imágenes/videos del directorio FTP están ahora disponibles en el servidor Immich. Ahora automatizamos los cambios en el directorio y transferimos los cambios automáticamente al álbum:
Bajo Configuración - Biblioteca Externa, activamos el monitoreo y el escaneo del directorio a las 09:00:
Este monitoreo procesa automáticamente nuevas imágenes/videos. Crea vistas en miniatura, lee los datos EXIF, inicia el aprendizaje automático. Este es el momento para nuestro flujo de trabajo.
El servidor Immich no ofrece muchos desencadenantes para un flujo de trabajo. Uno de ellos es la lectura de los datos. A esto respondemos. Tan pronto como se lee una imagen/video, la empujamos al álbum « reolink » creado anteriormente… y para que no aparezcan todas las nuevas imágenes allí, nos limitamos aún más mediante una prueba del directorio y respondemos solo a cambios en una ruta que contenga el término « reolink » (… por eso las notas anteriores sobre la ruta…):
Luego, creamos un nuevo flujo de trabajo y hay la posibilidad de configurarlo « visualmente » o mediante « JSON ».
Aquí está mi JSON para eso:
************************************************************************************************
{
« name »: « Ordenar imágenes de la cámara Reolink en el álbum »,
« description »: « Añade automáticamente imágenes recién reconocidas de la biblioteca externa Reolink al álbum por ID »,
« enabled »: true,
« trigger »: « AssetMetadataExtraction »,
« steps »: [
{
"method": "immich-plugin-core#assetFileFilter",
"config": {
"pattern": "reolink",
"usePath": true,
"matchType": "contains",
"caseSensitive": false
},
"enabled": true
},
{
"method": "immich-plugin-core#assetAddToAlbums",
"config": {
"albumIds": \[
"b421a01b-0b71-4b6b-8ad3-83cf79ea06f7"
\],
"albumName": "reolink"
},
"enabled": true
}
]
}
***********************************************************************************
Visualmente, el resultado se ve así:
o:
Estado intermedio:
El servidor Immich procesa constantemente, a más tardar a las 09:00, la biblioteca externa y el flujo de trabajo actualiza el álbum. En el servidor Immich, el resultado se ve así:
Ahora hemos creado todas las condiciones previas y nos dirigimos a Gladys.
Vamos a las integraciones e instalamos el Immich Slideshow:
Dentro del menú de configuración, luego accedemos a través de la integración al servidor Immich y vinculamos el álbum « reolink » que se encuentra allí.
La URL del servidor Immich mostrada anteriormente: http://imich:2283 solo funciona en QNAP si Gladys y el servidor Immich están en el mismo switch virtual!!! Intentos mediante 127.0.0.1 o para http://192.168.0.240 (IP local del NAS con los contenedores de Gladys y el servidor Immich) definitivamente no funcionarán. Por lo tanto, observa y ajusta con precisión la YAML del servidor Immich anterior con sus configuraciones de red si es necesario.
Obtendrás la clave API de Immich necesaria en el servidor Immich bajo la configuración de la cuenta del usuario.
Si desplazas hacia abajo en la integración de Immich Slideshow, se te ofrecerán botones de prueba. ¡Úsalos y transfiere las salidas allí a la sección de configuración superior si es necesario:
Si obtienes tres veces verde… ¡genial, listo, hemos terminado, porque el Immich Slideshow te ofrece un dispositivo adecuado como resultado:
Ahora solo queda mostrar este dispositivo como de costumbre en algún lugar de Gladys:
En mi ejemplo, he configurado el dispositivo para que no se ordene (por lo que la última fecha, es decir, la última captura, queda en primer lugar), además, por razones de carga de red, solo muestro las últimas 5 imágenes durante un minuto cada una.
Muchas gracias a todos los lectores por haber llegado hasta aquí.
Saludos cordiales
Tom













