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

      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
                            • M
                              Master77 @chka last edited by

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

                              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

                              Ein direkter Verweis auf das Bild funktioniert nicht. Du musst das mit dem wget Befehl machen. Das YouTube Video aus meinem letzten Post hat mit sehr bei der Lösung des Problem geholfen.

                              Gruß Markus

                              1 Reply Last reply Reply Quote 0
                              • B
                                blackplanet333 @lobomau last edited by

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

                                @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();
                                });
                                
                                

                                Hi,
                                hab das selbe Problem, dass das Bild nur einmal auf die Platte gespeichert wird.
                                Mehr als ein Bild kommt nur wenn ich das Script dazwischen neustarte.
                                Hat hier inzwischen schon die Lösung gefunden?
                                Er sollte ja am Besten das Bild mit der Aktuellen Uhrzeit immer ablegen

                                P 1 Reply Last reply Reply Quote 0
                                • P
                                  powder8 @blackplanet333 last edited by powder8

                                  @AST64

                                  vielen Dank für Dein Script. Das waren meine ersten Zeilen JS und ich habe es sofort verstanden.

                                  Ich würde gerne 2 oder mehr Trigger haben also Trigger1 oder Trigger2 oder Trigger3

                                  on({id: 'script.js.Bewegung_Einfahrt', val: true}, function (obj) {
                                    var value = obj.state.val;
                                    var oldValue = obj.oldState.val;
                                    saveImage();
                                  });
                                  

                                  Falls mich dort jemand oder @AST64 unterstützen kann, das wäre super.

                                  Ich habe on einfach 2 x im Script. Das funktioniert, aber es gibt evtl einen eleganteren Weg.

                                  Noch eine Frage: Wofür ist diese Zeile?

                                  var Trigger = "hm-rpc.0.MEQ0692925.1.MOTION"; //Bewegungsmelder als Trigger
                                  

                                  Die Var Trigger wird nicht mehr im Script benutzt?

                                  Gruß

                                  B 1 Reply Last reply Reply Quote 0
                                  • B
                                    bytec @powder8 last edited by bytec

                                    Bei mir läuft soweit das ich eine Telegram Nachricht mit dem Bild der Kamera bekomme.

                                    Nur gibt es eine Möglichkeit das mir das Bild auch im Sperrbildschirm von iOS in groß angezeigt wird? Bei Whats app geht das.

                                    Gruß

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

                                      So wie ich den Thread hier verstanden habe, muss ich nur eine URL meines Raspis als Textnachricht über Telegram versenden? Also quasi sowas: http://192.123.178.109:1234/state/doorbird.1.Doorbell.2.snapshot

                                      703346cb-bd7b-4f59-becb-f2db8767e336-image.png

                                      Ich bekomme dann nur eine Nachricht die heißt "undefinedDINGDONG"

                                      1 Reply Last reply Reply Quote 0
                                      • W
                                        wuliwux1 last edited by

                                        hi,
                                        da ich auf der Suche nach einer Lösung ohne Dateizugriffe war (nur im RAM) und leider keine gefunden habe. Musste ein wenig gebastelt werden. Hier das Ergebnis:

                                        function sendPricture() {
                                            var photoUrl = "https://hostname/image.jpg"
                                            request.get({ url: photoUrl, encoding: 'binary' }, function (err, response, body) {
                                                var buffer = Buffer.from(body, 'binary');
                                                sendTo('telegram.1',
                                                    {
                                                        type: 'photo',
                                                        text: buffer,
                                                        caption: 'Eingang',
                                                        disable_notification: true,
                                                        filename: "eingang.jpg",
                                                        contentType: 'image/jpeg'
                                                    }, (e) => {
                                                        console.log("error: " + e);
                                                    }
                                                );
                                            });
                                        }
                                        

                                        Läuft wir man sieht ohne Dateizugriffe.
                                        Vielleicht hilft das ja mal jemand.

                                        lg

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

                                        Support us

                                        ioBroker
                                        Community Adapters
                                        Donate

                                        415
                                        Online

                                        31.7k
                                        Users

                                        79.8k
                                        Topics

                                        1.3m
                                        Posts

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