[Erfahrungsbericht + Vorschlag] Universelle lokale Videoüberwachung in Gladys — go2rtc + Frigate (Person/Hund/Pferd-Erkennung... ohne Cloud)

@mutmut danke für die Logs, sie sind aussagekräftig :backhand_index_pointing_down:

1. Der Fortschrittsbalken — In der Tat: Von den ~4 Minuten dauert das Herunterladen des Frigate-Images allein ~3 Minuten (der Rest ist quasi sofort erledigt). Gute Nachricht: Auch wenn es „ein einziger Schritt“ ist, gibt uns Docker den Fortschritt des Downloads zurück — wir werden also einen echten Balken „Frigate-Image wird heruntergeladen… X %“ während dieser 3 Minuten anzeigen, sowie die Beschriftungen der folgenden Schritte (MQTT-Broker, Konfiguration, Start). Das ist in Vorbereitung.
Ich habe es reproduziert, indem ich das Image auf einem Raspberry-Pi gestartet habe, etwa die gleiche Zeit wie du für die Installation.

2 & 3. Die MQTT-Broker / der Name eclipse-mosquitto — wir sind uns einig. Der für Frigate dedizierte Broker ist eine bewusste Wahl (Isolation, eigene Anmeldedaten), und mosquitto ist extrem leicht (einige MB), also keine Bedenken hinsichtlich der Ressourcen. Zur Frage „Was, wenn wir gemeinsam nutzen / besser benennen?“ — das trifft genau, was Pierre-Gilles zu den Integrationen externer Container vorbereitet — der richtige Ort, um darüber zu diskutieren, ist das dedizierte Thema, wo darüber gesprochen wird: Intégrations externes dans Gladys Assistant

4. Dein Intel HD 530 iGPU — ja, das wird bereits unterstützt: Die Integration erkennt automatisch die Intel-GPU und aktiviert die Beschleunigung (Videodecodierung + OpenVINO-Erkennung). Die einzige Bedingung hängt von deiner Konfiguration ab: Du musst /dev/dri in deinem Proxmox LXC-Container und dann im Gladys Docker-Container freigeben. Sobald das erledigt ist, sag mir, was die Sektion „Hardwarebeschleunigung“ auf der Frigate-Konfigurationsseite anzeigt — wir werden es gemeinsam überprüfen.

5. Das Neustarten von Frigate — derselbe Prinzip wie Punkt 1: Wir werden „Frigate wird neu gestartet…“ und dann „Frigate betriebsbereit“ anzeigen, basierend auf dem Signal, das Frigate uns sendet, wenn es wieder online ist.

6. Deine Myfox — Die Meldung connection refused …:554 bedeutet, dass die Kamera selbst auf diesem Port nicht antwortet: Es muss also auf der Kameraseite „herumgebastelt“ werden, wie du es gespürt hast. Der rote Banner „Kein Stream empfangen“ ist genau dafür da. Wir werden auch den Button „Diese Kamera dem Katalog vorschlagen“ erweitern, damit er automatisch die nützlichen Logs mitnimmt (Gladys, MQTT, Frigate, go2rtc) — das wird uns ermöglichen, dir bei solchen Fällen viel schneller zu helfen und deine Myfox dem Katalog hinzuzufügen.

Und ich vergesse nicht, zu schauen, ob die eufy Security Solar Wall Light Cam S120 einfach unterstützt werden kann, bevor du sie kaufst. Aber ohne Test kann ich das nicht zu 100% bestätigen, denke ich…

Nun, es scheint, dass etwas schiefgelaufen ist, wahrscheinlich von meiner Seite. Denn selbst wenn der Container läuft, wird die Datenbank nicht dort gespeichert. Und ebenso im anderen Testordner (tuya) habe ich nur den Ordner mosquitto.

Also, um die Frage zu beantworten, es bleibt der Ordner mosquitto, aber das war schon vorher so…

Was die Berechtigungen angeht, die scheinen auch in Ordnung zu sein…

Da sind wir uns einig, das Risiko, dass das in der Produktion passiert, ist fast nicht existent! Und es ist ein Fall, der logischerweise nicht behandelt wird, weil er nie aufgetreten ist!

Ich aktualisiere und teste am späten Nachmittag!

