Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • 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
    18
    1
    704

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

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

Gelöst: Snapshot beim Klingeln in Iobroker Speichern

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
javascript
3 Beiträge 3 Kommentatoren 573 Aufrufe 4 Beobachtet
  • Ä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 Offline
    M Offline
    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

        Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

        Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

        Mit deinem Input könnte dieser Beitrag noch besser werden 💗

        Registrieren Anmelden
        Antworten
        • In einem neuen Thema antworten
        Anmelden zum Antworten
        • Älteste zuerst
        • Neuste zuerst
        • Meiste Stimmen


        Support us

        ioBroker
        Community Adapters
        Donate

        522

        Online

        32.7k

        Benutzer

        82.6k

        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