Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Error/Bug
    4. [gelöst]Fehler seit Javascript Update beim speichern vom Webcam Bild

    NEWS

    • 15. 05. Wartungsarbeiten am ioBroker Forum

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    [gelöst]Fehler seit Javascript Update beim speichern vom Webcam Bild

    This topic has been deleted. Only users with topic management privileges can see it.
    • coyote
      coyote Most Active last edited by

      Seit dem Update bekomme ich Fehler im Log beim abspeichern meines Webcam Bildes

      Hier das Log und das Script dazu. Hat vorher ohne weiteres funktioniert.

      // Foto an Telegram senden, wenn geklingelt wird oder wenn von Telegram angefragt wird.
      
      var source_url = "http://XXXXXXXXXX/cgi-bin/CGIProxy.fcgi?cmd=snapPicture2&usr=admin&pwd=XXXXXXX",
          dest_path = '/opt/iobroker/foto/'; // der Pfad 
      var Download = require('download');
      var fs = require('fs');
      
      function speichereFoto () {
          new Download({mode: '755'}).get(source_url).dest(dest_path).run(function(err, files){
                fs.rename('/opt/iobroker/foto/CGIProxy.fcgi!cmd=snapPicture2&usr=admin&pwd=XXXXXXX', '/opt/iobroker/foto/kamerabild.jpeg');  //Datei umbenennen
              if (err) log('Fehler beim Bild speichern: ' + err, 'warn');
              else log('Webcam Bild gespeichert');
      
          });
      }
      
      // Bild an telegram schicken
      function sendeFoto (pfad) {
          sendTo('telegram', pfad);
          log('Bild per telegram verschickt');
      }
      
      function aktion () {
              speichereFoto();
              setTimeout(function() {
                  sendeFoto(dest_path + 'kamerabild.jpeg'); // hier Dateinamen des abgespeicherten Bildes angeben
              }, 5 * 1000); // 5s Verzögerung
      }
      
      // ab hier den Trigger einfügen
      var idKlingel = "hm-rpc.0.MEQ00XXXXX.1.PRESS_SHORT";   //Klingelsensor
      on({id: idKlingel, val: true}, function() {
              sendTo('telegram', "Es hat geklingelt");
              aktion();
      });
      
      on("telegram.0.communicate.request", function (obj) {
         if  (obj.newState.val == "[Coyote]kamera" || obj.newState.val == "[Coyote]/kamera") {  //Telegram anfrage
              aktion();
             setState("telegram.0.communicate.request","leer");
         }
      });
      

      536_fehler.png

      1 Reply Last reply Reply Quote 0
      • Bluefox
        Bluefox last edited by

        @coyote:

        Seit dem Update bekomme ich Fehler im Log beim abspeichern meines Webcam Bildes

        Hier das Log und das Script dazu. Hat vorher ohne weiteres funktioniert.

        // Foto an Telegram senden, wenn geklingelt wird oder wenn von Telegram angefragt wird.
        
        var source_url = "http://XXXXXXXXXX/cgi-bin/CGIProxy.fcgi?cmd=snapPicture2&usr=admin&pwd=XXXXXXX",
            dest_path = '/opt/iobroker/foto/'; // der Pfad 
        var Download = require('download');
        var fs = require('fs');
        
        function speichereFoto () {
            new Download({mode: '755'}).get(source_url).dest(dest_path).run(function(err, files){
                  fs.rename('/opt/iobroker/foto/CGIProxy.fcgi!cmd=snapPicture2&usr=admin&pwd=XXXXXXX', '/opt/iobroker/foto/kamerabild.jpeg');  //Datei umbenennen
                if (err) log('Fehler beim Bild speichern: ' + err, 'warn');
                else log('Webcam Bild gespeichert');
                
            });
        }
        
        // Bild an telegram schicken
        function sendeFoto (pfad) {
            sendTo('telegram', pfad);
            log('Bild per telegram verschickt');
        }
        
        function aktion () {
                speichereFoto();
                setTimeout(function() {
                    sendeFoto(dest_path + 'kamerabild.jpeg'); // hier Dateinamen des abgespeicherten Bildes angeben
                }, 5 * 1000); // 5s Verzögerung
        }
        
        // ab hier den Trigger einfügen
        var idKlingel = "hm-rpc.0.MEQ00XXXXX.1.PRESS_SHORT";   //Klingelsensor
        on({id: idKlingel, val: true}, function() {
                sendTo('telegram', "Es hat geklingelt");
                aktion();
        });
        
        on("telegram.0.communicate.request", function (obj) {
           if  (obj.newState.val == "[Coyote]kamera" || obj.newState.val == "[Coyote]/kamera") {  //Telegram anfrage
                aktion();
               setState("telegram.0.communicate.request","leer");
           }
        });
        

        filename="Fehler.PNG" index="0">~~ Ich verdächtige "Download". Kann sein, dass das Packet nicht mehr da ist?

        Ich empfehle dieses verfahren zu benutzen:

        https://github.com/ioBroker/ioBroker.telegram#usage

        mit "request"

        1 Reply Last reply Reply Quote 1
        • P
          pix last edited by

          Hallo,

          das habe ich auch gemerkt. So wie es Bluefox oben verlinkt hat, habe ich es jetzt umgesetzt. Funktioniert einwandfrei.

          ! /* Testskript BILDSPEICHERUNG ! todo: zum Umbenennen der Datei gilp-rename nutzen ! soll bei Aktion Webcam Bild speichern und per telegram senden Skript ist normalerweise inaktiv und wird zur per ScriptEnabled ausgelöst erstellt 30.03.2016 16.04.2016 nahc Update des telegram Adapters durch Bluefox ist es jetzt einfacher, Dateien zu senden 25.05.2016 download Funktion entfernt und durch request ersetzt */ ! var source_url = 'http://IPundFOTOderKAMERA', // Kamerabild zB http://kameraserver:9090/image1.jpg dest_path = '/Users/pix/Documents/iobroker/iobroker-data/webcam/'; ! var request = require('request'); var fs = require('fs'); ! // Bild an telegram schicken (immer Dienst 3) function sendImage (pfad) { setTimeout(function() { sendTo('telegram.1', pfad); log('Webcam Bild per telegram verschickt'); }, 2 * 1000); } ! // Bild speichern function saveImage() { request.get({url: source_url, encoding: 'binary'}, function (err, response, body) { fs.writeFile(dest_path + 'image1.jpg', body, 'binary', function(err) { ! if (err) { log('Fehler beim Bild speichern: ' + err, 'warn'); } else { log('Webcam Bild gespeichert'); sendImage(dest_path + 'image1.jpg'); } }); }); } ! // bei Skriptstart ausführen saveImage(); ! // selbständig Skript wieder anhalten (nach 12s) setStateDelayed('javascript.' + instance + '.scriptEnabled.' + name.slice(10), false, 12*1000); !
          Bitte den Pfad zum Kamerabild anpassen. Der Dateiname des Fotos (hier image1.jpg), kommt weiter unten noch zweimal vor. Bitte auch anpassen.
          ! Und schließlich muss der dest_path auch noch angepasst werden, das ist nämlich oben im Skript ein Ordner auf einem OS X ioBroker Server.

          Dieses Skript ist normalerweise deaktiviert. Es wird per telegram-Befehl oder per VIS oder aus anderen Skripten über den Datenpunkt Javascript.2.scriptEnabled.SKRIPTNAME aktiviert (true/false). Im Skript ist eine Zeile (die man auch für alle anderen Skripte nutzen kann), die das Skript nach Ablauf einer Zeit wieder deaktiviert.````
          // selbständig Skript wieder anhalten (nach 12s)
          setStateDelayed('javascript.' + instance + '.scriptEnabled.' + name.slice(10), false, 12*1000);

          So werden alle Aktionen im Skript nur ausgeführt, wenn es aktiv ist. Dieses Vorgehen umgeht die on-Funktion. Das ist vielleicht für manche zu Beginn einfacher.
          
          Gruß
          
          Pix
          1 Reply Last reply Reply Quote 1
          • coyote
            coyote Most Active last edited by

            Danke euch beiden.

            Nutze jetzt das Script von pix, funktioniert tadelos, danke Dir

            1 Reply Last reply Reply Quote 0
            • M
              Michmu last edited by

              Wie bekomme ich den Script denn über einen Script gestartet ?Hab was getestet aber so wie ich es gemacht habe geht es nicht.

              var idKlingel = "hm-rpc.0.Mxxxxx.1.PRESS_SHORT"/Klingelsensor.PRESS_SHORT/; // Homematic Klingelsensor

              on({id: idKlingel, val: true}, function() // on lauscht auf Klingelsignal

              on Javascript.0.scriptEnabled.Skript3 true) ;

              1 Reply Last reply Reply Quote 0
              • G
                galferiz last edited by

                Hi Leute,

                Brauch mal ne schnell Script Hilfe für:

                var idKlingel = "hm-rpc.0.NEQ1111072.1.STATE"; // Homematic Klingelsensor
                
                on({id: idKlingel, val: true}, function() 
                on javascript.0.scriptEnabled.Test.Telegram_Bild_2 true );
                

                Geht leider nicht bei mir:

                Fehler ist:````
                error script.js.Test.Telegram_Bild2_starten compile failed: SyntaxError: Unexpected identifier

                
                Wo ist der Syntax Fehler? Er scheint die Klammer zu vermissen, aber die steht ja hinter dem Datenpunkt des Scripts?
                1 Reply Last reply Reply Quote 0
                • G
                  galferiz last edited by

                  Lösung:

                  var idKlingel = "hm-rpc.0.NEQ11xxxx.1.STATE"; // Homematic Klingelsensor
                  var idSkript = 'javascript.0.scriptEnabled.Test.TelegramBild2'; // Skript, dass aktiviert werden soll
                  
                  on({id: idKlingel, val: true}, 
                  function(obj) { // on lauscht auf Klingelsignal, also ist der TRIGGER / AUSLÖSER
                      setState(idSkript, true);
                  });
                  
                  1 Reply Last reply Reply Quote 0
                  • C
                    CBeck last edited by

                    Ich verstehe es nicht und ich habe schon ziemlich viel ausprobiert. Aber das Script von pix scheint bei mir keine Bilder abzuspeichern. Es wird zwar immer eine Datei angelegt, aber sie ist immer nur 351B groß.

                    Als Verzeichnis habe ich /tmp und /cam versucht.

                    Als Links habe ich dies versucht (Aufgerufen im Browser sehe ich ein Bild!):

                    var source_url = 'http://admin:pwd@192.168.2.118:8080/mjp … .cgi?chn=0',

                    var source_url = 'http://192.168.2.118:8080/mjpeg/snap.cgi?chn=0',

                    var source_url = 'http://192.168.2.118:8080/mjpeg/snap.cgi', (auch mit user und pwd)

                    Hat jemand eine Idee? Ich denke, es bestimmt ein typischer Anfängerfehler...

                    Danke!!

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

                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    925
                    Online

                    31.6k
                    Users

                    79.4k
                    Topics

                    1.3m
                    Posts

                    6
                    8
                    4580
                    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