Hallo Miteinander,
ich möchte euch hier meine Lösung vorstellen, wie ich mit « Bordmitteln » eine batteriebetriebene Wildtierkamera automatisiert in Gladys eingebunden habe.
Voraussetzung:
Die Kamera liefert ihre Bilder und Videos irgendwie in euer Hausnetz. Zum Beispiel per WiFi im Garten oder GSM aus dem Wald. Wie auch immer, die Kamera muss die Bilder/Videos zu euch bringen und zwar automatisch.
Ein derartiges Modell ist die Reolink Argus Solar. Sie hat WiFi und FTP. Ideal geeignet für den heimischen Garten.
Hier der grundsätzliche Weg:
Der erste Schritt wird über die Hersteller App erledigt. Ihr richtet dort FTP ein und gebt als Ziel euer NAS an.
Auf dem NAS muss vorher FTP aktiviert sein, ggf. eine Freigabe mit einem FTP-User und FTP-Passwort dazu einrichten.
Als Ergebnis überträgt dann die Reolink Argus Solar ( hier nur als Beispiel, keine Werbung o.ä.) sofort die Aufnahmen auf euer NAS.
Nun benötigt ihr auf dem NAS einen Immich Server. Diesen könnt ihr mit nachfolgender YAML als Docker installieren.
Vorab: Ihr bindet über die YAML das FTP Verzeichnis / Freigabeverzeichnis ein und ganz wichtig: Damit alles funktioniert ist es unter QNAP zwingende Voraussetzung, dass der Immich Server sich im gleichen virtuellen Switch befindet wie Gladys. Ansonsten funktioniert die nachfolgende Immich Slideshow nie und nimmer.
Die YAML für den Docker des Immich Servers:
********************************************************************************************
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 # Schützt vor dem « No Space Left »-Fehler
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:
************************************************************************************************
Hier nochmals die entscheidenden Zeilen der 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 # Schützt vor dem « No Space Left »-Fehler
environment:
Die Einbindung des Verzeichnisses my_bilder/reolink im Immich Server als medien/reolink.
Hinweis: Für den Workflow im Immich Server bitte darauf achten, dass der Pfad nicht direkt bis zum direkten Verzeichnis der Videos geht, also nicht: my_bilder/reolink/data/2016/10… sondern schon eine Ebene vorher enden. Wir benötigen einen eindeutig verifizierbaren Pfad, also my_bilder/reolink.
Schritt 2:
Im ImmichServer richten wir zunächst ein Album ein. Dieses Album wird mit einer externen Bibliothek verbunden und abschließend wird diese externe Bibliothek überwacht und ein interner Workflow aktualisiert automatisiert das Album:
Das Album nennen wir in unserem Beispiel « reolink ».
Dann wechseln wir rechts oben in die Verwaltung des Immich Servers:
Innerhalb der Verwaltung erstellen wir zunächst eine externe Bibliothek. In diese externe Bibliothek binden wir dann das in der Yaml aufgeführte Verzeichnis « /mnt/medien/reolink » unter « Ordner » ein:
Zwischenstand: Alle Bilder/Videos des FTP Verzeichnisses sind somit im Immich Server verfügbar. Jetzt automatisieren wir die Änderungen im Verzeichnis und übertragen die Änderungen automatisiert in das Album:
Unter Einstellungen - Externe Bibliothek aktivieren wir die Überwachung und Scannen jeweils um 09.00 das Verzeichnis:
Durch diese Überwachung verarbeitet der Immich Server neue Bilder/Videos automatisch. Er erstellt Miniaturansichten, liest die Exif Daten aus, startet das maschinelle Lernen. Genau dies ist der Moment für unseren Workflow.
Der Immich Server bietet nicht viele Auslöser für einen Workflow. Einer ist das Auslesen der Daten. Hierauf reagieren wir. Sobald ein Bild/Video ausgelesen wird, schieben wir es in das oben angelegte Album « reolink »… und damit nicht alle neuen Bilder dort erscheinen beschränken wir uns noch über einen Test des Verzeichnisses und reagieren nur auf Änderungen in einem Pfad, der den Begriff « reolink » erhält ( … deshalb die oben genannte Hinweise auf den Pfad… ):
Dann neuen Workflow erstellen und es besteht die Möglichkeit dies « visuell » oder per « JSON » einzustellen.
Hier mein JSON dazu:
************************************************************************************************
{
« name »: « Reolink Kamera-Bilder in Album sortieren »,
« description »: « Fügt neu erkannte Bilder aus der externen Reolink-Bibliothek automatisch per ID dem Album hinzu »,
« 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
}
]
}
***********************************************************************************
Visuell sieht das Ergebnis so aus:
bzw:
Zwischenstand:
Der Immich Server verarbeitet also ständig, spätestens um 09.00 Uhr die externe Bibliothek und der Workflow aktualisiert das Album. Im Immich Server sieht das Ergebnis so aus:
Jetzt haben wir also alle Voraussetzungen geschaffen und wenden uns Gladys zu.
Wir gehen zu den Integrationen und installieren die Immich Slideshow:
Innerhalb des Konfigurationsmenüs greifen wir dann über die Integration auf den Immich Server zu und binden das dortige Album « reolink » ein.
Die oben gezeigte Immich Server URL: http://imich:2283 funktioniert unter QNAP nur dann, wenn Gladys und Immich Server sich im gleichen virtuellen Switch befinden!!! Versuche mittels 127.0.0.1 oder für http://192.168.0.240 ( Lokale IP des NAS mit den Dockern von Gladys und Immich Server) werden definitiv nicht funktionieren. Also die YAML des obigen Immich Server mit seinen Netzwerkeinstellungen genau beobachten und ggf. anpassen.
Den erforderlichen Immich API key erhaltet ihr im Immich Server unter den Kontoeinstellungen des Nutzers.
Wenn ihr in der Integration der Immich Slideshow nach unten scrollt werden euch Testbuttons angeboten. Unbedingt nutzen und die dortigen Ausgaben ggf. in den oberen Konfigurationsbereich übertragen:
Wenn ihr also 3x grün erhaltet … super, erledigt, wir sind durch, denn die Immich Slideshow bietet euch als Ergebnis ein passendes Gerät an:
Jetzt gilt es nur noch dieses Gerät wie gewohnt irgendwo in Gladys anzuzeigen:
In meinem Beispiel habe ich das Gerät so konfiguriert, dass nicht sortiert wird ( damit steht das letzte Datum, sprich die letzte Aufnahme, an erster Stelle), weiterhin lasse ich aus Netzbelastungsgründen nur die letzten 5 Bilder für jeweils eine Minute anzeigen.
Vielen Dank an alle Leser, dass ihr es bis hierher durchgehalten habt.
Viele Grüße
Tom













