Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [Frage] Bild per telegram verschicken?

    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

    [Frage] Bild per telegram verschicken?

    This topic has been deleted. Only users with topic management privileges can see it.
    • A
      AST64 last edited by

      Werde mich mal damit beschäftigen ;). Kann aber dauern…

      Ich hätte aber auch noch mal eine frage in die Community.

      Mit meinem angepassten Script, werden ja nun die Screenshots wunderbar gespeichert. Sowohl ein Screenshot mit eigenen Namen (Datum/Uhrzeit) pro Auslösung der Cam in einen Ordner, als auch ein Screenshot mit immer den gleichen Namen (screenshot.jpg) zu Anzeige des letzten Auslösebildes.

      Hierdurch entstehen aber extrem viele Schreibprozesse auf der SD Karte.

      Nun habe ich schon mehrere Male gelesen, dass die SD Karten das nicht mögen und dadurch kaput gehen können.

      Stimmt das? Teure hochwertige Class 10 Karten kommen damit nicht klar?

      Wie macht ihr das denn? SSD oder HDD an den Raspi oder eher USB?

      Danke Andreas

      1 Reply Last reply Reply Quote 0
      • E
        ebu last edited by

        Hallo, das script funktioniert prima - danke.

        Eine kurze Frage an die javascript Experten: Ich möchte gern eine Verzögerung von einer Sekunde einbauen im Script, da

        ich einen Bewegungsmelder dazugeschaltet habe und die Kamera das Bild erst später speichern und senden soll.

        Wie mach ich das? 🙂

        1 Reply Last reply Reply Quote 0
        • D
          Dice19 last edited by

          HI,

          habe mir das unten angehängte Script genommen und meine Kameras und Sensoren eingefügt.

          Habe die selben Links von den Kameras genommen die ich auch in der Visualisierung habe.

          Das Script startet ohne Fehlermeldung!!

          Wenn ich dann einen Sensor auslöse paassiert in der Log Datei :

          16:52:35.495 [info] javascript.0 script.js.common.Haus.Bild_Klingel: TelegramBild.xaktionCam - start

          16:52:35.496 [info] javascript.0 script.js.common.Haus.Bild_Klingel: TelegramBild.xaktionCam - state = 1: Garten Bewegungsmelder ausgelöst

          16:56:29.137 [info] javascript.0 script.js.common.Haus.Bild_Klingel: TelegramBild.xaktionCam - start

          16:56:29.138 [info] javascript.0 script.js.common.Haus.Bild_Klingel: TelegramBild.xaktionCam - state = 1: Garten Bewegungsmelder ausgelöst

          Bekomme die Meldung aufm Handy aber es kommt kein Bild hinterher.

          Wenn ich den Sensor erneut auslöse, das selbe. Meldung kommt ohne Bild.

          Es kommt aber keinerlei Fehlermeldung, auch in der Log von iobroker.admin erscheint keine Fehlermeldung.

          Jemand einen Tipp für mich was ich ändern muss??

          Danke

          Tobias

          ! @thomassch:
          ! > Hi,

          nachdem ich ein wenig mit Cam Bildern und telegramm experimentiert habe, möchte ich Euch das Script gerne mal zur Verfügung stellen.

          Damit versende ich über Telegramm im Falle einer Sensorauslösung Einzel oder bei Alarm auch alle Webcam Bilder.

          Damit das funktioniert, sollte Eure instar Cam im Webbrowser über folgenden Aufruf ein Bild anzeigen:

          http://ip-der-cam/tmpfs/snap.jpg?usr=admin&pwd=instar
          

          Das Verschicken funktioniert über das speichern eines JPG Files in IOBroker, dazu wird die Funktion "download" verwendet.

          Ich habe ein wenig gebraucht rauszufinden, dass es eine extra JavaScript Funktion ist, die erst über das iobroker Terminal vorher manuell installiert werden muss.

          (bin halt noch nicht so geübt und Anfänger in Java)

          Dazu im IOBorker die Tablasche Terminal aufmachen und das eingeben:

          npm install download
          

          Danach bei Script Einstellungen "download" mit reinnehmen:

          Screenshot at Mai 16 14-18-56.png

          Anschließend das Script übernehmen und ein wenig an Eure Cams anpassen.

          Im Script noch die IPs der Webcam anpassen bzw. beim Versenden aller WebCams dann die Anzahl der Cam Aufrufe anpassen.

          // Script: TelegramBild
          // Script: Bild und Text per Telegram verschicken, wenn ein Sensor auslöst
          // Script: 15.05.2016
          // Autor: thomassch
          // Grundidee: http://forum.iobroker.net/viewtopic.php?f=21&t=2609&p=24557&hilit=telegram#p24557
          
          // IPCams: Instar 5907HD / 6012HD
          
          var logging = true;
          var Download = require('download');  // Modul Download muss in Javascript-Einstellungen vorhanden sein
          var dest = '/images/';
          var foto_urlFlur   = "http://192.168.2.1/tmpfs/snap.jpg?usr=admin&pwd=instar"; // IP Webcam Snapshot Innen Flur
          var foto_urlGarage = "http://192.168.2.2/tmpfs/snap.jpg?usr=admin&pwd=instar"; // IP Webcam Snapshot Garage
          var foto_urlGarten = "http://192.168.2.3/tmpfs/snap.jpg?usr=admin&pwd=instar"; // IP Webcam Snapshot Kellertür
          var foto_urlWohn   = "http://192.168.2.4/tmpfs/snap.jpg?usr=admin&pwd=instar"; // IP Webcam Snapshot Wohnzimmer
          var txtaction = "..."; // Telegram Text
          
          if (logging) log("TelegramBild - Script start", "info");
          
          // Funktion zum Versenden einer Meldung und Bild über Telegramm
          // myObj   : Auslöseobjekt
          // myText  : wird im Telegramm als Objekttext (Klartext) angezeigt
          // txtTrue : wird bei auslösen = 1 im Telegram angezeigt
          // txtFalse: wird bei auslösen = 0 im Telegram angezeigt (hier nicht verwendet)
          // txtOrt  : Übergabe der WebCam Adresse
          // txtBild : lokaler Name für das Bild dass dann versendet wird
          
          // EInzelbild verschicken
          function xaktionCam(myObj, myText, txtTrue, txtFalse, txtOrt, txtBild)
          {
              if (logging) log("TelegramBild.xaktionCam - start", "info");
              if (myObj.newState.val === true) {
                  txtaction = txtTrue;
          
                  // erst mal Text
                  var myTel = myText + " " + txtaction;
                  if (logging) log("TelegramBild.xaktionCam - state = 1: " + myTel, "info");
                  setState("telegram.0.communicate.response", myTel);
          
                  // dann Bild verschicken
                  new Download({mode: '777'}).get(txtOrt).dest(dest).rename(txtBild+".jpg").run()
                  setTimeout(function(){
                      sendTo('telegram.0', dest+txtBild+'.jpg');
                      if (logging)  log("TelegramBild.xaktionCam - Bild versendet" + dest+txtBild+'.jpg', "info");
                  }, 6000); // 6 sek warten bevor man das JPG verschickt
              }
          
          }
          
          // Alle Cams aufnehmen und verschicken
          function xaktionCamAlle(myObj, myText)
          {
            if (logging) log("xaktionCamAlle - start", "info");
            if (myObj.newState.val === true) {
          
                // erst mal Text
                var myTel = myText;
                if (logging) log("TelegramBild.xaktionCamAlle - state = 1: " + myTel, "info");
                setState("telegram.0.communicate.response", myTel);
          
                // dann Bild verschicken
                new Download({mode: '777'}).get(foto_urlFlur).dest(dest).rename("BildAlarmFlur"+".jpg").run()
                new Download({mode: '777'}).get(foto_urlGarage).dest(dest).rename("BildAlarmGarage"+".jpg").run()
                new Download({mode: '777'}).get(foto_urlGarten).dest(dest).rename("BildAlarmGarten"+".jpg").run()
                new Download({mode: '777'}).get(foto_urlWohn).dest(dest).rename("BildAlarmWohnzimmer"+".jpg").run()
          
                setTimeout(
                  function()
                  {
                    sendTo('telegram.0', dest+"BildAlarmFlur"+'.jpg');
                    sendTo('telegram.0', dest+"BildAlarmGarage"+'.jpg');
                    sendTo('telegram.0', dest+"BildAlarmGarten"+'.jpg');
                    sendTo('telegram.0', dest+"BildAlarmWohnzimmer"+'.jpg');
                  }, 20000); // 20 sek warten bevor man das JPG verschickt
            }
          }
          
          // Auslöser
          on({id: "hm-rpc.0.LEQ1469465.1.STATE",          val: true}, function(obj) { xaktionCam(obj, "Die Innentür wurde "       ,"geöffnet",""      , foto_urlFlur  , "BildFlur"); }); // Innentür
          on({id: "hm-rpc.0.MEQ0100446.1.MOTION",         val: true}, function(obj) { xaktionCam(obj, "Garten Bewegungsmelder "   ,"ausgelöst",""     , foto_urlGarten, "BildGarten"); }); // Garten
          on({id: "hm-rpc.0.MEQ0656769.1.PRESS_SHORT",    val: true}, function(obj) { xaktionCam(obj, "Klingelsensor "            ,"es klingelt",""   , foto_urlGarage, "BildKlingel"); }); // Klingelsensor
          on({id: "hm-rpc.0.MEQ0812040.1.STATE",          val: true}, function(obj) { xaktionCam(obj, "Garagentor "               ,"wird geöffnet","" , foto_urlGarage, "BildGaragentor"); }); // Garagentor
          on({id: "hm-rpc.0.MEQ1408344.1.STATE",          val: true}, function(obj) { xaktionCam(obj, "Waschraum Tür "            ,"wird geöffnet","" , foto_urlGarage, "BildWaschRaumTuer"); }); // Waschraumtüre
          
          // AlarmEreignis
          on({id: "hm-rega.0.3047",  change:"ne"},                    function(obj) { xaktionCamAlle(obj, "!!! xxxx Alarm","ausgelöst xxxx !!!"); });
          on({id: "hm-rega.0.1790",  change:"ne"},                    function(obj) { xaktionCamAlle(obj, "!!! Voralarm","ausgelöst!!!"); });
          

          Jetzt fehlt mir eigentlich noch folgende Funktion:

          1. Ich würde gerne die aktuell gemachten Bilder und auch die letzten 10 Bilder speichern und auf einer Vis Seite anzeigen

          2. Eventuell bei Alarm für 10 Minuten, alle 15 sek Bilder erstellen und die ablegen - allerdings dann nicht auf IOBroker, sondern z.B. auf die Dropbox oder lokale NAS bei mir

          3. mit dem Telegram auch gleich einen Link auf die Vis Webseite schicken

          Vielleicht weiß jemand wie ich mit Javascript das JPG das ich gespeichert habe, gleich mal kopieren kann auf ein lokales Netzlaufwerk ???

          Gruss

          Thomas `

          1 Reply Last reply Reply Quote 0
          • A
            AST64 last edited by

            Hallo,

            ich beschäftige mich auch gerade mit einer Ansicht im VIS. Habe mich entschlossen auf dem NAS mit SQL/PHP ein externes Programm für BilderGallery zu implementieren und dies dann mit einem iFrame ins VIS zu holen.

            Habe noch nichts fertiges, aber wenn es soweit ist kann ich es gerne mal posten.

            Die Cams würden dann alle direkt ins NAS speichern, anhand der IP und der DATE/TIME Infos dann sortiert abgelegt werden.

            Dank ImageMagic dann auch als Thumbnail zu sehen sein. Mit Videos würde ich genauso machen. Bin aber noch am ausprobieren, mit welchem Programm …

            Dies nur als Idee!!!

            Andreas

            1 Reply Last reply Reply Quote 0
            • D
              Dice19 last edited by

              Ich hab auch parallel die Fotos auf einem NAS.

              Nur es funktioniert ja anscheinend auch mit Telegramm das darüber das Bild aktuell abgerufen wird und verschickt wird.

              Die verschiedenen Benachrichtigungen kommen ja, nur das Bild fehlt eben…......

              1 Reply Last reply Reply Quote 0
              • A
                AST64 last edited by

                So habe ich es drin und so gehts bei mir auch ohne Probleme.

                var source_url = 'http://xxx.xxx.xxx.xx/snapshot.cgi?user=xxxx&pwd=xxxxx; //Adresse der IpKamera mit User und Password
                dest_path = '/opt/iobroker/iobroker-data/files/eigene/'; // schreibrechte gesetzt. sollte aber eher ausgelagert werden!!
                
                //var Trigger = "id = script.js.Bewegung_Einfahrt.state"; // Testtrigger
                
                var Trigger = "hm-rpc.0.MEQ0692925.1.MOTION"; //Bewegungsmelder als Trigger
                var Nachricht = "Bewegung in der Einfahrt wurde erkannt"; // Nachricht, welche mit dem Bild gesendet wird
                var request = require('request');
                var fs      = require('fs');
                
                // aktuelles Bild speichern
                function saveImage() {
                    request.get({url: source_url, encoding: 'binary'}, function (err, response, body) {
                
                        fs.writeFile(dest_path + 'snapshot.jpg', body, 'binary', function(err) {
                        if (err) {
                            log('Fehler beim Bild SnapShot Single speichern: ' + err, 'warn');
                        } else {
                            log('Webcam Bild gespeichert');
                            sendImage(dest_path + 'snapshot.jpg');
                        }
                        }); 
                    });
                }
                
                // Bild an Telegram schicken
                function sendImage(pfad) {
                
                    setTimeout(function() {
                        sendTo('telegram', pfad);
                        log('Webcam Bild per telegram verschickt');
                    }, 1500);
                
                    sendTo("telegram", Nachricht);
                }
                
                on({id: 'script.js.Bewegung_Einfahrt', val: true}, function (obj) {
                  var value = obj.state.val;
                  var oldValue = obj.oldState.val;
                  saveImage();
                });
                

                Habe noch ein zweites Script, welches erst den Timestamp nimmt und dann das Bild (Bildname + Timestamp) auf dem Server ablegt … für Historie!

                Das Problem ist die Anzeige im VIS. Man kann ja nur einen Namen für das IMG Widget nehmen, also wird auch immer nur ein Bild gespeichert, nämlich das aktuellste. Für alle anderen habe ich, wie erwähnt eine Gallery auf dem Webserver NAS eingerichtet und hole diese per iFrame.

                Du musst den dest_path:_server noch oben in die var reinschrieben.

                dest_path_server = xxx.xxx.xxx.xx/xyz .....
                var datum = new Date();
                var zeit = datum.getTime();
                var picdate = formatDate(new Date(), "JJJJ-MM-TT SS-mm-ss")+'.jpg';
                
                // Bild speichern als Timestamp fürs Archiv
                    function saveScreenshots() {
                    request.get({url: source_url, encoding: 'binary'}, function (err, response, body) {        
                        fs.writeFile(dest_path_server + new Date() +".jpg", body, 'binary', function(err) {
                        if (err) {
                            log('Fehler beim Screenshots speichern: ' + err, 'warn');
                        } else {
                            log('Screenshots gespeichert');
                        }
                     }); 
                });
                }
                
                

                Check nochmal die Klammern 😉 Mein Script ist verdammt lang ! Müsste aber passen.

                1 Reply Last reply Reply Quote 0
                • D
                  Dice19 last edited by

                  Moin

                  Also mir würde ein Foto per Klingel Betätigung vollkommen reichen.

                  Die anderen Fotos würde ich mir bei bedarf am pc anschauen

                  1 Reply Last reply Reply Quote 0
                  • A
                    AST64 last edited by

                    OK, dann folgendes: das erste Script nehmen und in die Javascript Anwendung kopieren. Script öffnen als Javascript und dann erstmal alles reinkopieren.

                    Dann passt du die URL für deine CAM in der ersten Zeile an. Wahrscheinlich musst du neben der URL auch deine Zugangsdaten eingeben.

                    Dann in die zweite Zeile den Pfad wo der Snapshot gespeichert werden soll- Hier könnte auch dein Problem liegen, denn man kann nicht einfach in den Raspberry einspeichern. Womöglich einen eigenen Ordner anlegen, Schreibrechte auf 777. Testen, ob du dorthin speichern kannst!

                    Hier die kleine Erklärung für das Script:

                    function saveImage() { Holt sich das Bild und speichert in deinem Pfad von oben.

                    function sendImage(pfad) { Sendet das Bild an Telegram . der Timeout ist drin, damit beim Abarbeiten des Scripts dein gespeichertes Bild auch wirklich schon da ist. Also Speichern … warten ... holen und senden. Manchmal muss der Timeout etwas höher sein. 2000 -3000.

                    Im letzten Block wird auf den Trigger der als var oben steht verwiesen. Wenn BWM ausgelöst dann fängt das Script an sich abzuarbeiten als erst SAVE dann der SEND Block.

                    Hoffe es klappt!

                    Andreas

                    1 Reply Last reply Reply Quote 0
                    • D
                      Dice19 last edited by

                      Habe das ganze nochmal neu angelegt und den Ordner wie bei Dir angegeben angelegt im Verzeichnis.

                      Bekomme aber Fehlermeldung die ich leider nicht interpretieren kann vom Script.

                      Ich bekomme nun mit dem Script auch gar keine Meldung über Telegramm aufs Handy mehr.

                      Tobias
                      2120_klingelbild.jpg

                      1 Reply Last reply Reply Quote 0
                      • A
                        AST64 last edited by

                        OK, ich hoffe, dass ich das jetzt richtig sehe.

                        In den letzten Zeilen steht als Trigger noch "EINFAHRT", der muss auf deinen Trigger umgeschreiben werden.

                        Also das was in Zeile 6 bei dir steht.

                        Dann solltest du schonmal eine Nachricht bekommen.

                        Dann musst du schauen, ob der Ordner zum Speichern auch angelegt ist (mit Rechten 777). Zeile 2

                        Wenn du auch wo anders speichern kannst wäre das besser, da das Script im ungünstigsten Fall mal schnell 1000 Bilder auf deinem Pi ablegt.

                        z.B. ein USB Stick am Pi oder auf ein NAS.

                        Dann per FTP oder Konsole schauen, ob er auch dort ein Bild speichert. Wenn ja dann die URL im Browser eingeben und schauen, ob du das Bild auch sehen kannst.

                        Ich glaube auch (kann es nicht richtig erkennen) dass du in der ersten Zeile das Hochkomma nicht drin hast am Ende.

                        Andreas

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

                          @tobih83:

                          Habe das ganze nochmal neu angelegt und den Ordner wie bei Dir angegeben angelegt im Verzeichnis.

                          Bekomme aber Fehlermeldung die ich leider nicht interpretieren kann vom Script.

                          Ich bekomme nun mit dem Script auch gar keine Meldung über Telegramm aufs Handy mehr.

                          Tobias `
                          Der Fehler ist in der ersten Zeile. Es fehlt ein " ' " vor dem Semikolon.

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

                            @AST64:

                            So::::

                            Ich lese nun die Zeit aus, formatiere sie und speichere das Bild.

                            Hier wird nun jedesmal ein neues Bild erzeugt, welches letztlich auf der Platte auch identifiziert werden kann.

                            Sieht dann so aus: 2017-07-23 15-02-08.jpg

                            // Telegram Bild senden
                            
                            var source_url = 'http://192.168.xxx.xx/snapshot.cgi?user=xxxxx&pwd=xxxxx', //Adresse der IpKamera
                                dest_path = '/Users/mm-ccu-vu/SnapShots/'; // Bei mir der Pfad in einem Ordner des MacMini
                            var Trigger = "hm-rpc.1.NEQ1513396.17.STATE"; //Trigger (Testweise mit einem Schalter der Aussenbeleuchtung)
                            var Nachricht = "Es hat geklingelt"; // Nachricht, zu dem Bild 
                            
                            var request = require('request');
                            var fs      = require('fs');
                            var picdate = formatDate(new Date(), "JJJJ-MM-TT SS-mm-ss")+'.jpg'; // DAS HABE ICH ERGÄNZT
                            
                            // Bild an telegram schicken
                            function sendImage (pfad) {
                                setTimeout(function() {
                                    sendTo('telegram', pfad);
                                    log('Webcam Bild per telegram verschickt');
                                }, 2 * 1000);
                                sendTo("telegram", Nachricht);    // <-- nach der Timeout funktion ausführen
                            }
                            
                            // Bild speichern
                            function saveImage() {
                                request.get({url: source_url, encoding: 'binary'}, function (err, response, body) {
                                    fs.writeFile(dest_path + picdate, body, 'binary', function(err) { // Hier wird der erzeugte Namen (picdate) mit dem Pfad zum Speichern übergeben!
                            
                                    if (err) {
                                        log('Fehler beim Bild speichern: ' + err, 'warn');
                                    } else {
                                        log('Webcam Bild gespeichert');
                                        sendImage(dest_path + picdate); // Hier hole ich mir den erzeugten Namen rein
                                        //sendImage(dest_path + 'image2.jpg'); // So war es vorher!
                                    }
                                  }); 
                                });
                            }
                            
                            //Trigger
                            on ({id: Trigger, val: true}, function () {
                                saveImage();
                            });
                            
                            

                            Danke `
                            Bei mir funktioniert es mit einer kleinen Einschränkung:

                            beim ersten Auslösen es Triggers wird alles ausgeführt, wie gedacht.

                            Beim zweiten Mal wird zwar ein telegram geschickt, aber es wird keine Datei abgespeichert. Das funktioniert erst wenn ich das Script neustarte und es nochmal mache.

                            1 Reply Last reply Reply Quote 0
                            • A
                              AST64 last edited by

                              Versuch mal mit dem timeout ein wenig zu spielen. Kann sein, das das Bild beim ersten Mal gespeichert wird, aber beim zweiten Mal dauert es etwas länger, weil das vorhandene Bild erst durch ein Neues ersetzt werden muss. Vielleicht nur ein paar Millisekunden mehr!

                              Andreas

                              1 Reply Last reply Reply Quote 0
                              • D
                                Dice19 last edited by

                                Danke, es läuft jetzt.

                                Aber ein Bild kommt trotzdem nicht an.

                                Hab mit WINSCP den Ordner wie im Script angelegt und die Rechte 777 vergeben.

                                Aber keine Datei im Ordner vorhanden. :?

                                @lobomau:

                                @tobih83:

                                Habe das ganze nochmal neu angelegt und den Ordner wie bei Dir angegeben angelegt im Verzeichnis.

                                Bekomme aber Fehlermeldung die ich leider nicht interpretieren kann vom Script.

                                Ich bekomme nun mit dem Script auch gar keine Meldung über Telegramm aufs Handy mehr.

                                Tobias Der Fehler ist in der ersten Zeile. Es fehlt ein " ' " vor dem Semikolon.

                                1 Reply Last reply Reply Quote 0
                                • A
                                  AST64 last edited by

                                  HM, dann speichert das Script nicht in den Ordner. Schau mal, ob du mit WINSCP etwas dort ablegen kannst.

                                  1 Reply Last reply Reply Quote 0
                                  • A
                                    AST64 last edited by

                                    Bei mir ist der Pfad auf dem Pi so angelegt.

                                    dest_path = '/opt/iobroker/iobroker-data/files/eigene/';

                                    Du kannst ja auch mal einen ganz anderen Weg nehmen, z.B. direkt ins Root Verzeichnis.

                                    Oder mal einen Dropbox Pfad.

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

                                      @AST64:

                                      Versuch mal mit dem timeout ein wenig zu spielen. Kann sein, das das Bild beim ersten Mal gespeichert wird, aber beim zweiten Mal dauert es etwas länger, weil das vorhandene Bild erst durch ein Neues ersetzt werden muss. Vielleicht nur ein paar Millisekunden mehr!

                                      Andreas `
                                      Verlängerung des Timeouts macht bei mir keinen Unterschied. Komisch.

                                      // Bild an telegram schicken
                                      function sendImage (pfad) {
                                          setTimeout(function() {
                                              sendTo('telegram.1', pfad);
                                              log('Webcam Bild per telegram verschickt');
                                          }, 3 * 2000);
                                          sendTo("telegram.1", Nachricht);    // <-- nach der Timeout funktion ausführen
                                      

                                      Aber scheint was gespeichert zu werden bzw. der log schreibt es:

                                      javascript.0	2018-02-09 20:01:47.396	info	script.js.common.Cam.Edimax: Webcam Bild per telegram verschickt
                                      javascript.0	2018-02-09 20:01:41.393	info	script.js.common.Cam.Edimax: Webcam Bild gespeichert
                                      javascript.0	2018-02-09 20:01:05.223	info	script.js.common.Cam.Edimax: Webcam Bild per telegram verschickt
                                      javascript.0	2018-02-09 20:00:59.218	info	script.js.common.Cam.Edimax: Webcam Bild gespeichert
                                      javascript.0	2018-02-09 20:00:27.762	info	script.js.common.Cam.Edimax: Webcam Bild per telegram verschickt
                                      javascript.0	2018-02-09 20:00:21.760	info	script.js.common.Cam.Edimax: Webcam Bild gespeichert
                                      
                                      1 Reply Last reply Reply Quote 0
                                      • A
                                        AST64 last edited by

                                        Mach mal versuchsweise 2*20000

                                        1 Reply Last reply Reply Quote 0
                                        • D
                                          Dice19 last edited by

                                          @AST64:

                                          Bei mir ist der Pfad auf dem Pi so angelegt.

                                          dest_path = '/opt/iobroker/iobroker-data/files/eigene/';

                                          Du kannst ja auch mal einen ganz anderen Weg nehmen, z.B. direkt ins Root Verzeichnis.

                                          Oder mal einen Dropbox Pfad. `

                                          Habe eben mal in die Log Datei geschaut und die Klingel betätigt…...

                                          javascript.0 2018-02-10 19:06:22.121 error Error in callback: TypeError: (uri, output, opts) => { if (typeof output === 'object') { opts = output; output = null; } let protocol...... } is not a constructor

                                          javascript.0 2018-02-10 19:06:22.121 info script.js.common.Haus.Bild_Klingel: TelegramBild.xaktionCam - state = 1: Klingel es klingelt

                                          javascript.0 2018-02-10 19:06:22.120 info script.js.common.Haus.Bild_Klingel: TelegramBild.xaktionCam - start

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

                                            @AST64:

                                            Mach mal versuchsweise 2*20000 `
                                            Nein, will einfach nicht. Die Änderung funktioniert insoweit, dass zuerst die telegram-Ansage kommt und 40sec später das Bild.

                                            Aber auf die Platte wird die Datei nur einmal abgespeichert.

                                            fs und request sind eingetragen als npm-Module.

                                            Hier nochmal das unveränderte Script:

                                            // Telegram Bild senden
                                            
                                            var source_url = 'http://admin:passwd@192.168.178.XXX/snapshot.jpg', //Adresse der IpKamera
                                                dest_path = '/opt/iobroker/iobroker-data/files/vis.0/main/Haus/'; // Bei mir der Pfad in einem Ordner des brix
                                            var Trigger = "javascript.0.Variablen.Test-Trigger"/*Variablen.Test-Trigger*/; //Trigger (Testweise mit einem Schalter der Aussenbeleuchtung)
                                            var Nachricht = "Test-Trigger"; // Nachricht, zu dem Bild 
                                            
                                            var request = require('request');
                                            var fs      = require('fs');
                                            var picdate = formatDate(new Date(), "JJJJ-MM-TT SS-mm-ss")+'.jpg'; // DAS HABE ICH ERGÄNZT
                                            
                                            // Bild an telegram schicken
                                            function sendImage (pfad) {
                                                setTimeout(function() {
                                                    sendTo('telegram.1', pfad);
                                                    log('Webcam Bild per telegram verschickt');
                                                }, 2 * 20000);
                                                sendTo("telegram.1", Nachricht);    // <-- nach der Timeout funktion ausführen
                                            }
                                            
                                            // Bild speichern
                                            function saveImage() {
                                                request.get({url: source_url, encoding: 'binary'}, function (err, response, body) {
                                                    fs.writeFile(dest_path + picdate, body, 'binary', function(err) { // Hier wird der erzeugte Namen (picdate) mit dem Pfad zum Speichern übergeben!
                                            
                                                    if (err) {
                                                        log('Fehler beim Bild speichern: ' + err, 'warn');
                                                    } else {
                                                        log('Webcam Bild gespeichert');
                                                        sendImage(dest_path + picdate); // Hier hole ich mir den erzeugten Namen rein
                                                        //sendImage(dest_path + 'image2.jpg'); // So war es vorher!
                                                    }
                                                  }); 
                                                });
                                            }
                                            
                                            //Trigger
                                            on ({id: Trigger, val: true}, function () {
                                                saveImage();
                                            });
                                            
                                            
                                            B 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            793
                                            Online

                                            31.7k
                                            Users

                                            79.9k
                                            Topics

                                            1.3m
                                            Posts

                                            31
                                            93
                                            31083
                                            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