Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Tester
    4. Frigate Adapter für ioBroker

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Frigate Adapter für ioBroker

    This topic has been deleted. Only users with topic management privileges can see it.
    • Wal
      Wal Developer @Eistee last edited by

      @eistee ,
      zum Beispiel so:

      var request = require('request');
      var fs      = require('fs');
      var bell = true;
      var snap = '';
      var url = '';
      
      function sendImage() {
          request.get({url: url, encoding: 'binary'}, function (err, response, body) {
              fs.writeFile(snap, body, 'binary', function(err) {
              if (err) {
                  console.error(err);
              } else {
                  console.log('Snapshot sent');
                  sendTo('telegram.0', {text: snap, caption: 'Bewegung erkannt'});          
              }
            });
          });
      }
      
      on({id: 'frigate.0.doorbell.objects.person.web.snap.snap_0', change: 'any'}, function (obj) {
          if (bell) {
              url = obj.state.val;
              snap = '/tmp/snapshot.jpg';
              sendImage();
          }
          bell = false;
          setTimeout(function() {
              bell = true;
            }, 120000);
      });
      
      1 Reply Last reply Reply Quote 1
      • M
        MINKI last edited by MINKI

        Moin und zunächst ein Dankeschön für den Einsatz hier.

        Ich habe ein reproduzierbares Problem mit dem Adapter. Sobald ich mqtt auf enable setze und frigate neustarte, wird die Erkennung von definierten Objektarten ausgeschaltet. Obwohl ich diese in der frigate config gesetzt habe.

        Das ist meine Konfiguration:

        cameras:
          ######################################EINGANGSBEREICH######################################
          Eingangsbereich:                                                          
            ffmpeg:
              #hwaccel_args: preset-vaapi
              inputs:
                - path: rtsp://127.0.0.1:8554/Eingangsbereich_low
                  input_args: preset-rtsp-restream  
                  roles:
                    - detect
                - path: rtsp://127.0.0.1:8554/Eingangsbereich
                  input_args: preset-rtsp-restream  
                  roles:
                    - record
              output_args:
                record: -f segment -segment_time 10 -segment_format mp4 -reset_timestamps 1 -strftime 1 -c:v copy -c:a aac
            detect:
              enabled: True                           
              width: 640                                                            
              height: 360
              fps: 15
            objects:
              track:
                - bicycle
                - car
                - person
              filters:
                car:
                  threshold: 0.75
            record:
              enabled: true
              expire_interval: 60
              retain:
                days: 2
            snapshots:
              enabled: true
              timestamp: true
              retain:
                default: 365
            motion:
              mask:
                - 640,0,640,100,572,93,574,0
            zones:
              Einfahrt:
                coordinates: 564,131,640,142,640,105,571,97   
              Stellflaeche:
                coordinates: 245,196,230,151,373,119,437,136,552,126,640,144,612,330
              Tuerbereich:
                coordinates: 600,330,595,360,76,360,50,253,242,191
            mqtt:
              enabled: true
              timestamp: true
              bounding_box: true
        

        Sobald ich mqtt einschalte, werden keine Personen mehr im Eingangsbereich erkannt. Der entsprechende Datenpunktunter frigate.0.objects wird auch nicht erstellt.

        Ich habe das selbe Verhalten bei allen Kameras die ich im Einsatz habe (Tapo C320WS).

        Was mache ich falsch?

        Grüße Robert

        Wal 1 Reply Last reply Reply Quote 0
        • Wal
          Wal Developer @MINKI last edited by Wal

          @minki ,
          wenn du im MQTT Adapter das "Eigene States beim Verbinden publizieren oder States bei subscribe publizieren" eingeschaltet hast, muss bei jeder Kamera in den MQTT Objekten "detect.state, motion.state usw" ON stehen. Wenn OFF drinnen steht sendet er beim neu verbinden ein false und schaltet die Funktion aus.
          Das ist das Problem wenn du über die Weboberfläche ein oder ausschaltest und der MQTT Adapter nicht läuft, da bekommt er den Status nicht mit.

          M 1 Reply Last reply Reply Quote 1
          • M
            MINKI @Wal last edited by MINKI

            @wal
            Mein lieber Walter! Du hast mein Problem gelöst und verhindert das eine wehrlose Flasche Weisswein heute Abend missbraucht wird! Genau das war das Problem!
            Darauf wäre ich nicht gekommen. Danke dir vielmals!

            1 Reply Last reply Reply Quote 0
            • Wal
              Wal Developer last edited by Wal

              v0.2.5 ist jetzt im stable

              neu v0.2.6 im latest
              add lastcamid and camid
              Erleichterung beim zusammensetzen des Dateinamens, wenn man lokal Zugriff auf den Snapshot/Clip hat.
              frigate026.jpg

              1 Reply Last reply Reply Quote 1
              • M
                moista last edited by

                @Wal : Guter Adapter 👍

                Hab die Logs allerdings voll, dass bool erwartet wurde, aber string reinkam, z.B:

                State value to set for "frigate.0.decka.car.snapshot" has to be type "boolean" but received type "string" 
                

                Ich denke, hier liegt der Hund begraben (state wird als bool statt string angelegt):
                https://github.com/Bettman66/ioBroker.frigate/blob/0c4765ed047dc475960e70fd9ec050d6072b412f/main.js#L92

                Vielleicht schafft es eine Korrektur in eine der nächsten Updates 😉

                Wal 2 Replies Last reply Reply Quote 0
                • Wal
                  Wal Developer @moista last edited by Wal

                  @moista ,
                  ich wandle im Adapter die String Objekte (On/OFF) vom MQTT-Adapter in Bool Objekte (True/False) um.

                  if (type.toString() == 'string') if (state.val == 'ON') state.val = true; else if (state.val == 'OFF') state.val = false;
                  

                  Man kann mit Bool Objekten in der Vis besser arbeiten.
                  Was bei dir schief läuft kann ich i.M. nicht sagen, da ja Strings erwartet werden.

                  edit: "frigate.0.decka.car.snapshot" ist ein Ordner, dem wird kein Wert zugewiesen.

                  1 Reply Last reply Reply Quote 0
                  • Wal
                    Wal Developer @moista last edited by Wal

                    @moista ,
                    das Objekt "frigate.0.decka.car.snapshot" dürfte es gar nicht geben sehe ich gerade.
                    So müsste er lauten frigate.0.decka.snapshots.set
                    Kannst du eine Bildschirmcopy deiner Objekte hier mal zeigen ?

                    1 Reply Last reply Reply Quote 0
                    • M
                      moista last edited by

                      @Wal
                      Die Umwandlung von ON/OFF in bool ist auch OK, wie du auch vermutest gibt es den snapshots.set als bool. Für den Snapshots aber nicht, da kommt das JFIF als string encoded rein.

                      Ich weiß gerade nicht, ob du jetzt gerne einen Screen von mqtt oder von frigate haben möchtest und von welchem Bereich genau (der Datentyp ist ja nicht im Baum ersichtlich), daher hoffe ich, dass du mit dem JSON evtl. besser arbeiten kannst ("decka" ist jetzt "eingang"). Ansonsten kann ich natürlich auch Screens anfertigen - muss nur wissen, von was genau 😄

                      Ich häng auch mal eine gekürzte frigate.yml an, vielleicht hab ich da ja irgendwas falsch eingestellt, so dass sich das bei mir anders verhält als du es erwartest?

                      mqtt.0.frigate.eingang.json
                      frigate.0.eingang.json
                      frigate.yml

                      Die enthaltenen Snapshots (JFIF...) hab ich durch "JFIF-ERSETZT-MANUELL" ersetzt, damit das JSON nicht so groß ausfällt.

                      Wal 2 Replies Last reply Reply Quote 0
                      • Wal
                        Wal Developer @moista last edited by Wal

                        @moista ,
                        mir fällt ein was das ist, es ist ein Bild das deaktiviert werden muss in Frigate.

                        cameras:
                          doorbell:
                            ffmpeg:
                              hwaccel_args: preset-vaapi
                              inputs:
                                - path: rtsp://192.168.xxx.xxx:8554/doorbell?mp4
                                  roles:
                                    - detect
                                    - record
                            detect:
                              width: 960
                              height: 720
                            mqtt:
                              enabled: False
                        

                        So wird das für die Kamera deaktiviert.
                        mqtt:
                        enabled:False

                        Ich schau mal, ob ich das im Adapter deaktivieren kann.

                        1 Reply Last reply Reply Quote 0
                        • H
                          hardyvo @Wal last edited by

                          @wal Gehört vielleicht nicht wirklich zum Thema, aber mit einen OrangePi5 OHNE Corel laufen 5 Kameras problemlos, wo der Raspi4 MIT Corel schon gepusted hat.

                          Wal 1 Reply Last reply Reply Quote 0
                          • Wal
                            Wal Developer @hardyvo last edited by

                            @hardyvo ,
                            die Corel haben nichts mit der Menge der Kameras zu tun, die sind für Objekterkennung zuständig.
                            Es steht und fällt immer wie viele Streams gewandelt werden müssen und ob der Videoserver über Hardware die Streams wandelt oder über Software. Im besten Fall wenn sie nicht gewandelt werden müssen.

                            1 Reply Last reply Reply Quote 0
                            • Wal
                              Wal Developer @moista last edited by

                              @moista ,
                              die Warnungen dürften jetzt weg sein wenn du den Adapter über Github aktualisierst.

                              1 Reply Last reply Reply Quote 0
                              • S
                                SidM last edited by

                                Servus miteinander!

                                Großen Dank an @Wal für den Adapter, läuft hier seit Wochen Stabil und ohne Probleme👍

                                Eine Sache die mich noch beschäftigt ist: Wenn eine Person erkannt wird, dass ich mir eine Nachricht mit Bild über Pushover zukommen lasse.
                                Das Skript funktioniert soweit Tadellos, nur ist das Bild das gesendet wird, immer das vorletzte.
                                Ich habe gestern erstmal rausgefunden, dass der bzw. die Datenpunkte unter frigate.0.Kamera.objects.person.web.snap erst dann aktualisiert werden, wenn die Person nicht mehr erkannt wird.
                                Bzw. anders formuliert: Wenn eine aktuelle Bewegung erkannt wird und der Erkennungsprozes noch läuft, wird kein Snapshot erstellt.

                                Wie löst ihr das? Macht ihr ein Snapshot direkt von der Kamera?

                                Anbei mal mein Skript dazu:

                                2023-10-23 (2).png

                                Wal 1 Reply Last reply Reply Quote 0
                                • Wal
                                  Wal Developer @SidM last edited by

                                  @sidm ,
                                  ja ich mach meine Snapshot direkt, deshalb ist das mir auch noch nicht aufgefallen. 😉

                                  S 1 Reply Last reply Reply Quote 1
                                  • S
                                    SidM @Wal last edited by

                                    @wal

                                    Ah super, bin ich doch nicht blind😊

                                    Dann muss ich nochmal bei mir schauen. Hatte es gestern mal mit den Snapshot der Reolink probiert, allerdings war die erstellte Datei dann leer.

                                    Wal 2 Replies Last reply Reply Quote 0
                                    • Wal
                                      Wal Developer @SidM last edited by Wal

                                      @sidm ,
                                      ich mach das so wenn jemand klingelt

                                      var request = require('request');
                                      var fs      = require('fs');
                                      var bell = true;
                                      var snap = '';
                                      
                                      function sendImage() {
                                          request.get({url: 'http://192.168.133.10:5000/api/doorbell/latest.jpg?h=600', encoding: 'binary'}, function (err, response, body) {
                                              fs.writeFile(snap, body, 'binary', function(err) {
                                      
                                              if (err) {
                                                  console.error(err);
                                              } else {
                                                  console.log('Snapshot sent');
                                                  sendTo('telegram.0', {text: snap, caption: 'Jemand klingelt an der Haustür !!!'});   
                                                  sendTo("email", {
                                                      to:      "xxx@gmx.de",
                                                      subject: "Message from ioBroker",
                                                      text:    "Jemand klingelt an der Haustür !!!",
                                                      attachments: [{path: snap}]
                                                  });
                                                  sendTo("email", {
                                                      to:      "xxx@gmx.net",
                                                      subject: "Message from ioBroker",
                                                      text:    "Jemand klingelt an der Haustür !!!",
                                                      attachments: [{path: snap}]
                                                  });
                                                  sendTo("email", {
                                                      to:      "xxx@gmx.net",
                                                      subject: "Message from ioBroker",
                                                      text:    "Jemand klingelt an der Haustür !!!",
                                                      attachments: [{path: snap}]
                                                  });
                                                  sendTo("email", {
                                                      to:      "xxx@gmail.com",
                                                      subject: "Message from ioBroker",
                                                      text:    "Jemand klingelt an der Haustür !!!",
                                                      attachments: [{path: snap}]
                                                  });
                                              }
                                            });
                                          });
                                      }
                                      
                                      on({id: "mqtt.0.piface.input.DoorBell_1", val: true}, function (obj) {
                                          if (bell) {
                                              snap = '/opt/iobroker/snapshots/snap_' + formatDate(obj.state.lc, 'TT.MM.JJJJ_hh:mm:ss') + '.jpg';
                                              sendImage();
                                          }
                                          bell = false;
                                          setTimeout(function() {
                                              bell = true;
                                            }, 120000);
                                      

                                      edit: die Snapshot-Url kommt von der Frigate Api
                                      editedit: du musst da dein Kameranamen einsetzen

                                      1 Reply Last reply Reply Quote 0
                                      • Wal
                                        Wal Developer @SidM last edited by

                                        @sidm ,
                                        schaue hier.

                                        S 1 Reply Last reply Reply Quote 1
                                        • S
                                          SidM @Wal last edited by

                                          @wal

                                          Super genau das hatte ich gesucht, danke dir! Läuft😁

                                          1 Reply Last reply Reply Quote 1
                                          • D
                                            dragst3r last edited by

                                            Hallo,

                                            keine Ahnung ob es gewollt ist oder nicht, aber wenn bei Frigate die Snapshots deaktivuert sind für camX, aktualisiert der Adapter trotzdem das Objekt: frigate.0.camX.objects.person.web.clip.clip_0, da scheinbar was getriggert wurde. In Frigate wird ja auch immer ein Thumbnail generiert des letztens Objekt.

                                            Öffnet man aber die Url ist kein Event verfügbar, da die Funktion Snapshots ja auch aus war und somit kein JPG erzeugt wurde.

                                            Ein Idee daher meinerseits, das Objekt erst zu aktualisieren, wenn auch die Funktion in Frigate überhaupt aktiviert ist.

                                            Grüße
                                            dragst3r

                                            Wal 2 Replies Last reply Reply Quote 1
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            799
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            42
                                            358
                                            52405
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo