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. Gelöst: Snapshot beim Klingeln in Iobroker Speichern

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    6
    1
    84

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

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

Gelöst: Snapshot beim Klingeln in Iobroker Speichern

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
javascript
3 Beiträge 3 Kommentatoren 562 Aufrufe 4 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 Online
    M Online
    michihorn
    schrieb am zuletzt editiert von michihorn
    #1

    Hallöchen
    wie kann ich Kamera Snapshots so speichern, dass ich sie z.B. in einem Iframe im VIS darstellen kann?
    Hier ein Auszug aus meinem Script:

    var source_url = 'http://192.168.178.xxx:88/cgi-bin/CGIProxy.fcgi?cmd=snapPicture2&usr=hxxn&pwd=rxxxxng04', //Adresse der IpKamera
        dest_path = '/iobroker/iobroker-data/klingelbild/';
    
    on({ id: idKlingel, val: "ding" }, function (obj) {
        var datenpunkt = obj.common.name;
        var geraetename = datenpunkt.substring(0, datenpunkt.indexOf(".Kind")); //.Kind abschneiden
        var ereignis_text = zeit_umwandeln(obj.newState.ts) + ' ' + geraetename;
        setState('Klingel.Ereignisprotokoll.Ereignis', ereignis_text.toString());
        if (logging) log('Ereignisliste: Auslöser ' + zeit_umwandeln(obj.newState.ts) + ' ' + geraetename);
        request.get({ url: source_url, encoding: 'binary' }, function (err, response, body) {
                 fs.writeFile(dest_path +'snapshot.jpg', body, 'binary', function (err) {
    

    Das ist die Fehlermeldung

    13:01:48.145	error	javascript.3 (744) script.js.Klingel.Klingel_Haustuer: {'errno':-4058,'code':'ENOENT','syscall':'open','path':'C:\\iobroker\\iobroker-data\\klingelbild\\snapshot.jpg'}
    

    Gruß Michael

    Edit: Hier ist die Lösung

    /*****Haustür Klingel*****************
    **    August 2020
    **    RING, RING-Adapter, Kamera
    **    Grundlage ein Script von Pix
    **    
    **    geä:21.09.20
    ******************************************************/
    var logging = true;
    var idKlingel = "ring.0.doorbell_46904079.kind";
    var anzahlbesucher
    var jetzt = new Date();
    var request = require('request');
    var fs = require('fs');
    var Stunde = jetzt.getHours();
    var Minute = jetzt.getMinutes();
    createState('Klingel.HaustuerZaehler.Tag', 0, { read: true, write: true, type: 'number', name: "Haustuer" });
    createState('Klingel.Ereignisprotokoll.Ereignisliste', { name: 'Ereignisprotokoll - Liste der Ereignisse', type: 'string' });
    createState('Klingel.Ereignisprotokoll.Ereignis', { name: 'Ereignisprotokoll - Auslösendes Ereignis', type: 'string' });
    var value = getState(idKlingel).val
    var request = require('request');
    
    
    on({ id: idKlingel, val: "ding" }, function (obj) {
        var datenpunkt = obj.common.name;
        var geraetename = datenpunkt.substring(0, datenpunkt.indexOf(".Kind")); //.Kind abschneiden
        var ereignis_text = zeit_umwandeln(obj.newState.ts) + ' ' + geraetename;
        setState('Klingel.Ereignisprotokoll.Ereignis', ereignis_text.toString());
        if (logging) log('Ereignisliste: Auslöser ' + zeit_umwandeln(obj.newState.ts) + ' ' + geraetename);
    request({url: "http://192.168.178.xxx:88/cgi-bin/CGIProxy.fcgi?cmd=snapPicture2&usr=xxx&pwd=xxxxxxx", encoding: null,
      },
      (error, response, body) => {
        if (!error && body) {
          writeFile("vis.0", "/klingelbild/Klingel.jpg", body);
        }
      }
    );
    });
    
    //Ereignisliste erstellen___________________________________________________________________________________________________
    function ereignis(text) {
        // text = text.toString();
        if (logging) log("Ereignisprotokoll " + text);
        var ereignisStr = getState('javascript.3.Klingel.Ereignisprotokoll.Ereignisliste').val;
        var ereignisArr;
    
        if (ereignisStr) {
            if (ereignisStr == "<ul><li></li></ul>") {
                ereignisArr = [];
            } else {
                ereignisArr = ereignisStr.replace(/<ul><li>/, "").replace(/<\/li><\/ul>/, "").split("</li><li>");
            }
        } else {
            ereignisArr = [];
        }
        ereignisArr = ereignisArr.reverse();
        ereignisArr.push(text);
        ereignisArr.reverse().splice(20); // Liste auf 20 Einträge beschränken
        var str = ereignisArr.join("</li><li>");
        setState('javascript.3.Klingel.Ereignisprotokoll.Ereignisliste', "<ul><li>" + str + "</li></ul>");
    }
    on("javascript.3.Klingel.Ereignisprotokoll.Ereignis", function (data) {
        if (logging) log('Ereignis ' + data.newState.val + ' übergeben');
        ereignis(data.newState.val);
    });
    
    function zeit_umwandeln(unix_zeit) {
        var nz = new Date(unix_zeit);
        var stunden = nz.getHours() < 10 ? '0' + nz.getHours() : nz.getHours();
        var minuten = nz.getMinutes() < 10 ? '0' + nz.getMinutes() : nz.getMinutes();
        var sekunden = nz.getSeconds() < 10 ? '0' + nz.getSeconds() : nz.getSeconds();
        neue_zeit = stunden + ':' + minuten + ':' + sekunden + ' Uhr';
        return (neue_zeit);
    }
    //Klingeln_____________________________________________________________________________________________________________________
    on({ id: idKlingel }, (obj) => {
        let Haustuer = obj.state.val;
        let oldHaustuer = obj.oldState.val;
        let text = '';
        if (Haustuer == 'ding') {
            text = '\ud83d\udd14 \ud83d\udd14 Ding Dong, es klingelt und es ist keiner zu Hause!';
            console.log(text);
            anzahlbesucher = getState("Klingel.HaustuerZaehler.Tag").val;
            anzahlbesucher = anzahlbesucher + 1;
            log(anzahlbesucher);
            setState("javascript.3.Klingel.HaustuerZaehler.Tag", anzahlbesucher);
            var ereignis_text = zeit_umwandeln(obj.newState.ts);
            setState('javascript.3.Klingel.Ereignisprotokoll.Ereignis', ereignis_text.toString());
            if (logging) log('Ereignisliste: Auslöser ' + zeit_umwandeln(obj.newState.ts));
        }
    });
    
    //Zähler zurücksetzen
    on({ time: { hour: 23, minute: 59 } }, function () {
        setState("Klingel.HaustuerZaehler.Tag", 0);
        setState("Klingel.Ereignisprotokoll.Ereignis", "");
        setState("Klingel.Ereignisprotokoll.Ereignisliste", "");
        anzahlbesucher = 0;
        log("*****Klingelereignisse gelöscht***** ");
    });
    
    M GlasfaserG 2 Antworten Letzte Antwort
    0
    • M michihorn

      Hallöchen
      wie kann ich Kamera Snapshots so speichern, dass ich sie z.B. in einem Iframe im VIS darstellen kann?
      Hier ein Auszug aus meinem Script:

      var source_url = 'http://192.168.178.xxx:88/cgi-bin/CGIProxy.fcgi?cmd=snapPicture2&usr=hxxn&pwd=rxxxxng04', //Adresse der IpKamera
          dest_path = '/iobroker/iobroker-data/klingelbild/';
      
      on({ id: idKlingel, val: "ding" }, function (obj) {
          var datenpunkt = obj.common.name;
          var geraetename = datenpunkt.substring(0, datenpunkt.indexOf(".Kind")); //.Kind abschneiden
          var ereignis_text = zeit_umwandeln(obj.newState.ts) + ' ' + geraetename;
          setState('Klingel.Ereignisprotokoll.Ereignis', ereignis_text.toString());
          if (logging) log('Ereignisliste: Auslöser ' + zeit_umwandeln(obj.newState.ts) + ' ' + geraetename);
          request.get({ url: source_url, encoding: 'binary' }, function (err, response, body) {
                   fs.writeFile(dest_path +'snapshot.jpg', body, 'binary', function (err) {
      

      Das ist die Fehlermeldung

      13:01:48.145	error	javascript.3 (744) script.js.Klingel.Klingel_Haustuer: {'errno':-4058,'code':'ENOENT','syscall':'open','path':'C:\\iobroker\\iobroker-data\\klingelbild\\snapshot.jpg'}
      

      Gruß Michael

      Edit: Hier ist die Lösung

      /*****Haustür Klingel*****************
      **    August 2020
      **    RING, RING-Adapter, Kamera
      **    Grundlage ein Script von Pix
      **    
      **    geä:21.09.20
      ******************************************************/
      var logging = true;
      var idKlingel = "ring.0.doorbell_46904079.kind";
      var anzahlbesucher
      var jetzt = new Date();
      var request = require('request');
      var fs = require('fs');
      var Stunde = jetzt.getHours();
      var Minute = jetzt.getMinutes();
      createState('Klingel.HaustuerZaehler.Tag', 0, { read: true, write: true, type: 'number', name: "Haustuer" });
      createState('Klingel.Ereignisprotokoll.Ereignisliste', { name: 'Ereignisprotokoll - Liste der Ereignisse', type: 'string' });
      createState('Klingel.Ereignisprotokoll.Ereignis', { name: 'Ereignisprotokoll - Auslösendes Ereignis', type: 'string' });
      var value = getState(idKlingel).val
      var request = require('request');
      
      
      on({ id: idKlingel, val: "ding" }, function (obj) {
          var datenpunkt = obj.common.name;
          var geraetename = datenpunkt.substring(0, datenpunkt.indexOf(".Kind")); //.Kind abschneiden
          var ereignis_text = zeit_umwandeln(obj.newState.ts) + ' ' + geraetename;
          setState('Klingel.Ereignisprotokoll.Ereignis', ereignis_text.toString());
          if (logging) log('Ereignisliste: Auslöser ' + zeit_umwandeln(obj.newState.ts) + ' ' + geraetename);
      request({url: "http://192.168.178.xxx:88/cgi-bin/CGIProxy.fcgi?cmd=snapPicture2&usr=xxx&pwd=xxxxxxx", encoding: null,
        },
        (error, response, body) => {
          if (!error && body) {
            writeFile("vis.0", "/klingelbild/Klingel.jpg", body);
          }
        }
      );
      });
      
      //Ereignisliste erstellen___________________________________________________________________________________________________
      function ereignis(text) {
          // text = text.toString();
          if (logging) log("Ereignisprotokoll " + text);
          var ereignisStr = getState('javascript.3.Klingel.Ereignisprotokoll.Ereignisliste').val;
          var ereignisArr;
      
          if (ereignisStr) {
              if (ereignisStr == "<ul><li></li></ul>") {
                  ereignisArr = [];
              } else {
                  ereignisArr = ereignisStr.replace(/<ul><li>/, "").replace(/<\/li><\/ul>/, "").split("</li><li>");
              }
          } else {
              ereignisArr = [];
          }
          ereignisArr = ereignisArr.reverse();
          ereignisArr.push(text);
          ereignisArr.reverse().splice(20); // Liste auf 20 Einträge beschränken
          var str = ereignisArr.join("</li><li>");
          setState('javascript.3.Klingel.Ereignisprotokoll.Ereignisliste', "<ul><li>" + str + "</li></ul>");
      }
      on("javascript.3.Klingel.Ereignisprotokoll.Ereignis", function (data) {
          if (logging) log('Ereignis ' + data.newState.val + ' übergeben');
          ereignis(data.newState.val);
      });
      
      function zeit_umwandeln(unix_zeit) {
          var nz = new Date(unix_zeit);
          var stunden = nz.getHours() < 10 ? '0' + nz.getHours() : nz.getHours();
          var minuten = nz.getMinutes() < 10 ? '0' + nz.getMinutes() : nz.getMinutes();
          var sekunden = nz.getSeconds() < 10 ? '0' + nz.getSeconds() : nz.getSeconds();
          neue_zeit = stunden + ':' + minuten + ':' + sekunden + ' Uhr';
          return (neue_zeit);
      }
      //Klingeln_____________________________________________________________________________________________________________________
      on({ id: idKlingel }, (obj) => {
          let Haustuer = obj.state.val;
          let oldHaustuer = obj.oldState.val;
          let text = '';
          if (Haustuer == 'ding') {
              text = '\ud83d\udd14 \ud83d\udd14 Ding Dong, es klingelt und es ist keiner zu Hause!';
              console.log(text);
              anzahlbesucher = getState("Klingel.HaustuerZaehler.Tag").val;
              anzahlbesucher = anzahlbesucher + 1;
              log(anzahlbesucher);
              setState("javascript.3.Klingel.HaustuerZaehler.Tag", anzahlbesucher);
              var ereignis_text = zeit_umwandeln(obj.newState.ts);
              setState('javascript.3.Klingel.Ereignisprotokoll.Ereignis', ereignis_text.toString());
              if (logging) log('Ereignisliste: Auslöser ' + zeit_umwandeln(obj.newState.ts));
          }
      });
      
      //Zähler zurücksetzen
      on({ time: { hour: 23, minute: 59 } }, function () {
          setState("Klingel.HaustuerZaehler.Tag", 0);
          setState("Klingel.Ereignisprotokoll.Ereignis", "");
          setState("Klingel.Ereignisprotokoll.Ereignisliste", "");
          anzahlbesucher = 0;
          log("*****Klingelereignisse gelöscht***** ");
      });
      
      M Offline
      M Offline
      MCU
      schrieb am zuletzt editiert von
      #2

      @michihorn
      https://forum.iobroker.net/topic/35997/vis-fritzbox-anrufer-bild-mit-festem-namen-aktualisieren/6

      SPOILER Funktion Bildinhalt (Speicher_verzeichnis):

      Da mal rein schauen.

      NUC i7 64GB mit Proxmox ---- Jarvis Infos Aktualisierungen der Doku auf Instagram verfolgen -> mcuiobroker Instagram
      Wenn Euch mein Vorschlag geholfen hat, bitte rechts "^" klicken.

      1 Antwort Letzte Antwort
      0
      • M michihorn

        Hallöchen
        wie kann ich Kamera Snapshots so speichern, dass ich sie z.B. in einem Iframe im VIS darstellen kann?
        Hier ein Auszug aus meinem Script:

        var source_url = 'http://192.168.178.xxx:88/cgi-bin/CGIProxy.fcgi?cmd=snapPicture2&usr=hxxn&pwd=rxxxxng04', //Adresse der IpKamera
            dest_path = '/iobroker/iobroker-data/klingelbild/';
        
        on({ id: idKlingel, val: "ding" }, function (obj) {
            var datenpunkt = obj.common.name;
            var geraetename = datenpunkt.substring(0, datenpunkt.indexOf(".Kind")); //.Kind abschneiden
            var ereignis_text = zeit_umwandeln(obj.newState.ts) + ' ' + geraetename;
            setState('Klingel.Ereignisprotokoll.Ereignis', ereignis_text.toString());
            if (logging) log('Ereignisliste: Auslöser ' + zeit_umwandeln(obj.newState.ts) + ' ' + geraetename);
            request.get({ url: source_url, encoding: 'binary' }, function (err, response, body) {
                     fs.writeFile(dest_path +'snapshot.jpg', body, 'binary', function (err) {
        

        Das ist die Fehlermeldung

        13:01:48.145	error	javascript.3 (744) script.js.Klingel.Klingel_Haustuer: {'errno':-4058,'code':'ENOENT','syscall':'open','path':'C:\\iobroker\\iobroker-data\\klingelbild\\snapshot.jpg'}
        

        Gruß Michael

        Edit: Hier ist die Lösung

        /*****Haustür Klingel*****************
        **    August 2020
        **    RING, RING-Adapter, Kamera
        **    Grundlage ein Script von Pix
        **    
        **    geä:21.09.20
        ******************************************************/
        var logging = true;
        var idKlingel = "ring.0.doorbell_46904079.kind";
        var anzahlbesucher
        var jetzt = new Date();
        var request = require('request');
        var fs = require('fs');
        var Stunde = jetzt.getHours();
        var Minute = jetzt.getMinutes();
        createState('Klingel.HaustuerZaehler.Tag', 0, { read: true, write: true, type: 'number', name: "Haustuer" });
        createState('Klingel.Ereignisprotokoll.Ereignisliste', { name: 'Ereignisprotokoll - Liste der Ereignisse', type: 'string' });
        createState('Klingel.Ereignisprotokoll.Ereignis', { name: 'Ereignisprotokoll - Auslösendes Ereignis', type: 'string' });
        var value = getState(idKlingel).val
        var request = require('request');
        
        
        on({ id: idKlingel, val: "ding" }, function (obj) {
            var datenpunkt = obj.common.name;
            var geraetename = datenpunkt.substring(0, datenpunkt.indexOf(".Kind")); //.Kind abschneiden
            var ereignis_text = zeit_umwandeln(obj.newState.ts) + ' ' + geraetename;
            setState('Klingel.Ereignisprotokoll.Ereignis', ereignis_text.toString());
            if (logging) log('Ereignisliste: Auslöser ' + zeit_umwandeln(obj.newState.ts) + ' ' + geraetename);
        request({url: "http://192.168.178.xxx:88/cgi-bin/CGIProxy.fcgi?cmd=snapPicture2&usr=xxx&pwd=xxxxxxx", encoding: null,
          },
          (error, response, body) => {
            if (!error && body) {
              writeFile("vis.0", "/klingelbild/Klingel.jpg", body);
            }
          }
        );
        });
        
        //Ereignisliste erstellen___________________________________________________________________________________________________
        function ereignis(text) {
            // text = text.toString();
            if (logging) log("Ereignisprotokoll " + text);
            var ereignisStr = getState('javascript.3.Klingel.Ereignisprotokoll.Ereignisliste').val;
            var ereignisArr;
        
            if (ereignisStr) {
                if (ereignisStr == "<ul><li></li></ul>") {
                    ereignisArr = [];
                } else {
                    ereignisArr = ereignisStr.replace(/<ul><li>/, "").replace(/<\/li><\/ul>/, "").split("</li><li>");
                }
            } else {
                ereignisArr = [];
            }
            ereignisArr = ereignisArr.reverse();
            ereignisArr.push(text);
            ereignisArr.reverse().splice(20); // Liste auf 20 Einträge beschränken
            var str = ereignisArr.join("</li><li>");
            setState('javascript.3.Klingel.Ereignisprotokoll.Ereignisliste', "<ul><li>" + str + "</li></ul>");
        }
        on("javascript.3.Klingel.Ereignisprotokoll.Ereignis", function (data) {
            if (logging) log('Ereignis ' + data.newState.val + ' übergeben');
            ereignis(data.newState.val);
        });
        
        function zeit_umwandeln(unix_zeit) {
            var nz = new Date(unix_zeit);
            var stunden = nz.getHours() < 10 ? '0' + nz.getHours() : nz.getHours();
            var minuten = nz.getMinutes() < 10 ? '0' + nz.getMinutes() : nz.getMinutes();
            var sekunden = nz.getSeconds() < 10 ? '0' + nz.getSeconds() : nz.getSeconds();
            neue_zeit = stunden + ':' + minuten + ':' + sekunden + ' Uhr';
            return (neue_zeit);
        }
        //Klingeln_____________________________________________________________________________________________________________________
        on({ id: idKlingel }, (obj) => {
            let Haustuer = obj.state.val;
            let oldHaustuer = obj.oldState.val;
            let text = '';
            if (Haustuer == 'ding') {
                text = '\ud83d\udd14 \ud83d\udd14 Ding Dong, es klingelt und es ist keiner zu Hause!';
                console.log(text);
                anzahlbesucher = getState("Klingel.HaustuerZaehler.Tag").val;
                anzahlbesucher = anzahlbesucher + 1;
                log(anzahlbesucher);
                setState("javascript.3.Klingel.HaustuerZaehler.Tag", anzahlbesucher);
                var ereignis_text = zeit_umwandeln(obj.newState.ts);
                setState('javascript.3.Klingel.Ereignisprotokoll.Ereignis', ereignis_text.toString());
                if (logging) log('Ereignisliste: Auslöser ' + zeit_umwandeln(obj.newState.ts));
            }
        });
        
        //Zähler zurücksetzen
        on({ time: { hour: 23, minute: 59 } }, function () {
            setState("Klingel.HaustuerZaehler.Tag", 0);
            setState("Klingel.Ereignisprotokoll.Ereignis", "");
            setState("Klingel.Ereignisprotokoll.Ereignisliste", "");
            anzahlbesucher = 0;
            log("*****Klingelereignisse gelöscht***** ");
        });
        
        GlasfaserG Offline
        GlasfaserG Offline
        Glasfaser
        schrieb am zuletzt editiert von
        #3

        @michihorn

        Antwort siehe hier ;)

        https://forum.iobroker.net/topic/37450/speicherpfad-in-iobroker

        Synology 918+ 16GB - ioBroker in Docker v9 , VISO auf Trekstor Primebook C13 13,3" , Hikvision Domkameras mit Surveillance Station .. CCU RaspberryMatic in Synology VM .. Zigbee CC2538+CC2592 .. Sonoff .. KNX .. Modbus ..

        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

        546

        Online

        32.7k

        Benutzer

        82.4k

        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