OMG :heart_eyes: Entschuldigung, mir fällt keine andere passende Ausdrucksweise ein, um das, was ich gerade in euren Nachrichten gelesen habe, auszudrücken. Ihr seid einfach unglaublich und ich finde das einfach nur großartig :star_struck:

Ich kann dieser Vorschlag zur Integration nur voll und ganz zustimmen, den ich ebenfalls umgesetzt habe, aber nur über MotioEyes … Also keine Integration, keine Optimierung, nur Benachrichtigungen, wenn ein Video nach einer Bewegung gespeichert wird.

Wenn ich euch auf irgendeine Weise helfen kann, tue ich das gerne :grin:

Vielen Dank euch allen,

Jean

Ich habe angefangen zu testen und verwende auf meiner Seite mqtts statt mqtt über einen externen Mosquitto.
Daher kann sich Gladys nicht verbinden:

gladys  | 2026-07-15T23:38:34+0200 <info> connect.js:27 (FrigateManager.connect) Verbindung von Gladys zu mqtt://mqtt.xxxx.local:8883 MQTT-Broker herstellen...
gladys  | 2026-07-15T23:38:34+0200 <warn> connect.js:48 (MqttClient.<anonymous>) Fehler beim Verbinden mit dem Frigate MQTT-Broker - Fehler: read ECONNRESET

Könnte man mqtts hinzufügen? :blush:

Danke

ich habe eine dumme Frage: wäre es nicht möglich, den in Gladys konfigurierten MQTT zu verwenden? (Es gibt bereits den Benutzernamen / das Passwort, die URL und den Status)

Hallo @prohand,
Ich denke schon, hoffentlich ^^ Ich mache das so schnell wie möglich und halte dich auf dem Laufenden!

Hallo @ProtZ,
Das ist durchaus möglich, wir (komisch dieses „wir“, aber daran müssen wir uns wohl gewöhnen ^^) haben uns entschieden, es vorerst so zu implementieren, um mit Zigbee2mqtt konsistent zu sein. Aber ich denke, am Ende wird das die gewählte Lösung sein. Oder noch weiter gefasst, man sollte jeden beliebigen MQTT definieren können oder den von Gladys vorschlagen. Mein MQTT-Server ist übrigens extern zu Gladys. Unser Ziel, wie das von @prohand, ist es, auf MQTTs umzustellen.

Danke :slight_smile:

Tatsächlich sollte die Wahl sein, dasselbe wie Gladys zu verwenden (ob extern oder integriert) oder einen externen MQTT zu verwenden :slight_smile:

Gute Arbeit! Das ist wirklich ein nettes Feature!

Ich habe heute Mittag ein bisschen damit herumgespielt und der Test mit externem MQTT und externem Frigate war erfolgreich (ich habe URLs statt IPs verwendet und hatte nur vergessen, dass ich zusätzlich zur normalen Authentifizierung noch eine Basic-Auth auf meinem Frigate habe). Meine 6 Kameras werden erkannt und die Events funktionieren, inklusive Bildrückmeldungen.
Ich werde heute Abend noch ein paar weitere Tests durchführen. Bisher habe ich nur Rückmeldungen zum Konfigurationsbildschirm, der vielleicht verbessert werden könnte (siehe MQTT-Konfiguration von Gladys).

Ich könnte endlich wie die Brüder Poulin mit Gladys machen: https://www.youtube.com/watch?v=Go2ERXdH3gg&list=PLuyMGpc2xoZsA1I3FZja4zWzV-m3GZmfA
Übrigens habe ich die gleichen miesen Kameras auf Lager.

Hallo!

Ich habe gerade einen Test neu gestartet, ohne Erfolg…

Durchgeführte Operationen: Installation, Kontoerstellung, Aktivierung der Frigate-Integration und Fehler: Die Installation von Frigate ist fehlgeschlagen.

Der Log von Gladys:

