Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. [Frage] Bild per telegram verschicken?

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    14
    1
    183

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    4.4k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.3k

[Frage] Bild per telegram verschicken?

Scheduled Pinned Locked Moved Skripten / Logik
93 Posts 31 Posters 35.5k Views 8 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • A Offline
    A Offline
    AST64
    wrote on last edited by
    #64

    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
    0
    • D Offline
      D Offline
      Dice19
      wrote on last edited by
      #65

      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
      0
      • A Offline
        A Offline
        AST64
        wrote on last edited by
        #66

        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
        0
        • D Offline
          D Offline
          Dice19
          wrote on last edited by
          #67

          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
          0
          • A Offline
            A Offline
            AST64
            wrote on last edited by
            #68

            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
            0
            • D Offline
              D Offline
              Dice19
              wrote on last edited by
              #69

              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
              0
              • A Offline
                A Offline
                AST64
                wrote on last edited by
                #70

                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
                0
                • lobomauL Offline
                  lobomauL Offline
                  lobomau
                  wrote on last edited by
                  #71

                  @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.

                  Host: NUC8i3 mit Proxmox:

                  • ioBroker CT Debian 13, npm 10.9.4, nodejs 22.21.0
                  • Slave: Pi4
                  1 Reply Last reply
                  0
                  • lobomauL Offline
                    lobomauL Offline
                    lobomau
                    wrote on last edited by
                    #72

                    @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.

                    Host: NUC8i3 mit Proxmox:

                    • ioBroker CT Debian 13, npm 10.9.4, nodejs 22.21.0
                    • Slave: Pi4
                    1 Reply Last reply
                    0
                    • A Offline
                      A Offline
                      AST64
                      wrote on last edited by
                      #73

                      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
                      0
                      • D Offline
                        D Offline
                        Dice19
                        wrote on last edited by
                        #74

                        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
                        0
                        • A Offline
                          A Offline
                          AST64
                          wrote on last edited by
                          #75

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

                          1 Reply Last reply
                          0
                          • A Offline
                            A Offline
                            AST64
                            wrote on last edited by
                            #76

                            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
                            0
                            • lobomauL Offline
                              lobomauL Offline
                              lobomau
                              wrote on last edited by
                              #77

                              @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
                              

                              Host: NUC8i3 mit Proxmox:

                              • ioBroker CT Debian 13, npm 10.9.4, nodejs 22.21.0
                              • Slave: Pi4
                              1 Reply Last reply
                              0
                              • A Offline
                                A Offline
                                AST64
                                wrote on last edited by
                                #78

                                Mach mal versuchsweise 2*20000

                                1 Reply Last reply
                                0
                                • D Offline
                                  D Offline
                                  Dice19
                                  wrote on last edited by
                                  #79

                                  @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
                                  0
                                  • lobomauL Offline
                                    lobomauL Offline
                                    lobomau
                                    wrote on last edited by
                                    #80

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

                                    Host: NUC8i3 mit Proxmox:

                                    • ioBroker CT Debian 13, npm 10.9.4, nodejs 22.21.0
                                    • Slave: Pi4
                                    B 1 Reply Last reply
                                    0
                                    • L Offline
                                      L Offline
                                      ludino
                                      wrote on last edited by
                                      #81

                                      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
                                      0
                                      • A Offline
                                        A Offline
                                        AingTii
                                        wrote on last edited by
                                        #82

                                        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

                                        TheDukeT 1 Reply Last reply
                                        0
                                        • bahnuhrB Online
                                          bahnuhrB Online
                                          bahnuhr
                                          Forum Testing Most Active
                                          wrote on last edited by
                                          #83

                                          ja, so:

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


                                          Wenn ich helfen konnte, dann Daumen hoch (Pfeil nach oben)!
                                          Danke.
                                          gute Forenbeiträge: https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge
                                          ScreenToGif :https://www.screentogif.com/downloads.html

                                          1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          314

                                          Online

                                          32.7k

                                          Users

                                          82.4k

                                          Topics

                                          1.3m

                                          Posts
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Home
                                          • Recent
                                          • Tags
                                          • Unread 0
                                          • Categories
                                          • Unreplied
                                          • Popular
                                          • GitHub
                                          • Docu
                                          • Hilfe