Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Gelöst: Snapshot beim Klingeln in Iobroker Speichern

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Gelöst: Snapshot beim Klingeln in Iobroker Speichern

    This topic has been deleted. Only users with topic management privileges can see it.
    • M
      michihorn last edited by 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 Glasfaser 2 Replies Last reply Reply Quote 0
      • M
        MCU @michihorn last edited by

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

        1 Reply Last reply Reply Quote 0
        • Glasfaser
          Glasfaser @michihorn last edited by

          @michihorn

          Antwort siehe hier 😉

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

          1 Reply Last reply Reply Quote 0
          • First post
            Last post

          Support us

          ioBroker
          Community Adapters
          Donate

          494
          Online

          31.8k
          Users

          80.0k
          Topics

          1.3m
          Posts

          javascript
          3
          3
          501
          Loading More Posts
          • Oldest to Newest
          • Newest to Oldest
          • Most Votes
          Reply
          • Reply as topic
          Log in to reply
          Community
          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
          The ioBroker Community 2014-2023
          logo