NEWS

Gelöst: Snapshot beim Klingeln in Iobroker Speichern


  • 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***** ");
    });
    
  • Starter

    @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.


Suggested Topics

  • 4
  • 5
  • 12
  • 32
  • 5
  • 3
  • 11
  • 4

2.2k
Online

35.2k
Users

41.1k
Topics

566.1k
Posts