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

      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
                              • L
                                ludino last edited by

                                Hi,

                                ich habe dazu auch mal eine Frage, vielleicht kann mir ja jemand helfen, meine Cam hat eine Bewegungserkennung, diese kann entweder eine Email mit bild schicken oder das bild auf meine NAS mit FTP schieben.

                                Ich möchte am liebsten das Iobroker diesen FTP ordner überwacht und bei einem neuen Bild mir das Als telegram schickt (Zeitstempel)

                                ist sowas möglich?

                                Gruß

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

                                  Hallo Zusammen,

                                  kann ich auch ein Bild an einen bestimmten User senden, alle versuche von mir scheitern,
                                  entweder wird im Script schon ein Fehler gemeldet oder es kommt nichts an.

                                  Danke

                                  Gruß Jens

                                  TheDuke 1 Reply Last reply Reply Quote 0
                                  • bahnuhr
                                    bahnuhr Forum Testing Most Active last edited by

                                    ja, so:

                                    sendTo('telegram.0', {user: vUser, text: 'c:/tmp/snap' + ip + '.jpg', caption: cam});

                                    1 Reply Last reply Reply Quote 0
                                    • TheDuke
                                      TheDuke @AingTii last edited by

                                      @AingTii sagte in [Frage] Bild per telegram verschicken?:

                                      kann ich auch ein Bild an einen bestimmten User senden

                                      schau mal hier

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

                                        Danke, hat funktioniert.

                                        Keine Ahnung, warum vorher nicht....
                                        Aber vielleicht war es nur eine Klammer oder Komma an einer falschen stellen etc....

                                        sendTo('telegram.0', {user:'User', text:pfad});

                                        Wobei pfad hier eine Variable ist, die aus DateiPfad und Name des gerad gespeicherten Bildes ist.

                                        Danke noch mal
                                        Gruß Jens

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

                                          Hallo zusammen.

                                          Ich wollte mir gern per Telegram ein Bild von meiner IPCam zusenden lassen.
                                          Als Hilfestellung / Grundlage habe ich folgendes Video genommen:

                                          https://youtu.be/Tda3BIM1SUk

                                          Wenn ich

                                          wget --output-document /opt/iobroker/ipcam/alarm.jpg 'http://192.168.178.xxx:88/cgi-bin/CGIProxy.fcgi?cmd=snapPicture2&usr=xxxxx&pwd=xxxxx'
                                          

                                          über das Skript auslöse, kommt kein Bild. Wenn ich den Befehl über putty eingebe wird er ausgeführt. Trigger ich danach das Skript wird mir das Bild angezeigt welches ich zuvor über den Befehl in putty erstellt habe. Kann mir einer sagen was ich falsch mache? Egal wie oft ich das Skript auslöse, es wird mir immer das Bild angezeigt welches ich zuletzt mit dem Befehl in putty erstellt habe. Es wird also kein neues Bild über das Skript erstellt. Irgendwo ist der Wurm drin und ich weiß nicht wo.
                                          Fast vergessen, das ganze läuft auf einem Rock64 und bei der IPCam handelt es sich um eine Foscam C1.

                                          Danke im voraus für eure Hilfe.

                                          Gruß Markus

                                          1 Reply Last reply Reply Quote 0
                                          • C
                                            chka last edited by

                                            Ich bekomme es einfach nicht zum laufen.
                                            Push Nachricht kommt durch allerdings ohne Bild.
                                            schaue ich mir das Bild an ist es gerade mal 340Byte groß und lässt sich nicht öffnen.

                                            Ich vereise direkt auf http://ip/bild.jpg login oder sonstwas habe ich erstmal abgeschaltet

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            834
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

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