2026-07-16T20:42:27+0200 <info> detectHardware.js:78 (FrigateManager.detectHardware) Frigate: keine kompatible Render-Knoten gefunden, Videodecodierung auf CPU
2026-07-16T20:42:27+0200 <info> allocatePorts.js:33 (FrigateManager.allocatePorts) Frigate: Port 1885 für MQTT-Broker zugewiesen
2026-07-16T20:42:27+0200 <info> allocatePorts.js:33 (FrigateManager.allocatePorts) Frigate: Port 8971 für Frigate UI zugewiesen
2026-07-16T20:42:27+0200 <info> allocatePorts.js:33 (FrigateManager.allocatePorts) Frigate: Port 5000 für Frigate API zugewiesen
2026-07-16T20:42:27+0200 <info> allocatePorts.js:33 (FrigateManager.allocatePorts) Frigate: Port 8554 für Frigate RTSP-Restream zugewiesen
2026-07-16T20:42:27+0200 <info> allocateContainerNames.js:54 (FrigateManager.allocateContainerNames) Frigate: Container-Name gladys-frigate                                                              -mqtt für den MQTT-Broker zugewiesen
2026-07-16T20:42:27+0200 <info> allocateContainerNames.js:63 (FrigateManager.allocateContainerNames) Frigate: Container-Name gladys-frigate                                                              -server für Frigate zugewiesen
2026-07-16T20:42:27+0200 <info> checkForContainerUpdates.js:14 (FrigateManager.checkForContainerUpdates) Überprüfung der aktuell installierten Versionen und                                                               erforderlichen Updates...
2026-07-16T20:42:27+0200 <info> checkForContainerUpdates.js:18 (FrigateManager.checkForContainerUpdates) Frigate MQTT-Container: Update #1 des Con                                                              tainers erforderlich...
2026-07-16T20:42:27+0200 <info> checkForContainerUpdates.js:32 (FrigateManager.checkForContainerUpdates) Frigate MQTT-Container: Update #1 des Con                                                              tainers abgeschlossen
2026-07-16T20:42:27+0200 <info> checkForContainerUpdates.js:37 (FrigateManager.checkForContainerUpdates) Frigate-Container: Update #1 des Contai                                                              ners erforderlich...
2026-07-16T20:42:27+0200 <info> checkForContainerUpdates.js:51 (FrigateManager.checkForContainerUpdates) Frigate-Container: Update #1 des Contai                                                              ners abgeschlossen
2026-07-16T20:42:27+0200 <info> installMqttContainer.js:26 (FrigateManager.installMqttContainer) Frigate MQTT-Broker wird als Docker-Con                                                              tainer installiert...
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) Vorbereitung der Frigate-Broker-Umgebung...
2026-07-16T20:42:27+0200 <info> installMqttContainer.js:40 (FrigateManager.installMqttContainer) Schreiben der Mosquitto-Konfigurationsdatei in /var/lib/gladysassi                                                              tantfrigate/frigate/mqtt/mosquitto.conf
2026-07-16T20:42:28+0200 <info> installMqttContainer.js:57 (FrigateManager.installMqttContainer) Erstellen des Containers mit Daten in "/var/lib/gladysassi                                                              tant" auf dem Host...
2026-07-16T20:42:28+0200 <info> installMqttContainer.js:70 (FrigateManager.installMqttContainer) Frigate MQTT-Broker wird neu gestartet...
2026-07-16T20:42:33+0200 <info> installMqttContainer.js:78 (FrigateManager.installMqttContainer) Erstellen von Benutzer/Kennwort...
2026-07-16T20:42:33+0200 <error> installMqttContainer.js:97 (FrigateManager.installMqttContainer) Frigate MQTT-Broker-Container konnte nicht gestartet werden: Erro                                                              n: (HTTP-Code 409) Container gestoppt/gepauset - Container 097cd7cedd297728a2687b09135c89e59e7f7938854f7b31914d19e6174eb21b wird neu gestartet, warten bis der Con                                                              tainer läuft
    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 gestoppt/gepauset - Container 097cd7cedd297728a                                                              2687b09135c89e59e7f7938854f7b31914d19e6174eb21b wird neu gestartet, warten bis der Container läuft
    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'
  }
}

Und das, was ich für die Ursache halte, der Log des MQTT-Dienstes:

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

Denn die .conf-Datei befindet sich in /mosquitto/mosquitto.conf… Hier ist der Inhalt:

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

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

Und genauso ist die mosquitto.passwd nicht in einem config-Ordner…

Und das Rätsel bleibt bestehen, keine Datenbankdatei :distorted_face:

Hallo @GBoulvin,

Hättest du dich hier nicht vertan:


Gelb ist der Pfad im Container, der benötigt wird … also normalerweise /var/lib/gladysassistant/gladys-production.db

Bei mir:

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, wenn das der Pfad im Container ist, dann ist das natürlich nicht fair!

