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. JavaScript
  5. Gelöst: Neuste Datei (mp4) finden

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.8k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.2k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.2k

Gelöst: Neuste Datei (mp4) finden

Geplant Angeheftet Gesperrt Verschoben JavaScript
javascript
17 Beiträge 4 Kommentatoren 488 Aufrufe 6 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.
  • M michihorn

    @oliverio Hallo Danke für die Antwort. Die neuste Datei findet mein Script schon, nur meinem Script ist es egal welches Datei-Format die neuste Datei hat. Ich möchte aber nur die neuste "mp4" finden, leider werden ich dem Verzeichnis in dem die "mp4" erwartet werden, auch "jpg" Dateien sein. Der gesendete Link sucht auch nur die neuste Datei, egal welches Format.
    Gruß
    Michael

    Agria4800A Offline
    Agria4800A Offline
    Agria4800
    schrieb am zuletzt editiert von
    #4

    @michihorn sagte in Neuste Datei (mp4) finden:

    @oliverio Hallo Danke für die Antwort. Die neuste Datei findet mein Script schon, nur meinem Script ist es egal welches Datei-Format die neuste Datei hat. Ich möchte aber nur die neuste "mp4" finden, leider werden ich dem Verzeichnis in dem die "mp4" erwartet werden, auch "jpg" Dateien sein. Der gesendete Link sucht auch nur die neuste Datei, egal welches Format.
    Gruß
    Michael

    Servus Michael,
    ich benutze dafür 2 Scripte, einmal eins in Blockly zur Namensfindung und einmal eins für das Anlegen des letzten Bild/Video!
    Ich denke mal, das könnte dir helfen, schaue es dir mal an!

    Blockly

    <xml xmlns="https://developers.google.com/blockly/xml">
     <variables>
       <variable id="0iXk0G^mPW(Ge`C3Bn~5">Quelle Pic</variable>
       <variable id="T*FIUM{~xbt05}L}O*5J">PicName</variable>
       <variable id="E][YL|8Q)A/~rwq}TJ5i">Quelle Clip</variable>
       <variable id="UfkDZiMzbP`V|TQJn}UE">ClipName</variable>
     </variables>
     <block type="comment" id="S,o(nT~|A0@md(~Jg*yU" x="-138" y="-638">
       <field name="COMMENT">Einmal ausführen für DP anlegen!</field>
       <next>
         <block type="create" id="+Mnrtzh0Ur=]eFm?1KK#" disabled="true">
           <field name="NAME">0_userdata.0.RINGCAM.VIS.PicID</field>
           <value name="VALUE">
             <block type="text" id="SI~88vL[OA:GpT~*X`sh">
               <field name="TEXT">Pic ID</field>
             </block>
           </value>
           <value name="COMMON">
             <block type="text_join" id="0Rq6Mw`_6LP)vB9qM)!n">
               <mutation items="7"></mutation>
               <value name="ADD0">
                 <block type="text" id="v/.vhwI5qM|3j-?^`ufB">
                   <field name="TEXT">{</field>
                 </block>
               </value>
               <value name="ADD1">
                 <block type="text" id="XyYw/26P;4ivrJ{Q:l}n">
                   <field name="TEXT">"name":"PIC ID",</field>
                 </block>
               </value>
               <value name="ADD2">
                 <block type="text" id="S1eEK{]_!B@U2$2J`0QR">
                   <field name="TEXT">"type":"string",</field>
                 </block>
               </value>
               <value name="ADD3">
                 <block type="text" id="(+Kk6RCU+icer(Z~Kv1%">
                   <field name="TEXT">"read":true,</field>
                 </block>
               </value>
               <value name="ADD4">
                 <block type="text" id="a=RttiDHfJeF-~riB79W">
                   <field name="TEXT">"write":true,</field>
                 </block>
               </value>
               <value name="ADD5">
                 <block type="text" id="YY%@%Z=R/!E|u~61f_,l">
                   <field name="TEXT">"role":"state"</field>
                 </block>
               </value>
               <value name="ADD6">
                 <block type="text" id="6fRb{?Xz~N%zWuysBT~n">
                   <field name="TEXT">}</field>
                 </block>
               </value>
             </block>
           </value>
           <statement name="STATEMENT">
             <block type="debug" id="nmJ[P$O;Hd{LY^x65l.K">
               <field name="Severity">log</field>
               <value name="TEXT">
                 <shadow type="text" id="nTn5-LYEY-H1HTK3$J7Y">
                   <field name="TEXT">Der DP wurde angelegt</field>
                 </shadow>
               </value>
             </block>
           </statement>
           <next>
             <block type="create" id="GJxU]RTgRyGS;KWI#T$2" disabled="true">
               <field name="NAME">0_userdata.0.RINGCAM.VIS.ClipID</field>
               <value name="VALUE">
                 <block type="text" id="aAvrh0ynr(Gxln251yk-">
                   <field name="TEXT">Clip ID</field>
                 </block>
               </value>
               <value name="COMMON">
                 <block type="text_join" id="FAHbSVToA$RQMU?rXD^^">
                   <mutation items="7"></mutation>
                   <value name="ADD0">
                     <block type="text" id="`i]n6NeDtO^ofxT3Rtt?">
                       <field name="TEXT">{</field>
                     </block>
                   </value>
                   <value name="ADD1">
                     <block type="text" id="g-A@hy5CxRV~J`_Dd[^5">
                       <field name="TEXT">"name":"Clip ID",</field>
                     </block>
                   </value>
                   <value name="ADD2">
                     <block type="text" id="o9[v2FS`W1`6Jc.`rW3k">
                       <field name="TEXT">"type":"string",</field>
                     </block>
                   </value>
                   <value name="ADD3">
                     <block type="text" id="/PW6Nq/7-V_5yL2[tNg^">
                       <field name="TEXT">"read":true,</field>
                     </block>
                   </value>
                   <value name="ADD4">
                     <block type="text" id="F=(l}ui/+p|+4l8;*Ma7">
                       <field name="TEXT">"write":true,</field>
                     </block>
                   </value>
                   <value name="ADD5">
                     <block type="text" id="zQi}AD(w0.p2LuyS$#Z}">
                       <field name="TEXT">"role":"state"</field>
                     </block>
                   </value>
                   <value name="ADD6">
                     <block type="text" id="{VW-.yE[)(%CT)^e[:em">
                       <field name="TEXT">}</field>
                     </block>
                   </value>
                 </block>
               </value>
               <statement name="STATEMENT">
                 <block type="debug" id="Cj%v_o`muvlAj(LSpEf]">
                   <field name="Severity">log</field>
                   <value name="TEXT">
                     <shadow type="text" id="-^LmFO1+4%AA4A@CqPEH">
                       <field name="TEXT">Der DP wurde angelegt</field>
                     </shadow>
                   </value>
                 </block>
               </statement>
               <next>
                 <block type="on_ext" id="r|GuWbpkE/B#4Wz8(9Nz">
                   <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
                   <field name="CONDITION">ne</field>
                   <field name="ACK_CONDITION"></field>
                   <value name="OID0">
                     <shadow type="field_oid" id="n/^-}ZE/caG^T%,qC2t=">
                       <field name="oid">ring.0.doorbell_54698816.snapshot_url</field>
                     </shadow>
                   </value>
                   <statement name="STATEMENT">
                     <block type="timeouts_wait" id="!bq]]G4g!0i:Gzx@|uQG">
                       <field name="DELAY">1</field>
                       <field name="UNIT">sec</field>
                       <next>
                         <block type="variables_set" id="+(92|lTRhRo5Ef7z(iZ(">
                           <field name="VAR" id="0iXk0G^mPW(Ge`C3Bn~5">Quelle Pic</field>
                           <value name="VALUE">
                             <block type="get_value" id="_(cfQVt);u$Xfo#zE4U,">
                               <field name="ATTR">val</field>
                               <field name="OID">ring.0.doorbell_54698816.snapshot_url</field>
                             </block>
                           </value>
                           <next>
                             <block type="variables_set" id=")q6s39_P0HIzv)i]#.FD">
                               <field name="VAR" id="T*FIUM{~xbt05}L}O*5J">PicName</field>
                               <value name="VALUE">
                                 <block type="text_getSubstring" id=":+mtb@G~3+2d)vMZ]Z~}">
                                   <mutation at1="true" at2="false"></mutation>
                                   <field name="WHERE1">FROM_START</field>
                                   <field name="WHERE2">LAST</field>
                                   <value name="STRING">
                                     <block type="variables_get" id="xt[:_3j:7%X*Y}!d{CH-">
                                       <field name="VAR" id="0iXk0G^mPW(Ge`C3Bn~5">Quelle Pic</field>
                                     </block>
                                   </value>
                                   <value name="AT1">
                                     <block type="math_number" id="=.W-R{wU!3Q)`Xv=4Bx;">
                                       <field name="NUM">43</field>
                                     </block>
                                   </value>
                                 </block>
                               </value>
                               <next>
                                 <block type="update" id="4,X%g+w7v`5ahquvAcm3">
                                   <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                   <field name="OID">0_userdata.0.RINGCAM.VIS.PicID</field>
                                   <field name="WITH_DELAY">FALSE</field>
                                   <value name="VALUE">
                                     <block type="variables_get" id="xolFo@vfO@zW^KTC{YG~">
                                       <field name="VAR" id="T*FIUM{~xbt05}L}O*5J">PicName</field>
                                     </block>
                                   </value>
                                   <next>
                                     <block type="debug" id="w%G##xsGR*_6G-yh7x-1">
                                       <field name="Severity">log</field>
                                       <value name="TEXT">
                                         <shadow type="text" id="t,(j%X[k]mwzA^Oh{9pw">
                                           <field name="TEXT">ID</field>
                                         </shadow>
                                         <block type="text_join" id="Q~gAa|}mY~-7eXdaV|Cn">
                                           <mutation items="2"></mutation>
                                           <value name="ADD0">
                                             <block type="text" id="LX`M}wdnJ)jKB![[cnzC">
                                               <field name="TEXT">PIC ID erzeugt:</field>
                                             </block>
                                           </value>
                                           <value name="ADD1">
                                             <block type="variables_get" id="Nd6^}:XMBJFWFHd))I!j">
                                               <field name="VAR" id="T*FIUM{~xbt05}L}O*5J">PicName</field>
                                             </block>
                                           </value>
                                         </block>
                                       </value>
                                     </block>
                                   </next>
                                 </block>
                               </next>
                             </block>
                           </next>
                         </block>
                       </next>
                     </block>
                   </statement>
                   <next>
                     <block type="on_ext" id=",u40z=7x)dS.l*f#!?pM">
                       <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
                       <field name="CONDITION">ne</field>
                       <field name="ACK_CONDITION"></field>
                       <value name="OID0">
                         <shadow type="field_oid" id=":Z2Uc{,D2q9p6|{3f$;;">
                           <field name="oid">ring.0.doorbell_54698816.livestream_url</field>
                         </shadow>
                       </value>
                       <statement name="STATEMENT">
                         <block type="timeouts_wait" id="Pv)rE2bF07M)yi}=1JZR">
                           <field name="DELAY">1</field>
                           <field name="UNIT">sec</field>
                           <next>
                             <block type="variables_set" id="/1Q=Q;@=_*ruu./cU]vE">
                               <field name="VAR" id="E][YL|8Q)A/~rwq}TJ5i">Quelle Clip</field>
                               <value name="VALUE">
                                 <block type="get_value" id="vqA@4WT;MX:^=obS|A$+">
                                   <field name="ATTR">val</field>
                                   <field name="OID">ring.0.doorbell_54698816.livestream_url</field>
                                 </block>
                               </value>
                               <next>
                                 <block type="variables_set" id="p2,CG)o$bpv~~w-$#*_a">
                                   <field name="VAR" id="UfkDZiMzbP`V|TQJn}UE">ClipName</field>
                                   <value name="VALUE">
                                     <block type="text_getSubstring" id="!RJGPJW}1%vNeHtb3:f.">
                                       <mutation at1="true" at2="false"></mutation>
                                       <field name="WHERE1">FROM_START</field>
                                       <field name="WHERE2">LAST</field>
                                       <value name="STRING">
                                         <block type="variables_get" id=",t0%KMm9vT@9XNT-2+|j">
                                           <field name="VAR" id="E][YL|8Q)A/~rwq}TJ5i">Quelle Clip</field>
                                         </block>
                                       </value>
                                       <value name="AT1">
                                         <block type="math_number" id="l]7!PSt5?T?-C|h|+blY">
                                           <field name="NUM">43</field>
                                         </block>
                                       </value>
                                     </block>
                                   </value>
                                   <next>
                                     <block type="update" id="[DTnPH/A7mGFkFgXvFCW">
                                       <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                       <field name="OID">0_userdata.0.RINGCAM.VIS.ClipID</field>
                                       <field name="WITH_DELAY">FALSE</field>
                                       <value name="VALUE">
                                         <block type="variables_get" id="s22_mg3t!9hcn|!7GFww">
                                           <field name="VAR" id="UfkDZiMzbP`V|TQJn}UE">ClipName</field>
                                         </block>
                                       </value>
                                       <next>
                                         <block type="debug" id="9]*v8uuPb8.DWD{o2CR:">
                                           <field name="Severity">log</field>
                                           <value name="TEXT">
                                             <shadow type="text" id=":fbrS?l_rHVY,Q+{z1/E">
                                               <field name="TEXT">ID</field>
                                             </shadow>
                                             <block type="text_join" id="-G!eM=poyG$HW@y3+0Bn">
                                               <mutation items="2"></mutation>
                                               <value name="ADD0">
                                                 <block type="text" id="EPquB.kk0QUL?0ppr},7">
                                                   <field name="TEXT">Clip ID erzeugt:</field>
                                                 </block>
                                               </value>
                                               <value name="ADD1">
                                                 <block type="variables_get" id="KY+lQ`txs)`P+l#0d2Ar">
                                                   <field name="VAR" id="UfkDZiMzbP`V|TQJn}UE">ClipName</field>
                                                 </block>
                                               </value>
                                             </block>
                                           </value>
                                         </block>
                                       </next>
                                     </block>
                                   </next>
                                 </block>
                               </next>
                             </block>
                           </next>
                         </block>
                       </statement>
                     </block>
                   </next>
                 </block>
               </next>
             </block>
           </next>
         </block>
       </next>
     </block>
    </xml>
    

    Javascript

    
    //+++++++++++  Script Snapshot ++++++++++++++
    
    on({id: '0_userdata.0.RINGCAM.VIS.PicID', change: "ne"}, async function (obj) {
    var value = obj.state.val;
    var oldValue = obj.oldState.val;
    
    await wait(100); 
    
    var request = require('request');
    var fs = require('fs');
    
    var ring = getState('0_userdata.0.RINGCAM.VIS.PicID').val;
    console.log("RING-Bild erzeugt:ID1 " + ring); 
    
    const body = fs.readFileSync('/opt/iobroker/node_modules/iobroker.ring/snapshot/' + getState('0_userdata.0.RINGCAM.VIS.PicID').val);
    // const body = fs.readFileSync('/opt/iobroker/node_modules/iobroker.ring/snapshot/' + ring);
    
    writeFile("vis.0", "/RING/LAST_PIC.jpg", body);
    
    });
    
    
    //+++++++++++  Script Livestream ++++++++++++++
    
    on({id: '0_userdata.0.RINGCAM.VIS.ClipID', change: "ne"}, async function (obj) {
    var value = obj.state.val;
    var oldValue = obj.oldState.val;
    
    await wait(100); 
    
    var request = require('request');
    var fs = require('fs');
    
    var ring1 = getState('0_userdata.0.RINGCAM.VIS.ClipID').val;
    console.log("RING-Video erzeugt: " + ring1); 
    
    const body1 = fs.readFileSync('/opt/iobroker/node_modules/iobroker.ring/snapshot/' + getState('0_userdata.0.RINGCAM.VIS.ClipID').val);
    // const body1 = fs.readFileSync('/opt/iobroker/node_modules/iobroker.ring/snapshot/' + ring1);
    
    writeFile("vis.0", "/RING/LAST_CLIP.mp4", body1);
    
    });
    
    

    1 Antwort Letzte Antwort
    0
    • M michihorn

      @oliverio Hallo Danke für die Antwort. Die neuste Datei findet mein Script schon, nur meinem Script ist es egal welches Datei-Format die neuste Datei hat. Ich möchte aber nur die neuste "mp4" finden, leider werden ich dem Verzeichnis in dem die "mp4" erwartet werden, auch "jpg" Dateien sein. Der gesendete Link sucht auch nur die neuste Datei, egal welches Format.
      Gruß
      Michael

      OliverIOO Offline
      OliverIOO Offline
      OliverIO
      schrieb am zuletzt editiert von
      #5

      @michihorn
      In der variable filepath steht doch der Dateiname mit Pfad und Erweiterung drin.
      Da kannst du doch testen ob der String mit .mp4 endet?

      Meine Adapter und Widgets
      TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
      Links im Profil

      M 1 Antwort Letzte Antwort
      0
      • OliverIOO OliverIO

        @michihorn
        In der variable filepath steht doch der Dateiname mit Pfad und Erweiterung drin.
        Da kannst du doch testen ob der String mit .mp4 endet?

        M Online
        M Online
        michihorn
        schrieb am zuletzt editiert von
        #6

        @oliverio Hallöchen leider sehe ich den Wald vor Bäumen nicht, wo steht die variable filepath?

        const fs = require("fs");
        const path = require("path");
        
        const getMostRecentFile = (dir) => {
          const files = orderReccentFiles(dir);
          return files.length ? files[0] : undefined;
        };
        
        const orderReccentFiles = (dir) => {
          return fs.readdirSync(dir)
            .filter((file) => fs.lstatSync(path.join(dir, file)).isFile())
            .map((file) => ({ file, mtime: fs.lstatSync(path.join(dir, file)).mtime }))
            .sort((a, b) => b.mtime.getTime() - a.mtime.getTime());
        };
        
        console.log(getMostRecentFile('/api/database/schemas/'));
        

        Mich würde auch die Zeile 16 interessieren,. [/api/database/schemas/] Wo kommt das her?
        Gruß
        Michael

        1 Antwort Letzte Antwort
        0
        • M michihorn

          Hallo ich habe mir aus Code-Schnipsel folgenden Code zusammengesetzt, der mir die Neuste Datei in einem Verzeichnis ermittelt.
          Kann mir jemand sagen wie ich nur die neuste mp4 Datei ermittelt bekomme?

          /*****Letztes Kamerabild Giethoorn Boot**************************************
          **    Juli 2021
          **    RING, Kamera
          **    
          **    Ermittelt das letzte gespeicherte Datei von RING-FlootCam
          **    geändert:26.07.21
          *******************************************************************************/
          var zähler = 0;
          var old_recent;
          var old_create;
          var create;
          var path = require('path');
          var fs = require('fs');
          var request = require('request');
          
          schedule(" * * * * * *", function () {
              old_recent = getState('Giethoorn.CAM.Boot.LetztesBild').val;
              old_create = getState('ring.0.doorbell_21502358.History.created_at').val;
              create = getState('ring.0.doorbell_21502358.created_at').val;
              var getMostRecent = function (dir, cb) {
                  var dir = path.resolve(dir);
                  var files = fs.readdir(dir, function (err, files) {
                      var sorted = files.map(function (v) {
                          var filepath = path.resolve(dir, v);
                          return {
                              name: v,
                              time: fs.statSync(filepath).mtime.getTime()
                          };
                      })
                          .sort(function (a, b) { return b.time - a.time; })
                          .map(function (v) { return v.name; });
          
                      if (sorted.length > 0) {
                          cb(null, sorted[0]);
                      } else {
                          cb('Y U NO have files in this dir?');
                      }
                  })
              }
              getMostRecent('/iobroker/SmartHome/iobroker-data/files/ring.0/doorbell_21502358/', function (err, recent) {
                  if (err) console.error(err);
                  console.log(recent);
                  setState('javascript.3.Giethoorn.CAM.Boot.LetztesBild', recent);
                  setState('javascript.3.Giethoorn.CAM.Boot.SDate', formatDate(new Date(create), "TT.MM.JJ hh:mm"));
                  const boot = fs.readFileSync('/iobroker/SmartHome/iobroker-data/files/ring.0/doorbell_21502358/' + recent);
                  writeFile("vis.0", "/NL/01Boot.mp4", boot);
              });
          });
          
          

          Gruß Michael

          OliverIOO Offline
          OliverIOO Offline
          OliverIO
          schrieb am zuletzt editiert von
          #7

          @michihorn sagte in Neuste Datei (mp4) finden:

          Hallo ich habe mir aus Code-Schnipsel folgenden Code zusammengesetzt, der mir die Neuste Datei in einem Verzeichnis ermittelt.
          Kann mir jemand sagen wie ich nur die neuste mp4 Datei ermittelt bekomme?

          /*****Letztes Kamerabild Giethoorn Boot**************************************
          **    Juli 2021
          **    RING, Kamera
          **    
          **    Ermittelt das letzte gespeicherte Datei von RING-FlootCam
          **    geändert:26.07.21
          *******************************************************************************/
          var zähler = 0;
          var old_recent;
          var old_create;
          var create;
          var path = require('path');
          var fs = require('fs');
          var request = require('request');
          
          schedule(" * * * * * *", function () {
              old_recent = getState('Giethoorn.CAM.Boot.LetztesBild').val;
              old_create = getState('ring.0.doorbell_21502358.History.created_at').val;
              create = getState('ring.0.doorbell_21502358.created_at').val;
              var getMostRecent = function (dir, cb) {
                  var dir = path.resolve(dir);
                  var files = fs.readdir(dir, function (err, files) {
                      var sorted = files.map(function (v) {
                          var filepath = path.resolve(dir, v);
                          return {
                              name: v,
                              time: fs.statSync(filepath).mtime.getTime()
                          };
                      })
                          .sort(function (a, b) { return b.time - a.time; })
                          .map(function (v) { return v.name; });
          
                      if (sorted.length > 0) {
                          cb(null, sorted[0]);
                      } else {
                          cb('Y U NO have files in this dir?');
                      }
                  })
              }
              getMostRecent('/iobroker/SmartHome/iobroker-data/files/ring.0/doorbell_21502358/', function (err, recent) {
                  if (err) console.error(err);
                  console.log(recent);
                  setState('javascript.3.Giethoorn.CAM.Boot.LetztesBild', recent);
                  setState('javascript.3.Giethoorn.CAM.Boot.SDate', formatDate(new Date(create), "TT.MM.JJ hh:mm"));
                  const boot = fs.readFileSync('/iobroker/SmartHome/iobroker-data/files/ring.0/doorbell_21502358/' + recent);
                  writeFile("vis.0", "/NL/01Boot.mp4", boot);
              });
          });
          
          

          Gruß Michael

          In Zeile 24
          Bitte nicht zwischendurch das Skript wechseln. Das verwirrt

          Meine Adapter und Widgets
          TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
          Links im Profil

          M 1 Antwort Letzte Antwort
          0
          • M michihorn

            Hallo ich habe mir aus Code-Schnipsel folgenden Code zusammengesetzt, der mir die Neuste Datei in einem Verzeichnis ermittelt.
            Kann mir jemand sagen wie ich nur die neuste mp4 Datei ermittelt bekomme?

            /*****Letztes Kamerabild Giethoorn Boot**************************************
            **    Juli 2021
            **    RING, Kamera
            **    
            **    Ermittelt das letzte gespeicherte Datei von RING-FlootCam
            **    geändert:26.07.21
            *******************************************************************************/
            var zähler = 0;
            var old_recent;
            var old_create;
            var create;
            var path = require('path');
            var fs = require('fs');
            var request = require('request');
            
            schedule(" * * * * * *", function () {
                old_recent = getState('Giethoorn.CAM.Boot.LetztesBild').val;
                old_create = getState('ring.0.doorbell_21502358.History.created_at').val;
                create = getState('ring.0.doorbell_21502358.created_at').val;
                var getMostRecent = function (dir, cb) {
                    var dir = path.resolve(dir);
                    var files = fs.readdir(dir, function (err, files) {
                        var sorted = files.map(function (v) {
                            var filepath = path.resolve(dir, v);
                            return {
                                name: v,
                                time: fs.statSync(filepath).mtime.getTime()
                            };
                        })
                            .sort(function (a, b) { return b.time - a.time; })
                            .map(function (v) { return v.name; });
            
                        if (sorted.length > 0) {
                            cb(null, sorted[0]);
                        } else {
                            cb('Y U NO have files in this dir?');
                        }
                    })
                }
                getMostRecent('/iobroker/SmartHome/iobroker-data/files/ring.0/doorbell_21502358/', function (err, recent) {
                    if (err) console.error(err);
                    console.log(recent);
                    setState('javascript.3.Giethoorn.CAM.Boot.LetztesBild', recent);
                    setState('javascript.3.Giethoorn.CAM.Boot.SDate', formatDate(new Date(create), "TT.MM.JJ hh:mm"));
                    const boot = fs.readFileSync('/iobroker/SmartHome/iobroker-data/files/ring.0/doorbell_21502358/' + recent);
                    writeFile("vis.0", "/NL/01Boot.mp4", boot);
                });
            });
            
            

            Gruß Michael

            mickymM Offline
            mickymM Offline
            mickym
            Most Active
            schrieb am zuletzt editiert von mickym
            #8

            gelöscht

            Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

            1 Antwort Letzte Antwort
            0
            • OliverIOO OliverIO

              @michihorn sagte in Neuste Datei (mp4) finden:

              Hallo ich habe mir aus Code-Schnipsel folgenden Code zusammengesetzt, der mir die Neuste Datei in einem Verzeichnis ermittelt.
              Kann mir jemand sagen wie ich nur die neuste mp4 Datei ermittelt bekomme?

              /*****Letztes Kamerabild Giethoorn Boot**************************************
              **    Juli 2021
              **    RING, Kamera
              **    
              **    Ermittelt das letzte gespeicherte Datei von RING-FlootCam
              **    geändert:26.07.21
              *******************************************************************************/
              var zähler = 0;
              var old_recent;
              var old_create;
              var create;
              var path = require('path');
              var fs = require('fs');
              var request = require('request');
              
              schedule(" * * * * * *", function () {
                  old_recent = getState('Giethoorn.CAM.Boot.LetztesBild').val;
                  old_create = getState('ring.0.doorbell_21502358.History.created_at').val;
                  create = getState('ring.0.doorbell_21502358.created_at').val;
                  var getMostRecent = function (dir, cb) {
                      var dir = path.resolve(dir);
                      var files = fs.readdir(dir, function (err, files) {
                          var sorted = files.map(function (v) {
                              var filepath = path.resolve(dir, v);
                              return {
                                  name: v,
                                  time: fs.statSync(filepath).mtime.getTime()
                              };
                          })
                              .sort(function (a, b) { return b.time - a.time; })
                              .map(function (v) { return v.name; });
              
                          if (sorted.length > 0) {
                              cb(null, sorted[0]);
                          } else {
                              cb('Y U NO have files in this dir?');
                          }
                      })
                  }
                  getMostRecent('/iobroker/SmartHome/iobroker-data/files/ring.0/doorbell_21502358/', function (err, recent) {
                      if (err) console.error(err);
                      console.log(recent);
                      setState('javascript.3.Giethoorn.CAM.Boot.LetztesBild', recent);
                      setState('javascript.3.Giethoorn.CAM.Boot.SDate', formatDate(new Date(create), "TT.MM.JJ hh:mm"));
                      const boot = fs.readFileSync('/iobroker/SmartHome/iobroker-data/files/ring.0/doorbell_21502358/' + recent);
                      writeFile("vis.0", "/NL/01Boot.mp4", boot);
                  });
              });
              
              

              Gruß Michael

              In Zeile 24
              Bitte nicht zwischendurch das Skript wechseln. Das verwirrt

              M Online
              M Online
              michihorn
              schrieb am zuletzt editiert von
              #9

              @oliverio
              Hallo Oliver, du hattest ja den Link "https://brianchildress.co/find-latest-file-in-directory-in-nodejs/". gesendet.
              Ich dachte Dein Hinweis bezog sich auf das dort abgebildete Script.

              Ich weiß das ich noch viel Lernen muss, aber wer nicht fragt bleibt dumm.

              In meinem Script Zeile 24 sehe ich nicht das nur MP4 gesucht werden.
              var filepath = path.resolve(dir, v);
              Michael

              mickymM 1 Antwort Letzte Antwort
              0
              • M michihorn

                @oliverio
                Hallo Oliver, du hattest ja den Link "https://brianchildress.co/find-latest-file-in-directory-in-nodejs/". gesendet.
                Ich dachte Dein Hinweis bezog sich auf das dort abgebildete Script.

                Ich weiß das ich noch viel Lernen muss, aber wer nicht fragt bleibt dumm.

                In meinem Script Zeile 24 sehe ich nicht das nur MP4 gesucht werden.
                var filepath = path.resolve(dir, v);
                Michael

                mickymM Offline
                mickymM Offline
                mickym
                Most Active
                schrieb am zuletzt editiert von mickym
                #10

                @michihorn @OliverIO hat ja nur gemeint, dass Du dort prüfen kannst,

                Du könntest beispielsweise Zeile 25 entsprechend anpassen:

                if ( filepath.slice(-4) === '.mp4')  return {
                

                Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                M 1 Antwort Letzte Antwort
                0
                • mickymM mickym

                  @michihorn @OliverIO hat ja nur gemeint, dass Du dort prüfen kannst,

                  Du könntest beispielsweise Zeile 25 entsprechend anpassen:

                  if ( filepath.slice(-4) === '.mp4')  return {
                  
                  M Online
                  M Online
                  michihorn
                  schrieb am zuletzt editiert von
                  #11

                  @mickym
                  Ich habe das Script etwas umgebaut, sieht jetzt so aus:

                  /*****Letztes Kamerabild Giethoorn Boot**************************************
                  **    Juli 2021
                  **    RING, Kamera
                  **    
                  **    Ermittelt das letzte gespeicherte Video MP4 von RING-FlootCam
                  **    geändert:26.07.21, 16.8.21
                  *******************************************************************************/
                  var zähler = 0;
                  var old_recent;
                  var old_create;
                  var create;
                  var path = require('path');
                  var fs = require('fs');
                  var request = require('request');
                  
                  on({id: 'ring.0.doorbell_21502358.created_at', change: "ne"}, async function (obj) {
                  var value = obj.state.val;
                  var oldValue = obj.oldState.val;
                  await wait(100);
                      old_recent = getState('Giethoorn.CAM.Boot.LetztesBild').val;
                      old_create = getState('ring.0.doorbell_21502358.History.created_at').val;
                      create = getState('ring.0.doorbell_21502358.created_at').val;
                      var getMostRecent = function (dir, cb) {
                          var dir = path.resolve(dir);
                  
                          var files = fs.readdir(dir, function (err, files) {
                              var sorted = files.map(function (v) {
                                  var filepath = path.resolve(dir, v);
                                  if ( filepath.slice(-4) === '.mp4') 
                                  return {
                                      name: v,
                                      time: fs.statSync(filepath).mtime.getTime()
                                  };
                              })
                                  .sort(function (a, b) { return b.time - a.time; })
                                  .map(function (v) { return v.name; });
                  
                              if (sorted.length > 0) {
                                  cb(null, sorted[0]);
                              } else {
                                  cb('Y U NO have files in this dir?');
                              }
                          })
                      }
                      getMostRecent('/iobroker/SmartHome/iobroker-data/files/ring.0/doorbell_21502358/', function (err, recent) {
                          if (err) console.error(err);
                          console.log(recent);
                          setState('javascript.3.Giethoorn.CAM.Boot.LetztesBild', recent);
                          setState('javascript.3.Giethoorn.CAM.Boot.SDate', formatDate(new Date(create), "TT.MM.JJ hh:mm"));
                          const boot = fs.readFileSync('/iobroker/SmartHome/iobroker-data/files/ring.0/doorbell_21502358/' + recent);
                          writeFile("vis.0", "/NL/01Boot.mp4", boot);
                      });
                  });
                  
                  

                  Deinen Rat habe ich eingebaut, ist nun in Zeile 29.
                  Ich bekomme folgenden Fehler:

                  22:11:36.183	error	javascript.3 (14660) script.js.Giethoorn.Lastfile_Boot: TypeError: Cannot read property 'name' of undefined
                  22:11:36.183	error	javascript.3 (14660) at script.js.Giethoorn.Lastfile_Boot:36:46
                  22:11:36.184	error	javascript.3 (14660) at script.js.Giethoorn.Lastfile_Boot:36:18
                  22:11:36.299	error	host.DESKTOP-RQ1PD76(SmartHome) Caught by controller[0]: at script.js.Giethoorn.Lastfile_Boot:114:46
                  22:11:36.299	error	host.DESKTOP-RQ1PD76(SmartHome) Caught by controller[0]: at script.js.Giethoorn.Lastfile_Boot:114:18
                  

                  Michael

                  mickymM 1 Antwort Letzte Antwort
                  0
                  • M michihorn

                    @mickym
                    Ich habe das Script etwas umgebaut, sieht jetzt so aus:

                    /*****Letztes Kamerabild Giethoorn Boot**************************************
                    **    Juli 2021
                    **    RING, Kamera
                    **    
                    **    Ermittelt das letzte gespeicherte Video MP4 von RING-FlootCam
                    **    geändert:26.07.21, 16.8.21
                    *******************************************************************************/
                    var zähler = 0;
                    var old_recent;
                    var old_create;
                    var create;
                    var path = require('path');
                    var fs = require('fs');
                    var request = require('request');
                    
                    on({id: 'ring.0.doorbell_21502358.created_at', change: "ne"}, async function (obj) {
                    var value = obj.state.val;
                    var oldValue = obj.oldState.val;
                    await wait(100);
                        old_recent = getState('Giethoorn.CAM.Boot.LetztesBild').val;
                        old_create = getState('ring.0.doorbell_21502358.History.created_at').val;
                        create = getState('ring.0.doorbell_21502358.created_at').val;
                        var getMostRecent = function (dir, cb) {
                            var dir = path.resolve(dir);
                    
                            var files = fs.readdir(dir, function (err, files) {
                                var sorted = files.map(function (v) {
                                    var filepath = path.resolve(dir, v);
                                    if ( filepath.slice(-4) === '.mp4') 
                                    return {
                                        name: v,
                                        time: fs.statSync(filepath).mtime.getTime()
                                    };
                                })
                                    .sort(function (a, b) { return b.time - a.time; })
                                    .map(function (v) { return v.name; });
                    
                                if (sorted.length > 0) {
                                    cb(null, sorted[0]);
                                } else {
                                    cb('Y U NO have files in this dir?');
                                }
                            })
                        }
                        getMostRecent('/iobroker/SmartHome/iobroker-data/files/ring.0/doorbell_21502358/', function (err, recent) {
                            if (err) console.error(err);
                            console.log(recent);
                            setState('javascript.3.Giethoorn.CAM.Boot.LetztesBild', recent);
                            setState('javascript.3.Giethoorn.CAM.Boot.SDate', formatDate(new Date(create), "TT.MM.JJ hh:mm"));
                            const boot = fs.readFileSync('/iobroker/SmartHome/iobroker-data/files/ring.0/doorbell_21502358/' + recent);
                            writeFile("vis.0", "/NL/01Boot.mp4", boot);
                        });
                    });
                    
                    

                    Deinen Rat habe ich eingebaut, ist nun in Zeile 29.
                    Ich bekomme folgenden Fehler:

                    22:11:36.183	error	javascript.3 (14660) script.js.Giethoorn.Lastfile_Boot: TypeError: Cannot read property 'name' of undefined
                    22:11:36.183	error	javascript.3 (14660) at script.js.Giethoorn.Lastfile_Boot:36:46
                    22:11:36.184	error	javascript.3 (14660) at script.js.Giethoorn.Lastfile_Boot:36:18
                    22:11:36.299	error	host.DESKTOP-RQ1PD76(SmartHome) Caught by controller[0]: at script.js.Giethoorn.Lastfile_Boot:114:46
                    22:11:36.299	error	host.DESKTOP-RQ1PD76(SmartHome) Caught by controller[0]: at script.js.Giethoorn.Lastfile_Boot:114:18
                    

                    Michael

                    mickymM Offline
                    mickymM Offline
                    mickym
                    Most Active
                    schrieb am zuletzt editiert von mickym
                    #12

                    Wie ich befürchtet hatte musst alles in {} setzen

                     
                    /*****Letztes Kamerabild Giethoorn Boot**************************************
                    **    Juli 2021
                    **    RING, Kamera
                    **    
                    **    Ermittelt das letzte gespeicherte Video MP4 von RING-FlootCam
                    **    geändert:26.07.21, 16.8.21
                    *******************************************************************************/
                    var zähler = 0;
                    var old_recent;
                    var old_create;
                    var create;
                    var path = require('path');
                    var fs = require('fs');
                    var request = require('request');
                     
                    on({id: 'ring.0.doorbell_21502358.created_at', change: "ne"}, async function (obj) {
                    var value = obj.state.val;
                    var oldValue = obj.oldState.val;
                    await wait(100);
                        old_recent = getState('Giethoorn.CAM.Boot.LetztesBild').val;
                        old_create = getState('ring.0.doorbell_21502358.History.created_at').val;
                        create = getState('ring.0.doorbell_21502358.created_at').val;
                        var getMostRecent = function (dir, cb) {
                            var dir = path.resolve(dir);
                     
                            var files = fs.readdir(dir, function (err, files) {
                                var sorted = files.map(function (v) {
                                    var filepath = path.resolve(dir, v);
                                    if ( filepath.slice(-4) === '.mp4') {
                                         return {
                                                 name: v,
                                                 time: fs.statSync(filepath).mtime.getTime()
                                                  };
                                    }
                                })
                                    .sort(function (a, b) { return b.time - a.time; })
                                    .map(function (v) { return v.name; });
                     
                                if (sorted.length > 0) {
                                    cb(null, sorted[0]);
                                } else {
                                    cb('Y U NO have files in this dir?');
                                }
                            })
                        }
                        getMostRecent('/iobroker/SmartHome/iobroker-data/files/ring.0/doorbell_21502358/', function (err, recent) {
                            if (err) console.error(err);
                            console.log(recent);
                            setState('javascript.3.Giethoorn.CAM.Boot.LetztesBild', recent);
                            setState('javascript.3.Giethoorn.CAM.Boot.SDate', formatDate(new Date(create), "TT.MM.JJ hh:mm"));
                            const boot = fs.readFileSync('/iobroker/SmartHome/iobroker-data/files/ring.0/doorbell_21502358/' + recent);
                            writeFile("vis.0", "/NL/01Boot.mp4", boot);
                        });
                    });
                     
                    

                    Ich hab nun aber nicht das ganze Skript nachvollzogen, sondern es wird halt lediglich was zurückgegeben, wenn eine mp4 gefunden wurde. Ursprünglich hatte ich ja auch einen anderen Thread gepostet, mit ähnlichen Anforderungen. Aber den Verweis habe ich wieder gelöscht, da es Dir ja eher um Dein Skript und nicht um die Lösung insgesamt geht. Wollte mich da im Detail auch nicht einmischen.

                    Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                    M 1 Antwort Letzte Antwort
                    0
                    • mickymM mickym

                      Wie ich befürchtet hatte musst alles in {} setzen

                       
                      /*****Letztes Kamerabild Giethoorn Boot**************************************
                      **    Juli 2021
                      **    RING, Kamera
                      **    
                      **    Ermittelt das letzte gespeicherte Video MP4 von RING-FlootCam
                      **    geändert:26.07.21, 16.8.21
                      *******************************************************************************/
                      var zähler = 0;
                      var old_recent;
                      var old_create;
                      var create;
                      var path = require('path');
                      var fs = require('fs');
                      var request = require('request');
                       
                      on({id: 'ring.0.doorbell_21502358.created_at', change: "ne"}, async function (obj) {
                      var value = obj.state.val;
                      var oldValue = obj.oldState.val;
                      await wait(100);
                          old_recent = getState('Giethoorn.CAM.Boot.LetztesBild').val;
                          old_create = getState('ring.0.doorbell_21502358.History.created_at').val;
                          create = getState('ring.0.doorbell_21502358.created_at').val;
                          var getMostRecent = function (dir, cb) {
                              var dir = path.resolve(dir);
                       
                              var files = fs.readdir(dir, function (err, files) {
                                  var sorted = files.map(function (v) {
                                      var filepath = path.resolve(dir, v);
                                      if ( filepath.slice(-4) === '.mp4') {
                                           return {
                                                   name: v,
                                                   time: fs.statSync(filepath).mtime.getTime()
                                                    };
                                      }
                                  })
                                      .sort(function (a, b) { return b.time - a.time; })
                                      .map(function (v) { return v.name; });
                       
                                  if (sorted.length > 0) {
                                      cb(null, sorted[0]);
                                  } else {
                                      cb('Y U NO have files in this dir?');
                                  }
                              })
                          }
                          getMostRecent('/iobroker/SmartHome/iobroker-data/files/ring.0/doorbell_21502358/', function (err, recent) {
                              if (err) console.error(err);
                              console.log(recent);
                              setState('javascript.3.Giethoorn.CAM.Boot.LetztesBild', recent);
                              setState('javascript.3.Giethoorn.CAM.Boot.SDate', formatDate(new Date(create), "TT.MM.JJ hh:mm"));
                              const boot = fs.readFileSync('/iobroker/SmartHome/iobroker-data/files/ring.0/doorbell_21502358/' + recent);
                              writeFile("vis.0", "/NL/01Boot.mp4", boot);
                          });
                      });
                       
                      

                      Ich hab nun aber nicht das ganze Skript nachvollzogen, sondern es wird halt lediglich was zurückgegeben, wenn eine mp4 gefunden wurde. Ursprünglich hatte ich ja auch einen anderen Thread gepostet, mit ähnlichen Anforderungen. Aber den Verweis habe ich wieder gelöscht, da es Dir ja eher um Dein Skript und nicht um die Lösung insgesamt geht. Wollte mich da im Detail auch nicht einmischen.

                      M Online
                      M Online
                      michihorn
                      schrieb am zuletzt editiert von
                      #13

                      @mickym
                      Leider nein....

                      22:39:23.565	error	javascript.3 (11972) script.js.Giethoorn.Lastfile_Boot: TypeError: Cannot read property 'name' of undefined
                      22:39:23.565	error	javascript.3 (11972) at script.js.Giethoorn.Lastfile_Boot:37:46
                      22:39:23.565	error	javascript.3 (11972) at script.js.Giethoorn.Lastfile_Boot:37:18
                      22:39:23.680	error	host.DESKTOP-RQ1PD76(SmartHome) Caught by controller[0]: at script.js.Giethoorn.Lastfile_Boot:115:46
                      22:39:23.680	error	host.DESKTOP-RQ1PD76(SmartHome) Caught by controller[0]: at script.js.Giethoorn.Lastfile_Boot:115:18
                      
                      mickymM 1 Antwort Letzte Antwort
                      0
                      • M michihorn

                        @mickym
                        Leider nein....

                        22:39:23.565	error	javascript.3 (11972) script.js.Giethoorn.Lastfile_Boot: TypeError: Cannot read property 'name' of undefined
                        22:39:23.565	error	javascript.3 (11972) at script.js.Giethoorn.Lastfile_Boot:37:46
                        22:39:23.565	error	javascript.3 (11972) at script.js.Giethoorn.Lastfile_Boot:37:18
                        22:39:23.680	error	host.DESKTOP-RQ1PD76(SmartHome) Caught by controller[0]: at script.js.Giethoorn.Lastfile_Boot:115:46
                        22:39:23.680	error	host.DESKTOP-RQ1PD76(SmartHome) Caught by controller[0]: at script.js.Giethoorn.Lastfile_Boot:115:18
                        
                        mickymM Offline
                        mickymM Offline
                        mickym
                        Most Active
                        schrieb am zuletzt editiert von
                        #14

                        @michihorn Probier mal statt dem mapping ein filtering.

                        also in Zeile 28 statt map filter

                                    var sorted = files.map(function (v) {
                        

                        in

                                    var sorted = files.filter(function (v) {
                        

                        Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                        M 1 Antwort Letzte Antwort
                        0
                        • mickymM mickym

                          @michihorn Probier mal statt dem mapping ein filtering.

                          also in Zeile 28 statt map filter

                                      var sorted = files.map(function (v) {
                          

                          in

                                      var sorted = files.filter(function (v) {
                          
                          M Online
                          M Online
                          michihorn
                          schrieb am zuletzt editiert von
                          #15

                          @mickym sagte in Neuste Datei (mp4) finden:

                          var sorted = files.filter(function (v) {

                          Das Script sieht nun so aus:

                          /*****Letztes Kamerabild Giethoorn Boot**************************************
                          **    Juli 2021
                          **    RING, Kamera
                          **    
                          **    Ermittelt das letzte gespeicherte Video MP4 von RING-FlootCam
                          **    geändert:26.07.21, 16.8.21
                          *******************************************************************************/
                          var zähler = 0;
                          var old_recent;
                          var old_create;
                          var create;
                          var path = require('path');
                          var fs = require('fs');
                          var request = require('request');
                          
                          on({id: 'ring.0.doorbell_21502358.created_at', change: "ne"}, async function (obj) {
                          var value = obj.state.val;
                          var oldValue = obj.oldState.val;
                          await wait(100);
                              old_recent = getState('Giethoorn.CAM.Boot.LetztesBild').val;
                              old_create = getState('ring.0.doorbell_21502358.History.created_at').val;
                              create = getState('ring.0.doorbell_21502358.created_at').val;
                              var getMostRecent = function (dir, cb) {
                                  var dir = path.resolve(dir);
                          
                                  var files = fs.readdir(dir, function (err, files) {
                                      //var sorted = files.map(function (v) {
                                          var sorted = files.filter(function (v) {
                                          var filepath = path.resolve(dir, v);
                                          if ( filepath.slice(-4) === '.mp4') {
                                          return {
                                              name: v,
                                              time: fs.statSync(filepath).mtime.getTime()
                                          };
                                         }
                                      })
                                          .sort(function (a, b) { return b.time - a.time; })
                                          .map(function (v) { return v.name; });
                          
                                      if (sorted.length > 0) {
                                          cb(null, sorted[0]);
                                      } else {
                                          cb('Y U NO have files in this dir?');
                                      }
                                  })
                              }
                              getMostRecent('/iobroker/SmartHome/iobroker-data/files/ring.0/doorbell_21502358/', function (err, recent) {
                                  if (err) console.error(err);
                                  console.log(recent);
                                  setState('javascript.3.Giethoorn.CAM.Boot.LetztesBild', recent);
                                  setState('javascript.3.Giethoorn.CAM.Boot.SDate', formatDate(new Date(create), "TT.MM.JJ hh:mm"));
                                  const boot = fs.readFileSync('/iobroker/SmartHome/iobroker-data/files/ring.0/doorbell_21502358/' + recent);
                                  writeFile("vis.0", "/NL/01Boot.mp4", boot);
                              });
                          });
                          Die Fehlermeldung:
                          

                          23:01:30.974 info javascript.1 (16180) Stop script script.js.Giethoorn.Lastfile_Boot
                          23:01:30.970 info javascript.3 (13032) Stop script script.js.Giethoorn.Lastfile_Boot
                          23:01:30.989 info javascript.3 (13032) Start javascript script.js.Giethoorn.Lastfile_Boot
                          23:01:30.996 info javascript.3 (13032) script.js.Giethoorn.Lastfile_Boot: registered 1 subscription and 0 schedules
                          23:01:38.008 error host.DESKTOP-RQ1PD76(SmartHome) Caught by controller[0]: at script.js.Giethoorn.Lastfile_Boot:130:25
                          23:01:38.008 error host.DESKTOP-RQ1PD76(SmartHome) Caught by controller[0]: at script.js.Giethoorn.Lastfile_Boot:119:17

                          mickymM 1 Antwort Letzte Antwort
                          0
                          • M michihorn

                            @mickym sagte in Neuste Datei (mp4) finden:

                            var sorted = files.filter(function (v) {

                            Das Script sieht nun so aus:

                            /*****Letztes Kamerabild Giethoorn Boot**************************************
                            **    Juli 2021
                            **    RING, Kamera
                            **    
                            **    Ermittelt das letzte gespeicherte Video MP4 von RING-FlootCam
                            **    geändert:26.07.21, 16.8.21
                            *******************************************************************************/
                            var zähler = 0;
                            var old_recent;
                            var old_create;
                            var create;
                            var path = require('path');
                            var fs = require('fs');
                            var request = require('request');
                            
                            on({id: 'ring.0.doorbell_21502358.created_at', change: "ne"}, async function (obj) {
                            var value = obj.state.val;
                            var oldValue = obj.oldState.val;
                            await wait(100);
                                old_recent = getState('Giethoorn.CAM.Boot.LetztesBild').val;
                                old_create = getState('ring.0.doorbell_21502358.History.created_at').val;
                                create = getState('ring.0.doorbell_21502358.created_at').val;
                                var getMostRecent = function (dir, cb) {
                                    var dir = path.resolve(dir);
                            
                                    var files = fs.readdir(dir, function (err, files) {
                                        //var sorted = files.map(function (v) {
                                            var sorted = files.filter(function (v) {
                                            var filepath = path.resolve(dir, v);
                                            if ( filepath.slice(-4) === '.mp4') {
                                            return {
                                                name: v,
                                                time: fs.statSync(filepath).mtime.getTime()
                                            };
                                           }
                                        })
                                            .sort(function (a, b) { return b.time - a.time; })
                                            .map(function (v) { return v.name; });
                            
                                        if (sorted.length > 0) {
                                            cb(null, sorted[0]);
                                        } else {
                                            cb('Y U NO have files in this dir?');
                                        }
                                    })
                                }
                                getMostRecent('/iobroker/SmartHome/iobroker-data/files/ring.0/doorbell_21502358/', function (err, recent) {
                                    if (err) console.error(err);
                                    console.log(recent);
                                    setState('javascript.3.Giethoorn.CAM.Boot.LetztesBild', recent);
                                    setState('javascript.3.Giethoorn.CAM.Boot.SDate', formatDate(new Date(create), "TT.MM.JJ hh:mm"));
                                    const boot = fs.readFileSync('/iobroker/SmartHome/iobroker-data/files/ring.0/doorbell_21502358/' + recent);
                                    writeFile("vis.0", "/NL/01Boot.mp4", boot);
                                });
                            });
                            Die Fehlermeldung:
                            

                            23:01:30.974 info javascript.1 (16180) Stop script script.js.Giethoorn.Lastfile_Boot
                            23:01:30.970 info javascript.3 (13032) Stop script script.js.Giethoorn.Lastfile_Boot
                            23:01:30.989 info javascript.3 (13032) Start javascript script.js.Giethoorn.Lastfile_Boot
                            23:01:30.996 info javascript.3 (13032) script.js.Giethoorn.Lastfile_Boot: registered 1 subscription and 0 schedules
                            23:01:38.008 error host.DESKTOP-RQ1PD76(SmartHome) Caught by controller[0]: at script.js.Giethoorn.Lastfile_Boot:130:25
                            23:01:38.008 error host.DESKTOP-RQ1PD76(SmartHome) Caught by controller[0]: at script.js.Giethoorn.Lastfile_Boot:119:17

                            mickymM Offline
                            mickymM Offline
                            mickym
                            Most Active
                            schrieb am zuletzt editiert von mickym
                            #16

                            @michihorn

                            OK - bei dem Filter wird nicht mehr gemappt - wahrscheinlich braucht man den Filter und das Mapping.

                            
                            /*****Letztes Kamerabild Giethoorn Boot**************************************
                            **    Juli 2021
                            **    RING, Kamera
                            **    
                            **    Ermittelt das letzte gespeicherte Video MP4 von RING-FlootCam
                            **    geändert:26.07.21, 16.8.21
                            *******************************************************************************/
                            var zähler = 0;
                            var old_recent;
                            var old_create;
                            var create;
                            var path = require('path');
                            var fs = require('fs');
                            var request = require('request');
                             
                            on({id: 'ring.0.doorbell_21502358.created_at', change: "ne"}, async function (obj) {
                            var value = obj.state.val;
                            var oldValue = obj.oldState.val;
                            await wait(100);
                                old_recent = getState('Giethoorn.CAM.Boot.LetztesBild').val;
                                old_create = getState('ring.0.doorbell_21502358.History.created_at').val;
                                create = getState('ring.0.doorbell_21502358.created_at').val;
                                var getMostRecent = function (dir, cb) {
                                    var dir = path.resolve(dir);
                             
                                    var files = fs.readdir(dir, function (err, files) {
                                    var filesFiltered = files.filter(function (v) {
                                            var filepath = path.resolve(dir, v);
                                            if ( filepath.slice(-4) === '.mp4') return true;
                                        })
                                        var sorted = filesFiltered.map(function (v) {
                                            var filepath = path.resolve(dir, v);
                                            return {
                                                         name: v,
                                                         time: fs.statSync(filepath).mtime.getTime()
                                            };
                                            
                                        })
                                            .sort(function (a, b) { return b.time - a.time; })
                                            .map(function (v) { return v.name; });
                             
                                        if (sorted.length > 0) {
                                            cb(null, sorted[0]);
                                        } else {
                                            cb('Y U NO have files in this dir?');
                                        }
                                    })
                                }
                                getMostRecent('/iobroker/SmartHome/iobroker-data/files/ring.0/doorbell_21502358/', function (err, recent) {
                                    if (err) console.error(err);
                                    console.log(recent);
                                    setState('javascript.3.Giethoorn.CAM.Boot.LetztesBild', recent);
                                    setState('javascript.3.Giethoorn.CAM.Boot.SDate', formatDate(new Date(create), "TT.MM.JJ hh:mm"));
                                    const boot = fs.readFileSync('/iobroker/SmartHome/iobroker-data/files/ring.0/doorbell_21502358/' + recent);
                                    writeFile("vis.0", "/NL/01Boot.mp4", boot);
                                });
                            });
                             
                            
                            

                            Ich hab jetzt einfach noch ein gefiltertes Array erzeugt, dass dann mit den Objekten gemappt wird - und ins sorted Array geschrieben wird.

                            EDIT 23:28 - war noch ein Klammerfehler drin im Skript - so müsste es aber gehen.

                            Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                            M 1 Antwort Letzte Antwort
                            0
                            • mickymM mickym

                              @michihorn

                              OK - bei dem Filter wird nicht mehr gemappt - wahrscheinlich braucht man den Filter und das Mapping.

                              
                              /*****Letztes Kamerabild Giethoorn Boot**************************************
                              **    Juli 2021
                              **    RING, Kamera
                              **    
                              **    Ermittelt das letzte gespeicherte Video MP4 von RING-FlootCam
                              **    geändert:26.07.21, 16.8.21
                              *******************************************************************************/
                              var zähler = 0;
                              var old_recent;
                              var old_create;
                              var create;
                              var path = require('path');
                              var fs = require('fs');
                              var request = require('request');
                               
                              on({id: 'ring.0.doorbell_21502358.created_at', change: "ne"}, async function (obj) {
                              var value = obj.state.val;
                              var oldValue = obj.oldState.val;
                              await wait(100);
                                  old_recent = getState('Giethoorn.CAM.Boot.LetztesBild').val;
                                  old_create = getState('ring.0.doorbell_21502358.History.created_at').val;
                                  create = getState('ring.0.doorbell_21502358.created_at').val;
                                  var getMostRecent = function (dir, cb) {
                                      var dir = path.resolve(dir);
                               
                                      var files = fs.readdir(dir, function (err, files) {
                                      var filesFiltered = files.filter(function (v) {
                                              var filepath = path.resolve(dir, v);
                                              if ( filepath.slice(-4) === '.mp4') return true;
                                          })
                                          var sorted = filesFiltered.map(function (v) {
                                              var filepath = path.resolve(dir, v);
                                              return {
                                                           name: v,
                                                           time: fs.statSync(filepath).mtime.getTime()
                                              };
                                              
                                          })
                                              .sort(function (a, b) { return b.time - a.time; })
                                              .map(function (v) { return v.name; });
                               
                                          if (sorted.length > 0) {
                                              cb(null, sorted[0]);
                                          } else {
                                              cb('Y U NO have files in this dir?');
                                          }
                                      })
                                  }
                                  getMostRecent('/iobroker/SmartHome/iobroker-data/files/ring.0/doorbell_21502358/', function (err, recent) {
                                      if (err) console.error(err);
                                      console.log(recent);
                                      setState('javascript.3.Giethoorn.CAM.Boot.LetztesBild', recent);
                                      setState('javascript.3.Giethoorn.CAM.Boot.SDate', formatDate(new Date(create), "TT.MM.JJ hh:mm"));
                                      const boot = fs.readFileSync('/iobroker/SmartHome/iobroker-data/files/ring.0/doorbell_21502358/' + recent);
                                      writeFile("vis.0", "/NL/01Boot.mp4", boot);
                                  });
                              });
                               
                              
                              

                              Ich hab jetzt einfach noch ein gefiltertes Array erzeugt, dass dann mit den Objekten gemappt wird - und ins sorted Array geschrieben wird.

                              EDIT 23:28 - war noch ein Klammerfehler drin im Skript - so müsste es aber gehen.

                              M Online
                              M Online
                              michihorn
                              schrieb am zuletzt editiert von
                              #17

                              @mickym sagte in Neuste Datei (mp4) finden:

                              /Letztes Kamerabild Giethoorn Boot********************************* ** Juli 2021 ** RING, Kamera ** ** Ermittelt das letzte gespeicherte Video MP4 von RING-FlootCam ** geändert:26.07.21, 16.8.21 *******************************************************************************/ var zähler = 0; var old_recent; var old_create; var create; var path = require('path'); var fs = require('fs'); var request = require('request'); on({id: 'ring.0.doorbell_21502358.created_at', change: "ne"}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; await wait(100); old_recent = getState('Giethoorn.CAM.Boot.LetztesBild').val; old_create = getState('ring.0.doorbell_21502358.History.created_at').val; create = getState('ring.0.doorbell_21502358.created_at').val; var getMostRecent = function (dir, cb) { var dir = path.resolve(dir); var files = fs.readdir(dir, function (err, files) { var filesFiltered = files.filter(function (v) { var filepath = path.resolve(dir, v); if ( filepath.slice(-4) === '.mp4') return true; }) var sorted = filesFiltered.map(function (v) { var filepath = path.resolve(dir, v); return { name: v, time: fs.statSync(filepath).mtime.getTime() }; }) .sort(function (a, b) { return b.time - a.time; }) .map(function (v) { return v.name; }); if (sorted.length > 0) { cb(null, sorted[0]); } else { cb('Y U NO have files in this dir?'); } }) } getMostRecent('/iobroker/SmartHome/iobroker-data/files/ring.0/doorbell_21502358/', function (err, recent) { if (err) console.error(err); console.log(recent); setState('javascript.3.Giethoorn.CAM.Boot.LetztesBild', recent); setState('javascript.3.Giethoorn.CAM.Boot.SDate', formatDate(new Date(create), "TT.MM.JJ hh:mm")); const boot = fs.readFileSync('/iobroker/SmartHome/iobroker-data/files/ring.0/doorbell_21502358/' + recent); writeFile("vis.0", "/NL/01Boot.mp4", boot); }); });

                              Herzlichen Dank, das klappt :-)

                              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

                              804

                              Online

                              32.4k

                              Benutzer

                              81.5k

                              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