Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Blockly
  5. Agentdvr-Aufnahmen in der Visualisierung darstellen

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    16
    1
    1.7k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    872

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.1k

Agentdvr-Aufnahmen in der Visualisierung darstellen

Geplant Angeheftet Gesperrt Verschoben Blockly
6 Beiträge 2 Kommentatoren 717 Aufrufe 2 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • David G.D Offline
    David G.D Offline
    David G.
    schrieb am zuletzt editiert von David G.
    #1

    Ich habe schon länger eine Möglichkeit gesucht die Aufnahmen von AgendDVR in meiner Visualisierung darstellen.

    Das Livebild meiner Cams hab ich schon länger eingebunden.

    Das Thema habe aber lange nicht angepackt, da es für AgendDVR keinen Adapter gibt der einem die benötigten Daten liefert.
    Jedoch habe ich jetzt gesehen, dass AgentDVR eine sehr gut dokumentierte Rest-API hat und habe in Blockly eine Tabelle erstellt.

    Die Tabelle ist respoive und passt sich dem Bildschirm an.

    Screenshot_20250321_181444_Chrom.jpg

    Screenshot_20250321_181514_Chrom.jpg

    Screenshot_20250321_181454_Chrom.jpg

    Auf Wunsch kann man sich über den Icons die Tags zu den Aufnahmen anzeigen lassen.

    Screenshot_20250322_100054_Fully Kiosk Browser.jpg

    Un sich eine Aufnahme anzuschauen, muss man einfach auf eines der Icons drücken.

    Hier gibt es 2 Varianten:

    1. Download des Videos
    2. Öffnen des Videos in einem neuen Tab mit Webplayer (allerdings klappen hier nicht die Videos aller Kameras)

    JPEG_20250321_181616_18924390763.jpg

    Wie funktioniert das Script?

    Folgende Variablen müssen im Blockly ausgefüllt werden:

    Screenshot_20250322_100335_Chrome.jpg

    • groesse_icons_klein_mittel_gross
      - Wie groß die Icons dargesgezwerden sollen, wenn einem keine Größe zusagt kann man es recht weit unten hier anpassen
      Screenshot_20250323_144102_Chrome.jpg

    • show_tags

      • Ob man die Tags der Aufnahmen über die Bilder gelegt bekommen möchte
    • tag_abstand_seitlich

      • Abstand der Tags seitlich
    • tag_abstand_hoehe

      • Abstand der Tags in der Höhe
    • tag_top_bottom

      • Tag oben oder unten ausgerichtet
    • tag_right_left

      • Tag links oder rechts ausgerichtet
    • download_tab

      • Ob das Video runtergeladen werden soll oder im
        Webplayer geöffnet
    • anzahl

      • Anzahl der anzuzeigenden Aufnahmen
    • ip_agentdvr

      • IP von AgendDVR
    • oid

      • Oid der Kamera aus AgendDVR
    • ip_iobroker

      • IP Iobroker

    Die HTML Tabelle wird unten im Script in einen DP geschrieben (nach belieben anpassen) , diesen könnt ihr dann in die Visualisierung eurer Wahl (ich hab es in Lovelace gemacht, da wird die custom:html-template-card benötigt) einbinden.

    Falls ihr die Option gewählt habt, dass das Video in einem neuen Tab im Webpalyer starten soll, sind noch 1-2 Schritte nötig.

    Ihr müsst eine Datei mit dem Namen player.htm über http in eurem Netzwerk freigeben. Ich nutze dazu den Proxy Adapter, jeder andere Weg geht aber auch.

    Ich habe die Datei unter opt/iobroker/html abgelegt und im Proxy Adapter folgende Freigabe angelegt:

    Screenshot_20250322_100646_Chrome.jpg

    Die htm Datei benötigt folgenden Inhalt:

    <!DOCTYPE html>
    <html lang="de">
    <head>
       <meta charset="UTF-8">
       <meta name="viewport" content="width=device-width, initial-scale=1.0">
       <title>Video Player</title>
       <script>
           function getUrlParams() {
               const urlParams = new URLSearchParams(window.location.search);
               return {
                   videoUrl: urlParams.get("videoUrl"),
                   date: urlParams.get("date"),
                   time: urlParams.get("time"),
                   tags: urlParams.get("tags"),
                   duration: urlParams.get("duration"),
                   size: urlParams.get("size")
               };
           }
    
           function setVideoSource() {
               const params = getUrlParams();
               const videoElement = document.getElementById("videoPlayer");
               const sourceElement = document.getElementById("videoSource");
               const infoText = document.getElementById("infoText");
    
               if (params.videoUrl) {
                   const decodedUrl = decodeURIComponent(params.videoUrl);
                   sourceElement.src = decodedUrl;
                   videoElement.load();  
    
                   // Automatisch starten
                   videoElement.play().catch(error => {
                       console.warn("Autoplay wurde blockiert:", error);
                   });
    
                   infoText.innerHTML = `
                       <strong>Datum:</strong> ${params.date || "Nicht angegeben"}<br>
                       <strong>Uhrzeit:</strong> ${params.time || "Nicht angegeben"}<br>
                       <strong>Tags:</strong> ${params.tags || "Keine Tags"}<br>
                       <strong>Dauer:</strong> ${params.duration ? params.duration + " Sekunden" : "Nicht angegeben"}<br>
                       <strong>Dateigröße:</strong> ${params.size ? params.size + " MB" : "Nicht angegeben"}<br>
                       <strong>Video URL:</strong> <a href="${decodedUrl}" target="_blank">${decodedUrl}</a>
                   `;
               } else {
                   infoText.textContent = "Keine gültige Video-URL gefunden!";
                   console.error("Keine gültige Video-URL gefunden!");
               }
           }
    
           window.onload = setVideoSource;
    
           function goBack() {
               window.history.back();  
           }
       </script>
       <style>
           #infoText {
               font-weight: bold;
               color: black;
           }
       </style>
    </head>
    <body>
       <video id="videoPlayer" width="80%" controls autoplay muted>
           <source id="videoSource" src="" type="video/mp4">
           Dein Browser unterstützt dieses Videoformat nicht.
       </video>
       
       <!-- Info-Text zur Anzeige der Video-Details -->
       <p id="infoText"></p>
    
       <!-- Zurück-Button -->
       <button onclick="goBack()" style="margin-top: 20px; padding: 10px; font-size: 16px;">⬅ Zurück</button>
    </body>
    </html>
    

    Falls ihr die Freigabe anders benennt oder die Datei anders freigebt, sucht die URL im Blockly und ändert diese nach euren Vorgaben ab.

    Trigger:
    Ich lasse die Tabelle aktuell von AgendDVR über SimpleApi triggern.
    Dazu habe ich in AgentDVR eine Aktion erstellt, die nach einer Aufnahme eine SimpleApi URL aufruft.

    Screenshot_20250321_183436.jpg

    Bei Aktualisierung des DP (legt euch irgend einen an, am besten im selben Ordner wie der DP für die Tabelle) trigger das Script dann (Trigger im Script anpassen).

    Alternativ könnt ihr natürlich auch einen anderen Trigger nehmen.
    Zu einer bestimmten Uhrzeit, Intervall etc

    Anbei nun das Blockly:
    Eigene_Scripte.VIS.Tabelle_AgentDVR.xml

    Ich bin gespannt, ob bei euch alles klappt.

    EDIT
    Falls noch jemand eine bessere Idee kennt, als das Video im neuen Tab über <video> einzubinden immer her damit. Vom Format her scheint man recht eingeschränkt zu sein. Das motion jpeg meiner billig Kamera klappt Zb nicht (Ich zeichne RAW ohne konvertiung auf, man kann jedoch in AgendDVR auch zu mp4 konvertieren was dann klappt).

    Zeigt eure Lovelace-Visualisierung klick
    (Auch ideal um sich Anregungen zu holen)

    Meine Tabellen für eure Visualisierung klick

    wendy2702W 1 Antwort Letzte Antwort
    4
    • David G.D David G.

      Ich habe schon länger eine Möglichkeit gesucht die Aufnahmen von AgendDVR in meiner Visualisierung darstellen.

      Das Livebild meiner Cams hab ich schon länger eingebunden.

      Das Thema habe aber lange nicht angepackt, da es für AgendDVR keinen Adapter gibt der einem die benötigten Daten liefert.
      Jedoch habe ich jetzt gesehen, dass AgentDVR eine sehr gut dokumentierte Rest-API hat und habe in Blockly eine Tabelle erstellt.

      Die Tabelle ist respoive und passt sich dem Bildschirm an.

      Screenshot_20250321_181444_Chrom.jpg

      Screenshot_20250321_181514_Chrom.jpg

      Screenshot_20250321_181454_Chrom.jpg

      Auf Wunsch kann man sich über den Icons die Tags zu den Aufnahmen anzeigen lassen.

      Screenshot_20250322_100054_Fully Kiosk Browser.jpg

      Un sich eine Aufnahme anzuschauen, muss man einfach auf eines der Icons drücken.

      Hier gibt es 2 Varianten:

      1. Download des Videos
      2. Öffnen des Videos in einem neuen Tab mit Webplayer (allerdings klappen hier nicht die Videos aller Kameras)

      JPEG_20250321_181616_18924390763.jpg

      Wie funktioniert das Script?

      Folgende Variablen müssen im Blockly ausgefüllt werden:

      Screenshot_20250322_100335_Chrome.jpg

      • groesse_icons_klein_mittel_gross
        - Wie groß die Icons dargesgezwerden sollen, wenn einem keine Größe zusagt kann man es recht weit unten hier anpassen
        Screenshot_20250323_144102_Chrome.jpg

      • show_tags

        • Ob man die Tags der Aufnahmen über die Bilder gelegt bekommen möchte
      • tag_abstand_seitlich

        • Abstand der Tags seitlich
      • tag_abstand_hoehe

        • Abstand der Tags in der Höhe
      • tag_top_bottom

        • Tag oben oder unten ausgerichtet
      • tag_right_left

        • Tag links oder rechts ausgerichtet
      • download_tab

        • Ob das Video runtergeladen werden soll oder im
          Webplayer geöffnet
      • anzahl

        • Anzahl der anzuzeigenden Aufnahmen
      • ip_agentdvr

        • IP von AgendDVR
      • oid

        • Oid der Kamera aus AgendDVR
      • ip_iobroker

        • IP Iobroker

      Die HTML Tabelle wird unten im Script in einen DP geschrieben (nach belieben anpassen) , diesen könnt ihr dann in die Visualisierung eurer Wahl (ich hab es in Lovelace gemacht, da wird die custom:html-template-card benötigt) einbinden.

      Falls ihr die Option gewählt habt, dass das Video in einem neuen Tab im Webpalyer starten soll, sind noch 1-2 Schritte nötig.

      Ihr müsst eine Datei mit dem Namen player.htm über http in eurem Netzwerk freigeben. Ich nutze dazu den Proxy Adapter, jeder andere Weg geht aber auch.

      Ich habe die Datei unter opt/iobroker/html abgelegt und im Proxy Adapter folgende Freigabe angelegt:

      Screenshot_20250322_100646_Chrome.jpg

      Die htm Datei benötigt folgenden Inhalt:

      <!DOCTYPE html>
      <html lang="de">
      <head>
         <meta charset="UTF-8">
         <meta name="viewport" content="width=device-width, initial-scale=1.0">
         <title>Video Player</title>
         <script>
             function getUrlParams() {
                 const urlParams = new URLSearchParams(window.location.search);
                 return {
                     videoUrl: urlParams.get("videoUrl"),
                     date: urlParams.get("date"),
                     time: urlParams.get("time"),
                     tags: urlParams.get("tags"),
                     duration: urlParams.get("duration"),
                     size: urlParams.get("size")
                 };
             }
      
             function setVideoSource() {
                 const params = getUrlParams();
                 const videoElement = document.getElementById("videoPlayer");
                 const sourceElement = document.getElementById("videoSource");
                 const infoText = document.getElementById("infoText");
      
                 if (params.videoUrl) {
                     const decodedUrl = decodeURIComponent(params.videoUrl);
                     sourceElement.src = decodedUrl;
                     videoElement.load();  
      
                     // Automatisch starten
                     videoElement.play().catch(error => {
                         console.warn("Autoplay wurde blockiert:", error);
                     });
      
                     infoText.innerHTML = `
                         <strong>Datum:</strong> ${params.date || "Nicht angegeben"}<br>
                         <strong>Uhrzeit:</strong> ${params.time || "Nicht angegeben"}<br>
                         <strong>Tags:</strong> ${params.tags || "Keine Tags"}<br>
                         <strong>Dauer:</strong> ${params.duration ? params.duration + " Sekunden" : "Nicht angegeben"}<br>
                         <strong>Dateigröße:</strong> ${params.size ? params.size + " MB" : "Nicht angegeben"}<br>
                         <strong>Video URL:</strong> <a href="${decodedUrl}" target="_blank">${decodedUrl}</a>
                     `;
                 } else {
                     infoText.textContent = "Keine gültige Video-URL gefunden!";
                     console.error("Keine gültige Video-URL gefunden!");
                 }
             }
      
             window.onload = setVideoSource;
      
             function goBack() {
                 window.history.back();  
             }
         </script>
         <style>
             #infoText {
                 font-weight: bold;
                 color: black;
             }
         </style>
      </head>
      <body>
         <video id="videoPlayer" width="80%" controls autoplay muted>
             <source id="videoSource" src="" type="video/mp4">
             Dein Browser unterstützt dieses Videoformat nicht.
         </video>
         
         <!-- Info-Text zur Anzeige der Video-Details -->
         <p id="infoText"></p>
      
         <!-- Zurück-Button -->
         <button onclick="goBack()" style="margin-top: 20px; padding: 10px; font-size: 16px;">⬅ Zurück</button>
      </body>
      </html>
      

      Falls ihr die Freigabe anders benennt oder die Datei anders freigebt, sucht die URL im Blockly und ändert diese nach euren Vorgaben ab.

      Trigger:
      Ich lasse die Tabelle aktuell von AgendDVR über SimpleApi triggern.
      Dazu habe ich in AgentDVR eine Aktion erstellt, die nach einer Aufnahme eine SimpleApi URL aufruft.

      Screenshot_20250321_183436.jpg

      Bei Aktualisierung des DP (legt euch irgend einen an, am besten im selben Ordner wie der DP für die Tabelle) trigger das Script dann (Trigger im Script anpassen).

      Alternativ könnt ihr natürlich auch einen anderen Trigger nehmen.
      Zu einer bestimmten Uhrzeit, Intervall etc

      Anbei nun das Blockly:
      Eigene_Scripte.VIS.Tabelle_AgentDVR.xml

      Ich bin gespannt, ob bei euch alles klappt.

      EDIT
      Falls noch jemand eine bessere Idee kennt, als das Video im neuen Tab über <video> einzubinden immer her damit. Vom Format her scheint man recht eingeschränkt zu sein. Das motion jpeg meiner billig Kamera klappt Zb nicht (Ich zeichne RAW ohne konvertiung auf, man kann jedoch in AgendDVR auch zu mp4 konvertieren was dann klappt).

      wendy2702W Online
      wendy2702W Online
      wendy2702
      schrieb am zuletzt editiert von
      #2

      @david-g gerade durch Zufall auf diesen Thread gestoßen.

      Muss ich mal probieren aber zuerst noch ne andere Frage. Wie machst du die die Object Erkennung in AgentDVR ?

      Bitte keine Fragen per PN, die gehören ins Forum!

      Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

      David G.D 1 Antwort Letzte Antwort
      0
      • wendy2702W wendy2702

        @david-g gerade durch Zufall auf diesen Thread gestoßen.

        Muss ich mal probieren aber zuerst noch ne andere Frage. Wie machst du die die Object Erkennung in AgentDVR ?

        David G.D Offline
        David G.D Offline
        David G.
        schrieb am zuletzt editiert von David G.
        #3

        @wendy2702

        Auf dem Bildern im Post noch mit der ReolinkAI der Kamera.

        Mittlerweile über

        https://www.codeproject.com/Articles/5322557/CodeProject-AI-Server-AI-the-easy-way

        Hab ich als Docker aufgesetzt.
        Kann man dann einfach in AgendDVR konfigurieren.

        Zeigt eure Lovelace-Visualisierung klick
        (Auch ideal um sich Anregungen zu holen)

        Meine Tabellen für eure Visualisierung klick

        wendy2702W 1 Antwort Letzte Antwort
        0
        • David G.D David G.

          @wendy2702

          Auf dem Bildern im Post noch mit der ReolinkAI der Kamera.

          Mittlerweile über

          https://www.codeproject.com/Articles/5322557/CodeProject-AI-Server-AI-the-easy-way

          Hab ich als Docker aufgesetzt.
          Kann man dann einfach in AgendDVR konfigurieren.

          wendy2702W Online
          wendy2702W Online
          wendy2702
          schrieb am zuletzt editiert von
          #4

          @david-g ok.

          Auf was für einer HW hast du das Laufen und wie ist die Auslastung?

          Bitte keine Fragen per PN, die gehören ins Forum!

          Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

          David G.D 1 Antwort Letzte Antwort
          0
          • wendy2702W wendy2702

            @david-g ok.

            Auf was für einer HW hast du das Laufen und wie ist die Auslastung?

            David G.D Offline
            David G.D Offline
            David G.
            schrieb am zuletzt editiert von David G.
            #5

            @wendy2702

            Hab proxmox auf einem i3 12100 am laufen.
            Ohne die Erkennung liegt die VM im Schnitt bei 2,75% Auslastung mit 4 zugewiesenen Kernen.
            Mit Erkennung ca 35%.

            Allerdinhs kann man das mit einer Coral noch stark optimieren. Vom Verbrauch und Reaktionszeit.

            EDIT
            Das Gesamtsystem geht von ca 10% auf ca 27%.

            Zeigt eure Lovelace-Visualisierung klick
            (Auch ideal um sich Anregungen zu holen)

            Meine Tabellen für eure Visualisierung klick

            wendy2702W 1 Antwort Letzte Antwort
            0
            • David G.D David G.

              @wendy2702

              Hab proxmox auf einem i3 12100 am laufen.
              Ohne die Erkennung liegt die VM im Schnitt bei 2,75% Auslastung mit 4 zugewiesenen Kernen.
              Mit Erkennung ca 35%.

              Allerdinhs kann man das mit einer Coral noch stark optimieren. Vom Verbrauch und Reaktionszeit.

              EDIT
              Das Gesamtsystem geht von ca 10% auf ca 27%.

              wendy2702W Online
              wendy2702W Online
              wendy2702
              schrieb am zuletzt editiert von
              #6

              @david-g Danke für die Info.

              Bitte keine Fragen per PN, die gehören ins Forum!

              Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

              1 Antwort Letzte Antwort
              0
              Antworten
              • In einem neuen Thema antworten
              Anmelden zum Antworten
              • Älteste zuerst
              • Neuste zuerst
              • Meiste Stimmen


              Support us

              ioBroker
              Community Adapters
              Donate

              618

              Online

              32.6k

              Benutzer

              82.1k

              Themen

              1.3m

              Beiträge
              Community
              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
              ioBroker Community 2014-2025
              logo
              • Anmelden

              • Du hast noch kein Konto? Registrieren

              • Anmelden oder registrieren, um zu suchen
              • Erster Beitrag
                Letzter Beitrag
              0
              • Home
              • Aktuell
              • Tags
              • Ungelesen 0
              • Kategorien
              • Unreplied
              • Beliebt
              • GitHub
              • Docu
              • Hilfe