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) Umbau von request auf httpGet für mehrere Snapshot

NEWS

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

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

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

(gelöst) Umbau von request auf httpGet für mehrere Snapshot

Geplant Angeheftet Gesperrt Verschoben JavaScript
6 Beiträge 3 Kommentatoren 626 Aufrufe 3 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.
  • K Offline
    K Offline
    kukoratsch
    schrieb am zuletzt editiert von kukoratsch
    #1

    Hallo zusammen,
    Ich nutze seit längerer Zeit Script von @Uhula

     
     
    // -------------------------------------------------------------------------
    // Dieses Script überwaht den Zustand eines Bewegungsmelders und speichert bei
    // Aktivierung ein Bild einer Überwachnungskamera in einem Vereichnis und sendet
    // dieses via Telegram.0-Adapter. Nach 10 Sek wird ein weiteres Bild erstellt und
    // gesendet.
    // Die Speicherung der Bilder erfolgt als "Stack", d.h. das aktuellste Bild bekommt
    // immer den Suffix "0" und es werden n Bilder mit den Suffixen 1..n-1 vorgehalten
    // Uhula 2017.11
    // -------------------------------------------------------------------------
    // -------------------------------------------------------------------------
    // Konfiguration
    // -------------------------------------------------------------------------
    // Objekt-ID des Bewegungsmelders
    const oidKlinkelShelly = "shelly.0.xxx.Relay0.Switch";
    // URL zur Kamera umn ein Image (jpg) zu erhalten
    const cam_url = "http://192.168.xx.xxx/cgi-bin/api.cgi?cmd=Snap&channel=0&rs=wuuPhkmUCeI9WG7C&user=admin&password=password";
    // Pfadangabe für die Speicherung der Bilder, der Pfad muss existieren
    const dest_path = '/opt/iobroker/iobroker-data/files/temp/';
    // Anzahl der Bilder, die vorgehalten werden sollen
    const imageCountMax = 8;
    // Prefix für die Bildnamen
    const imageNamePre = "Eingang";
     
    // -------------------------------------------------------------------------
    // Scriptteil
    // -------------------------------------------------------------------------
    var request = require('request');
    var fs = require('fs');
     
    // Bild an telegram schicken
    function sendImage (path) {
       try {
       var stats = fs.statSync(path);
       //var msg = formatDate(stats.birthtime,"DD.MM hh:mm:ss") + " Es hat geklingelt" // + path.substring(path.lastIndexOf('/')+1);
       var msg = formatDate(Date.now(),"DD.MM hh:mm:ss") + " Es hat geklingelt" // + path.substring(path.lastIndexOf('/')+1);
       sendTo('telegram.0', {
       text: path,
       caption: msg,
       disable_notification: true
       });
       }
       catch(err) { if (err.code != "ENOENT") log(err); }
    }
     
    // löscht eine Datei synchron (wartet auf das Ergebnis)
    function fsUnlinkSync(path) {
       try {
       var stats = fs.statSync(path);
       try { fs.unlinkSync(path); }
       catch(err) { if (err.code != "ENOENT") log(err); }
       }
       catch(err) { if (err.code != "ENOENT") log(err); }
    }
     
    // benennt eine Datei synchron um (wartet auf das Ergebnis)
    function fsRenameSync(oldPath, newPath) {
       try {
       var stats = fs.statSync(oldPath);
       try { fs.renameSync(oldPath, newPath); }
       catch(err) { if (err.code != "ENOENT") log(err); }
       }
       catch(err) { if (err.code != "ENOENT") log(err); }
    }
     
    // Bild speichern und senden
    function saveImage() {
       // Bild imageCountMax-1 löschen
       fsUnlinkSync( dest_path + imageNamePre + (imageCountMax-1) + ".jpg" );
       // Bilder 0..imageCountMax-2 umbenennen
       //for (var i=imageCountMax-2; i >= 0; i-- ) {
       //fsRenameSync(dest_path + imageNamePre + i + ".jpg", dest_path + imageNamePre + (i+1) + ".jpg");
       //}
       // Bild 0 löschen
       var fname = imageNamePre + "0.jpg";
       fsUnlinkSync( fname );
       // Bild holen und speichern
       request.get({url: cam_url, encoding: 'binary'}, function (err, response, body) {
       fs.writeFile(dest_path + fname, body, 'binary', function(err) {
       if (err) {
       log('Fehler beim Bild speichern: ' + err, 'warn');
       } else {
       // dem Filesystem 2 Sek Zeit zum Speichern lassen
       setTimeout(function() { sendImage(dest_path + fname); }, 2000);
       }
       });
       });
    }
    // sofort ein Bild senden und nach 10 Sek erneut
    function onEvent() {
       saveImage();
       //setTimeout(function() { saveImage(); }, 10 * 1000);
    }
     
    // Ereignisroutine
       //on({id: oidKlinkelShelly, val: true}, function (obj) {
       on({id: "shelly.0.SHSW-1#25A7FE#1.Relay0.Switch"/*Switch*/, change: "ne"}, function (obj){
       if (getState("shelly.0.SHSW-1#25A7FE#1.Relay0.Switch").val == true) {
           onEvent( obj );
       } else {
           console.log('Schreibt nicht');
       }
     
    });
    // manuelle Ausführung (Test)
     
    
    

    Habe heute auch auf JS v8.3.1 upgedated.
    Jetzt bekomme ich diese Fehlermeldung
    script.js.common.Bild_per_Telegramm_bei_Alarm: request package is deprecated - please use httpGet (or a stable lib like axios) instead!
    Die beiden Methoden hab ich ausprobiert, klappt aber nicht
    https://forum.iobroker.net/topic/75072/gelöst-request-auf-httpget-umstellen-für-snapshot/4
    Für Hilfe wäre ich dankbar.

    T 1 Antwort Letzte Antwort
    0
    • K kukoratsch

      Hallo zusammen,
      Ich nutze seit längerer Zeit Script von @Uhula

       
       
      // -------------------------------------------------------------------------
      // Dieses Script überwaht den Zustand eines Bewegungsmelders und speichert bei
      // Aktivierung ein Bild einer Überwachnungskamera in einem Vereichnis und sendet
      // dieses via Telegram.0-Adapter. Nach 10 Sek wird ein weiteres Bild erstellt und
      // gesendet.
      // Die Speicherung der Bilder erfolgt als "Stack", d.h. das aktuellste Bild bekommt
      // immer den Suffix "0" und es werden n Bilder mit den Suffixen 1..n-1 vorgehalten
      // Uhula 2017.11
      // -------------------------------------------------------------------------
      // -------------------------------------------------------------------------
      // Konfiguration
      // -------------------------------------------------------------------------
      // Objekt-ID des Bewegungsmelders
      const oidKlinkelShelly = "shelly.0.xxx.Relay0.Switch";
      // URL zur Kamera umn ein Image (jpg) zu erhalten
      const cam_url = "http://192.168.xx.xxx/cgi-bin/api.cgi?cmd=Snap&channel=0&rs=wuuPhkmUCeI9WG7C&user=admin&password=password";
      // Pfadangabe für die Speicherung der Bilder, der Pfad muss existieren
      const dest_path = '/opt/iobroker/iobroker-data/files/temp/';
      // Anzahl der Bilder, die vorgehalten werden sollen
      const imageCountMax = 8;
      // Prefix für die Bildnamen
      const imageNamePre = "Eingang";
       
      // -------------------------------------------------------------------------
      // Scriptteil
      // -------------------------------------------------------------------------
      var request = require('request');
      var fs = require('fs');
       
      // Bild an telegram schicken
      function sendImage (path) {
         try {
         var stats = fs.statSync(path);
         //var msg = formatDate(stats.birthtime,"DD.MM hh:mm:ss") + " Es hat geklingelt" // + path.substring(path.lastIndexOf('/')+1);
         var msg = formatDate(Date.now(),"DD.MM hh:mm:ss") + " Es hat geklingelt" // + path.substring(path.lastIndexOf('/')+1);
         sendTo('telegram.0', {
         text: path,
         caption: msg,
         disable_notification: true
         });
         }
         catch(err) { if (err.code != "ENOENT") log(err); }
      }
       
      // löscht eine Datei synchron (wartet auf das Ergebnis)
      function fsUnlinkSync(path) {
         try {
         var stats = fs.statSync(path);
         try { fs.unlinkSync(path); }
         catch(err) { if (err.code != "ENOENT") log(err); }
         }
         catch(err) { if (err.code != "ENOENT") log(err); }
      }
       
      // benennt eine Datei synchron um (wartet auf das Ergebnis)
      function fsRenameSync(oldPath, newPath) {
         try {
         var stats = fs.statSync(oldPath);
         try { fs.renameSync(oldPath, newPath); }
         catch(err) { if (err.code != "ENOENT") log(err); }
         }
         catch(err) { if (err.code != "ENOENT") log(err); }
      }
       
      // Bild speichern und senden
      function saveImage() {
         // Bild imageCountMax-1 löschen
         fsUnlinkSync( dest_path + imageNamePre + (imageCountMax-1) + ".jpg" );
         // Bilder 0..imageCountMax-2 umbenennen
         //for (var i=imageCountMax-2; i >= 0; i-- ) {
         //fsRenameSync(dest_path + imageNamePre + i + ".jpg", dest_path + imageNamePre + (i+1) + ".jpg");
         //}
         // Bild 0 löschen
         var fname = imageNamePre + "0.jpg";
         fsUnlinkSync( fname );
         // Bild holen und speichern
         request.get({url: cam_url, encoding: 'binary'}, function (err, response, body) {
         fs.writeFile(dest_path + fname, body, 'binary', function(err) {
         if (err) {
         log('Fehler beim Bild speichern: ' + err, 'warn');
         } else {
         // dem Filesystem 2 Sek Zeit zum Speichern lassen
         setTimeout(function() { sendImage(dest_path + fname); }, 2000);
         }
         });
         });
      }
      // sofort ein Bild senden und nach 10 Sek erneut
      function onEvent() {
         saveImage();
         //setTimeout(function() { saveImage(); }, 10 * 1000);
      }
       
      // Ereignisroutine
         //on({id: oidKlinkelShelly, val: true}, function (obj) {
         on({id: "shelly.0.SHSW-1#25A7FE#1.Relay0.Switch"/*Switch*/, change: "ne"}, function (obj){
         if (getState("shelly.0.SHSW-1#25A7FE#1.Relay0.Switch").val == true) {
             onEvent( obj );
         } else {
             console.log('Schreibt nicht');
         }
       
      });
      // manuelle Ausführung (Test)
       
      
      

      Habe heute auch auf JS v8.3.1 upgedated.
      Jetzt bekomme ich diese Fehlermeldung
      script.js.common.Bild_per_Telegramm_bei_Alarm: request package is deprecated - please use httpGet (or a stable lib like axios) instead!
      Die beiden Methoden hab ich ausprobiert, klappt aber nicht
      https://forum.iobroker.net/topic/75072/gelöst-request-auf-httpget-umstellen-für-snapshot/4
      Für Hilfe wäre ich dankbar.

      T Offline
      T Offline
      TT-Tom
      schrieb am zuletzt editiert von
      #2

      @kukoratsch
      was hast du probiert? zeige doch mal. dann kannst du es besser verstehen, als nur zu kopieren. Im Prinzip, ist es die selbe Konstellation wie bei dir.

      Gruß Tom
      https://github.com/tt-tom17
      Wenn meine Hilfe erfolgreich war, benutze bitte das Voting unten rechts im Beitrag

      NSPanel Script Wiki
      https://github.com/joBr99/nspanel-lovelace-ui/wiki

      NSPanel Adapter Wiki
      https://github.com/ticaki/ioBroker.nspanel-lovelace-ui/wiki

      K 1 Antwort Letzte Antwort
      0
      • T TT-Tom

        @kukoratsch
        was hast du probiert? zeige doch mal. dann kannst du es besser verstehen, als nur zu kopieren. Im Prinzip, ist es die selbe Konstellation wie bei dir.

        K Offline
        K Offline
        kukoratsch
        schrieb am zuletzt editiert von
        #3

        @tt-tom

        // -------------------------------------------------------------------------
        // Dieses Script überwaht den Zustand eines Bewegungsmelders und speichert bei
        // Aktivierung ein Bild einer Überwachnungskamera in einem Vereichnis und sendet
        // dieses via Telegram.0-Adapter. Nach 10 Sek wird ein weiteres Bild erstellt und
        // gesendet.
        // Die Speicherung der Bilder erfolgt als "Stack", d.h. das aktuellste Bild bekommt
        // immer den Suffix "0" und es werden n Bilder mit den Suffixen 1..n-1 vorgehalten
        // Uhula 2017.11
        // -------------------------------------------------------------------------
        // -------------------------------------------------------------------------
        // Konfiguration
        // -------------------------------------------------------------------------
           // Objekt-ID des Bewegungsmelders
        const oidLichtBewmelderTuer = "0_userdata.0.Alarm_Anlage.Kamera_Eingang";
           // URL zur Kamera umn ein Image (jpg) zu erhalten
        //const cam_url = "http://192.168.178.96:8085/tmpfs/auto.jpg?usr=xxx&pwd=xxx";
           // Pfadangabe für die Speicherung der Bilder, der Pfad muss existieren
        // const dest_path = '/opt/iobroker/iobroker-data/files/temp/alarm/';
        const dest_path = '/opt/iobroker/iobroker-data/tmp/';
           // Anzahl der Bilder, die vorgehalten werden sollen
        const imageCountMax = 50;                
           // Prefix für die Bildnamen
        const imageNamePre = "Enbruch_Kamera_Eingang_"; 
        // -------------------------------------------------------------------------
        // Scriptteil
        // -------------------------------------------------------------------------
        //var request = require('request');
        var fs      = require('fs');
        // Bild an telegram schicken 
        function sendImage (path) { 
            try {
                var stats = fs.statSync(path);
                var msg = formatDate(stats.birthtime,"DD.MM.YYYY hh:mm:ss") + " " + path.substring(path.lastIndexOf('/')+1);
                sendTo('telegram.0', {
                    text:                   path,
                    caption:                msg, 
                    disable_notification:   true
                });
            }
            catch(err) { if (err.code != "ENOENT") log(err); }     
        }
        // löscht eine Datei synchron (wartet auf das Ergebnis)
        function fsUnlinkSync(path) {
            try {
                var stats = fs.statSync(path);
                try { fs.unlinkSync(path); }
                catch(err) { if (err.code != "ENOENT") log(err); }     
            }
            catch(err) { if (err.code != "ENOENT") log(err); }
        }
        // benennt eine Datei synchron um (wartet auf das Ergebnis)
        function fsRenameSync(oldPath, newPath) {
            try {
                var stats = fs.statSync(oldPath);
                try { fs.renameSync(oldPath, newPath); }
                catch(err) { if (err.code != "ENOENT") log(err); }     
            }
            catch(err) { if (err.code != "ENOENT") log(err); }
        }
        // Bild speichern und senden
        function saveImage() {
            // Bild imageCountMax-1 löschen
            fsUnlinkSync( dest_path + imageNamePre + (imageCountMax-1) + ".jpg" );
            // Bilder 0..imageCountMax-2 umbenennen
            for (var i=imageCountMax-2; i >= 0; i-- ) { 
                fsRenameSync(dest_path + imageNamePre + i + ".jpg", dest_path + imageNamePre + (i+1) + ".jpg"); 
            }
            // Bild 0 löschen
            var fname = imageNamePre + "0.jpg";
            fsUnlinkSync( fname );
            
            // Bild holen und speichern
        httpGet('http://192.168.178.96:8085/tmpfs/auto.jpg?usr=xxx&pwd=xxx',{ responseType: 'arraybuffer' }, (err, response, body) => {
                fs.writeFile(dest_path + fname, body, 'binary', function(err) {
                    if (err) {
                        log('Fehler beim Bild speichern: ' + err, 'warn');
                    } else {
                        // dem Filesystem 2 Sek Zeit zum Speichern lassen
                        setTimeout(function() { sendImage(dest_path + fname); }, 1500); 
                    }
                }); 
            });
        }
        // sofort ein Bild senden und nach 10 Sek erneut
        function onEvent() {
        saveImage();
        setTimeout(function() { saveImage(); }, 2 * 1000);
        setTimeout(function() { saveImage(); }, 4 * 1000); 
        setTimeout(function() { saveImage(); }, 6 * 1000);   
        }
        // Ereignisroutine
        on({id: oidLichtBewmelderTuer, val: true}, function (obj) {
            onEvent( obj );
        });
        // manuelle Ausführung (Test)
        onEvent();
        
        

        Felermeldungen

        javascript.0	16:08:25.752	error	at Object.<anonymous> (script.js.common.Alarm.Kamera.Test_Kamera_Eingang_Bild_per_Telegramm_bei_Alarm:75:12)
        javascript.0	16:08:27.755	error	at Object.<anonymous> (script.js.common.Alarm.Kamera.Test_Kamera_Eingang_Bild_per_Telegramm_bei_Alarm:75:12)
        javascript.0	16:08:29.755	error	at Object.<anonymous> (script.js.common.Alarm.Kamera.Test_Kamera_Eingang_Bild_per_Telegramm_bei_Alarm:75:12)
        javascript.0	16:08:31.755	error	at Object.<anonymous> (script.js.common.Alarm.Kamera.Test_Kamera_Eingang_Bild_per_Telegramm_bei_Alarm:75:12)
        
        M T 2 Antworten Letzte Antwort
        0
        • K kukoratsch

          @tt-tom

          // -------------------------------------------------------------------------
          // Dieses Script überwaht den Zustand eines Bewegungsmelders und speichert bei
          // Aktivierung ein Bild einer Überwachnungskamera in einem Vereichnis und sendet
          // dieses via Telegram.0-Adapter. Nach 10 Sek wird ein weiteres Bild erstellt und
          // gesendet.
          // Die Speicherung der Bilder erfolgt als "Stack", d.h. das aktuellste Bild bekommt
          // immer den Suffix "0" und es werden n Bilder mit den Suffixen 1..n-1 vorgehalten
          // Uhula 2017.11
          // -------------------------------------------------------------------------
          // -------------------------------------------------------------------------
          // Konfiguration
          // -------------------------------------------------------------------------
             // Objekt-ID des Bewegungsmelders
          const oidLichtBewmelderTuer = "0_userdata.0.Alarm_Anlage.Kamera_Eingang";
             // URL zur Kamera umn ein Image (jpg) zu erhalten
          //const cam_url = "http://192.168.178.96:8085/tmpfs/auto.jpg?usr=xxx&pwd=xxx";
             // Pfadangabe für die Speicherung der Bilder, der Pfad muss existieren
          // const dest_path = '/opt/iobroker/iobroker-data/files/temp/alarm/';
          const dest_path = '/opt/iobroker/iobroker-data/tmp/';
             // Anzahl der Bilder, die vorgehalten werden sollen
          const imageCountMax = 50;                
             // Prefix für die Bildnamen
          const imageNamePre = "Enbruch_Kamera_Eingang_"; 
          // -------------------------------------------------------------------------
          // Scriptteil
          // -------------------------------------------------------------------------
          //var request = require('request');
          var fs      = require('fs');
          // Bild an telegram schicken 
          function sendImage (path) { 
              try {
                  var stats = fs.statSync(path);
                  var msg = formatDate(stats.birthtime,"DD.MM.YYYY hh:mm:ss") + " " + path.substring(path.lastIndexOf('/')+1);
                  sendTo('telegram.0', {
                      text:                   path,
                      caption:                msg, 
                      disable_notification:   true
                  });
              }
              catch(err) { if (err.code != "ENOENT") log(err); }     
          }
          // löscht eine Datei synchron (wartet auf das Ergebnis)
          function fsUnlinkSync(path) {
              try {
                  var stats = fs.statSync(path);
                  try { fs.unlinkSync(path); }
                  catch(err) { if (err.code != "ENOENT") log(err); }     
              }
              catch(err) { if (err.code != "ENOENT") log(err); }
          }
          // benennt eine Datei synchron um (wartet auf das Ergebnis)
          function fsRenameSync(oldPath, newPath) {
              try {
                  var stats = fs.statSync(oldPath);
                  try { fs.renameSync(oldPath, newPath); }
                  catch(err) { if (err.code != "ENOENT") log(err); }     
              }
              catch(err) { if (err.code != "ENOENT") log(err); }
          }
          // Bild speichern und senden
          function saveImage() {
              // Bild imageCountMax-1 löschen
              fsUnlinkSync( dest_path + imageNamePre + (imageCountMax-1) + ".jpg" );
              // Bilder 0..imageCountMax-2 umbenennen
              for (var i=imageCountMax-2; i >= 0; i-- ) { 
                  fsRenameSync(dest_path + imageNamePre + i + ".jpg", dest_path + imageNamePre + (i+1) + ".jpg"); 
              }
              // Bild 0 löschen
              var fname = imageNamePre + "0.jpg";
              fsUnlinkSync( fname );
              
              // Bild holen und speichern
          httpGet('http://192.168.178.96:8085/tmpfs/auto.jpg?usr=xxx&pwd=xxx',{ responseType: 'arraybuffer' }, (err, response, body) => {
                  fs.writeFile(dest_path + fname, body, 'binary', function(err) {
                      if (err) {
                          log('Fehler beim Bild speichern: ' + err, 'warn');
                      } else {
                          // dem Filesystem 2 Sek Zeit zum Speichern lassen
                          setTimeout(function() { sendImage(dest_path + fname); }, 1500); 
                      }
                  }); 
              });
          }
          // sofort ein Bild senden und nach 10 Sek erneut
          function onEvent() {
          saveImage();
          setTimeout(function() { saveImage(); }, 2 * 1000);
          setTimeout(function() { saveImage(); }, 4 * 1000); 
          setTimeout(function() { saveImage(); }, 6 * 1000);   
          }
          // Ereignisroutine
          on({id: oidLichtBewmelderTuer, val: true}, function (obj) {
              onEvent( obj );
          });
          // manuelle Ausführung (Test)
          onEvent();
          
          

          Felermeldungen

          javascript.0	16:08:25.752	error	at Object.<anonymous> (script.js.common.Alarm.Kamera.Test_Kamera_Eingang_Bild_per_Telegramm_bei_Alarm:75:12)
          javascript.0	16:08:27.755	error	at Object.<anonymous> (script.js.common.Alarm.Kamera.Test_Kamera_Eingang_Bild_per_Telegramm_bei_Alarm:75:12)
          javascript.0	16:08:29.755	error	at Object.<anonymous> (script.js.common.Alarm.Kamera.Test_Kamera_Eingang_Bild_per_Telegramm_bei_Alarm:75:12)
          javascript.0	16:08:31.755	error	at Object.<anonymous> (script.js.common.Alarm.Kamera.Test_Kamera_Eingang_Bild_per_Telegramm_bei_Alarm:75:12)
          
          M Online
          M Online
          MCU
          schrieb am zuletzt editiert von
          #4

          @kukoratsch Und so?
          Zeile 73

          httpGet('http://192.168.178.96:8085/tmpfs/auto.jpg?usr=xxx&pwd=xxx',{ responseType: 'arraybuffer' }, (err, response) => {
                  fs.writeFile(dest_path + fname, response.data, 'binary', function(err) {
          

          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
          • K kukoratsch

            @tt-tom

            // -------------------------------------------------------------------------
            // Dieses Script überwaht den Zustand eines Bewegungsmelders und speichert bei
            // Aktivierung ein Bild einer Überwachnungskamera in einem Vereichnis und sendet
            // dieses via Telegram.0-Adapter. Nach 10 Sek wird ein weiteres Bild erstellt und
            // gesendet.
            // Die Speicherung der Bilder erfolgt als "Stack", d.h. das aktuellste Bild bekommt
            // immer den Suffix "0" und es werden n Bilder mit den Suffixen 1..n-1 vorgehalten
            // Uhula 2017.11
            // -------------------------------------------------------------------------
            // -------------------------------------------------------------------------
            // Konfiguration
            // -------------------------------------------------------------------------
               // Objekt-ID des Bewegungsmelders
            const oidLichtBewmelderTuer = "0_userdata.0.Alarm_Anlage.Kamera_Eingang";
               // URL zur Kamera umn ein Image (jpg) zu erhalten
            //const cam_url = "http://192.168.178.96:8085/tmpfs/auto.jpg?usr=xxx&pwd=xxx";
               // Pfadangabe für die Speicherung der Bilder, der Pfad muss existieren
            // const dest_path = '/opt/iobroker/iobroker-data/files/temp/alarm/';
            const dest_path = '/opt/iobroker/iobroker-data/tmp/';
               // Anzahl der Bilder, die vorgehalten werden sollen
            const imageCountMax = 50;                
               // Prefix für die Bildnamen
            const imageNamePre = "Enbruch_Kamera_Eingang_"; 
            // -------------------------------------------------------------------------
            // Scriptteil
            // -------------------------------------------------------------------------
            //var request = require('request');
            var fs      = require('fs');
            // Bild an telegram schicken 
            function sendImage (path) { 
                try {
                    var stats = fs.statSync(path);
                    var msg = formatDate(stats.birthtime,"DD.MM.YYYY hh:mm:ss") + " " + path.substring(path.lastIndexOf('/')+1);
                    sendTo('telegram.0', {
                        text:                   path,
                        caption:                msg, 
                        disable_notification:   true
                    });
                }
                catch(err) { if (err.code != "ENOENT") log(err); }     
            }
            // löscht eine Datei synchron (wartet auf das Ergebnis)
            function fsUnlinkSync(path) {
                try {
                    var stats = fs.statSync(path);
                    try { fs.unlinkSync(path); }
                    catch(err) { if (err.code != "ENOENT") log(err); }     
                }
                catch(err) { if (err.code != "ENOENT") log(err); }
            }
            // benennt eine Datei synchron um (wartet auf das Ergebnis)
            function fsRenameSync(oldPath, newPath) {
                try {
                    var stats = fs.statSync(oldPath);
                    try { fs.renameSync(oldPath, newPath); }
                    catch(err) { if (err.code != "ENOENT") log(err); }     
                }
                catch(err) { if (err.code != "ENOENT") log(err); }
            }
            // Bild speichern und senden
            function saveImage() {
                // Bild imageCountMax-1 löschen
                fsUnlinkSync( dest_path + imageNamePre + (imageCountMax-1) + ".jpg" );
                // Bilder 0..imageCountMax-2 umbenennen
                for (var i=imageCountMax-2; i >= 0; i-- ) { 
                    fsRenameSync(dest_path + imageNamePre + i + ".jpg", dest_path + imageNamePre + (i+1) + ".jpg"); 
                }
                // Bild 0 löschen
                var fname = imageNamePre + "0.jpg";
                fsUnlinkSync( fname );
                
                // Bild holen und speichern
            httpGet('http://192.168.178.96:8085/tmpfs/auto.jpg?usr=xxx&pwd=xxx',{ responseType: 'arraybuffer' }, (err, response, body) => {
                    fs.writeFile(dest_path + fname, body, 'binary', function(err) {
                        if (err) {
                            log('Fehler beim Bild speichern: ' + err, 'warn');
                        } else {
                            // dem Filesystem 2 Sek Zeit zum Speichern lassen
                            setTimeout(function() { sendImage(dest_path + fname); }, 1500); 
                        }
                    }); 
                });
            }
            // sofort ein Bild senden und nach 10 Sek erneut
            function onEvent() {
            saveImage();
            setTimeout(function() { saveImage(); }, 2 * 1000);
            setTimeout(function() { saveImage(); }, 4 * 1000); 
            setTimeout(function() { saveImage(); }, 6 * 1000);   
            }
            // Ereignisroutine
            on({id: oidLichtBewmelderTuer, val: true}, function (obj) {
                onEvent( obj );
            });
            // manuelle Ausführung (Test)
            onEvent();
            
            

            Felermeldungen

            javascript.0	16:08:25.752	error	at Object.<anonymous> (script.js.common.Alarm.Kamera.Test_Kamera_Eingang_Bild_per_Telegramm_bei_Alarm:75:12)
            javascript.0	16:08:27.755	error	at Object.<anonymous> (script.js.common.Alarm.Kamera.Test_Kamera_Eingang_Bild_per_Telegramm_bei_Alarm:75:12)
            javascript.0	16:08:29.755	error	at Object.<anonymous> (script.js.common.Alarm.Kamera.Test_Kamera_Eingang_Bild_per_Telegramm_bei_Alarm:75:12)
            javascript.0	16:08:31.755	error	at Object.<anonymous> (script.js.common.Alarm.Kamera.Test_Kamera_Eingang_Bild_per_Telegramm_bei_Alarm:75:12)
            
            T Offline
            T Offline
            TT-Tom
            schrieb am zuletzt editiert von TT-Tom
            #5

            @kukoratsch

            der Anfang war doch schon mal richtig, nur das es den Parameter body nicht mehr gibt, dass ist jetzt alles in response enthalten.
            du musst also body in response.dataändern
            hier mal der Link zur Doku.

            Edit: okay, kannste von MCU kopieren

            Gruß Tom
            https://github.com/tt-tom17
            Wenn meine Hilfe erfolgreich war, benutze bitte das Voting unten rechts im Beitrag

            NSPanel Script Wiki
            https://github.com/joBr99/nspanel-lovelace-ui/wiki

            NSPanel Adapter Wiki
            https://github.com/ticaki/ioBroker.nspanel-lovelace-ui/wiki

            K 1 Antwort Letzte Antwort
            0
            • T TT-Tom

              @kukoratsch

              der Anfang war doch schon mal richtig, nur das es den Parameter body nicht mehr gibt, dass ist jetzt alles in response enthalten.
              du musst also body in response.dataändern
              hier mal der Link zur Doku.

              Edit: okay, kannste von MCU kopieren

              K Offline
              K Offline
              kukoratsch
              schrieb am zuletzt editiert von
              #6

              @TT-Tom @MCU
              Dankeschön Funktioniert !!!

              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

              972

              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