Jetzt geht’s mir gleich viel besser! :rofl:

Da habe ich es geschafft, die Myfox in Trendnet umzustellen (aber nicht zu 100%, da noch ein Stück Myfox übrig ist) und ich kann Analysen mit Frigate durchführen.
Allerdings habe ich keinen 100% funktionsfähigen Stream, aber es funktioniert bei der Erkennung.

Ich habe dennoch eine Frage zu den Dashboard-Informationen: Was sollte in image stehen:


Allerdings hat er mir eine Katze und ein Auto im Haus erkannt, obwohl ich weder das eine noch das andere habe.

:grimacing:

@Terdious, ich bereite gerade eine externe Integration für TAPO-Kameras vor, und Claude hat herausgefunden, wie man den proprietären Stream decodiert, um das Video auf meiner Batteriekamera zu lesen. Hier ist seine Erklärung:

Das Video-Protokoll der C610

Der Ausgangspunkt

Diese Kamera bietet weder RTSP (554) noch ONVIF (2020) — beide Ports sind geschlossen. Das hat fälschlicherweise zu dem Schluss geführt, dass sie jeden lokalen Zugriff blockiert. Tatsächlich ist nur ein Port geöffnet: der 8800, der ein proprietäres TP-Link-Protokoll spricht, dasselbe, das die Mobile App verwendet.

Wie es funktioniert

Das Protokoll ähnelt HTTP, ist aber nicht dasselbe. Eine TCP-Verbindung wird geöffnet, dann:

  1. Authentifizierungsherausforderung. Eine erste POST-Anfrage /stream ohne Anmeldedaten löst einen 401 aus — der kein Ablehnung, sondern die Herausforderung selbst ist:

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

Der encrypt_type=« 3 » ist entscheidend: er bedeutet, dass das Passwort vor dem Digest in SHA256 gehasht werden muss (das Digest selbst bleibt in MD5). Hier wird das Passwort des TP-Link Cloud-Kontos verwendet, nicht ein Kamerakonto.

  1. Schlüsselaustausch. Nach der Authentifizierung sendet die Kamera einen Key-Exchange-Header mit einem Nonce. Daraus leitet man einen Schlüssel und einen IV für AES-128-CBC nach einem vom Firmware vorgegebenen Rezept ab:

key = MD5(nonce + « : » + SHA256(passwort))
IV = MD5(username + « : » + nonce)

  1. Der Stream. Man fordert den Stream an, und die Kamera sendet einen endlosen multipart-Körper, der durch eine Grenze unterteilt ist. Jeder Teil enthält verschlüsseltes AES-MPEG-TS. Man muss entschlüsseln, dann die 188-Byte-Pakete neu ausrichten — eine Grenze kann mitten in einem Paket liegen.

Ein entscheidender Punkt: Die Kamera hört auf zu senden, wenn der Client die empfangenen Pakete nicht regelmäßig bestätigt.

Super!! Ich werde mich darum kümmern, das für Frigate wieder aufzunehmen!!

Danke @Will_71!!

Um den Zustand der Batterie nicht zu sehr zu verschlechtern, sollte man den Videostream nicht ständig lesen, sonst geht die Akkulaufzeit schnell zur Neige.
Bisher mache ich für die Integration nur Screenshots, um alle Minuten ein Bild zu haben. An einem Morgen habe ich nur 7% verloren, bei bewölktem Wetter. Mal sehen, ob ich auf lange Sicht den Abstand zwischen den Bildern nicht erhöhen muss.

Ah ja ja, genau das habe ich vorher gesagt!! Nach 5 Stunden war meine Batterie leer. Um den Stream so zu nutzen, muss man unbedingt darauf hinweisen, dass die Kamera an die Stromversorgung angeschlossen sein muss, wie ich es gemacht habe!! (oder eine Bedingung von mehr als 50% Batterie!!)

Daher kann ich sogar den Batteriestand und die Bewegungsmelder-Informationen abrufen

Er hat mir auch einen Knopf angezeigt, aber ich weiß nicht, wofür der ist

@Terdious Ich wollte wissen, wo du mit dieser Integration stehst? :slight_smile:

Danke :wink:

Danke, dass du dieses „alte“ Thema wieder aufgebracht hast, genau das würde ich mit meinen Aqara G100 Kameras machen wollen!