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.
    • Bluefox
      Bluefox last edited by

      Es gibt neue Version von Telegram.
      ` > To send photo, just send a path to file instead of text:

      sendTo('telegram', 'absolute/path/file.png')
      
      ```` ` 
      1 Reply Last reply Reply Quote 1
      • S
        Solear last edited by

        Große Klasse, Bluefox!!! 🙂 🙂 Der absolute Knüller!!!

        Mein iobroker läuft im Raspi 3 Jessie. Dort habe ich eine Raspicam angeschlossen.

        Meine Homematic Klingel sendet schon immer per Pushover eine Nachricht, dass es geklingelt hat (gut wenn man im Garten ist, reagiert binnen 1-2 Sekunden!)

        Habe jetzt noch den Befehl angehängt, dass er über exec ein Foto von der Raspicam erzeugen soll (das dauert leider 6 Sekunden), dann 6 Sekunden wartet, und dann das Foto per Telegramm verschickt. Warte ich nicht, verschickt er das vorhandene alte Foto.

        Das heißt, ich bekomme per Pushover die Nachricht, dass es geklingelt hat und 6 Sekunden später das Foto. Nicht schön mit der langen Zeit, aber besser als nichts.

        Gibt es noch Vorschläge, den Code zu verbessern/verschönern? Oder wie man die Cam schneller dazu bekommt, ein Foto zu machen? Evtl. aus einem immer laufenden Stream etwas herausschneiden? Hat da jemand Erfahrung?

        // Grupppe Klingel/Pushover
        
        var idKlingel = "hm-rpc.0.MEQ004xxxx.1.PRESS_SHORT"/*Klingelsensor.PRESS_SHORT*/;   // Homematic Klingelsensor
        
        on({id: idKlingel, val: true}, function() {			// on lauscht auf Klingelsignal	
                sendTo("pushover", "Es hat geklingelt");        // Sende Pushovernachricht
                exec ("raspistill -o cam.jpg");                  // Erzeuge Photo von Raspicam unter /opt/cam.jpg
                sendphoto();                                    // Rufe Funktion sendphoto auf
        });
        
        function sendphoto() {                      // Warteschleife, 6 Sekunden, damit das Bild erzeugt wird
            setTimeout(waittime, 6000);    
        }
        
        function waittime() {                       // Nach der Warteschleife, sende das Bild per Telegram
            sendTo('telegram', "/opt/cam.jpg")  
        }
        
        

        Auf jeden Fall total cool, Danke Bluefox! 😄

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

          Hallo,

          ich bedanke mich auch für das Update. Läuft super, vielen Dank!

          Gruß

          Pix

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

            Hi, ich würde auch gerne das beim Klingeln an der Haustür ein Bild von meiner IPcam auf Telegram geschickt wird. Wo muss ich denn die Befehle eintragen ? Telegram habe ich per Iobroker admin installiert und eingerichtet.

            1 Reply Last reply Reply Quote 0
            • S
              Solear last edited by

              Das funktioniert per Javascript-Adapter. Installiere diesen zuerst. Dann gehst du auf den neuen Reiter "Scripte" und legst ein neues Script an.

              Mein Code (siehe mein Beitrag zuvor) holt sich ein Bild von der Raspicam. Wie man einen IP-Cam-Livestream kurz mitschneidet, weiß ich ehrlich gesagt nicht.

              Es geht dann hauptsächlich um die Zeile

                      exec ("raspistill -o cam.jpg")                  // Erzeuge Photo von Raspicam unter /opt/cam.jpg
              
              

              Die musst du entsprechend anpassen. Deine IP Cam könnte zB eine Schnappschussfunktion haben, den man per Webseitenaufruf anstößt, zB
              > [http://192.168.1.44:88/cgi-bin/CGIProxy … d=Passwort](http://192.168.1.44:88/cgi-bin/CGIProxy.fcgi?cmd=snapPicture2&usr=User&pwd=Passwort) bei der Foscam FI9900EP (lt. http://forum.iobroker.net/viewtopic.php … lit=stream)

              Dann musst du herausfinden wie lange es dauert vom Schnappschussaufruf bis zum speichern des Bildes (in meinem Code die 6000 für 6 Sekunden durch eine entsprechende Wartezeit ersetzen) und das war es dann.

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

                Um es mal zu testen habe ich folgendes in den Java Skript eingegeben. Leider bekomme ich keine Nachricht.

                // Grupppe Klingel/Pushover
                
                var idKlingel = "hm-rpc.0.MEQ0277xx7.1.PRESS_SHORT"/*Klingelsensor.PRESS_SHORT*/;   // Homematic Klingelsensor
                
                on({id: idKlingel, val: true}, function() {         // on lauscht auf Klingelsignal   
                        sendTo('telegram', 'Es hat geklingelt');        // Sende Pushovernachricht
                });
                
                1 Reply Last reply Reply Quote 0
                • S
                  Solear last edited by

                  Ist in Telegram ein Bot eingerichtet und hast du vom Handy aus mal nach dem Namen des Unterbots gesucht und ihm etwas geschrieben? Nur so wird er aktiviert..

                  Gesendet von iPad mit Tapatalk

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

                    Den Bot habe ich in meinem Handy eingerichtet (gestartet, Passwort vergeben) er hat mich auch schon begrüßt (Halo Michael) oder muss ich ihn sonst noch aktivieren ?

                    1 Reply Last reply Reply Quote 0
                    • S
                      Solear last edited by

                      Über den Botfather hast du ja sicher nach der Anleitung einen iobroker Bot eingerichtet. Den musst du in der Suche in der Telegram App finden und kurz ansprechen.

                      Ansonsten ist der Teleam Adapter korrekt eingerichtet?

                      Gesendet von iPad mit Tapatalk

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

                        Den Bot habe ich auch gefunden und wenn ich nachrichten schreibe werden sie in iobroker.admin / Objekte /Telegram / communicate/ request … in rot angezeigt

                        Also eingerichtet ist er meiner Meinung. Nur funktioniert der Script nicht beim Klingeln

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

                          ich bin ein Stück weiter. Die Nachrichten kommen auf Telegram an.

                          (Mein Fehler war: ich hatte die Scripte unter Global abgelegt und nicht unter common)

                          jetzt ist das Problem mit den Bildern noch da. Ich bekomme die Bilder nicht gespeichert.

                          ! ````
                          // Grupppe Klingel/Torfoto
                          ! var idKlingel = "hm-rpc.0.MEQ004XXX.1.PRESS_SHORT"/Klingelsensor.PRESS_SHORT/;
                          ! on({id: idKlingel, val: true}, function() {
                          exec ("wget --output-document image.jpg http://IP:port/cgi-bin/CGIProxy.fcgi?cmd=snapPicture2&usr=Cam&pwd=Passwort");

                              sendTo("telegram", "Es hat geklingelt");        // Sende Pushovernachricht
                              sendphoto();                                    // Rufe Funktion sendphoto auf
                          

                          });

                          ! function waittime() { // Nach der Warteschleife, sende das Bild per Telegram
                          sendTo('telegram', "image.jpg");
                          }

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

                            @Michmu:

                            ich bin ein Stück weiter. Die Nachrichten kommen auf Telegram an.

                            (Mein Fehler war: ich hatte die Scripte unter Global abgelegt und nicht unter common)

                            jetzt ist das Problem mit den Bildern noch da. Ich bekomme die Bilder nicht gespeichert.

                            ! ````
                            // Grupppe Klingel/Torfoto
                            ! var idKlingel = "hm-rpc.0.MEQ004XXX.1.PRESS_SHORT"/Klingelsensor.PRESS_SHORT/;
                            ! on({id: idKlingel, val: true}, function() {
                            exec ("wget --output-document image.jpg http://IP:port/cgi-bin/CGIProxy.fcgi?cmd=snapPicture2&usr=Cam&pwd=Passwort");

                                sendTo("telegram", "Es hat geklingelt");        // Sende Pushovernachricht
                                sendphoto();                                    // Rufe Funktion sendphoto auf
                            

                            });

                            ! function waittime() { // Nach der Warteschleife, sende das Bild per Telegram
                            sendTo('telegram', "image.jpg");
                            }
                            ```` `
                            Es kann sein, dass image.jpg woanders gespeichert wird. Versuch mal absolute Pfade zu verwenden.

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

                              Also ich hole mir meine Fotos per download von der Kamera:

                              
                                    var Download = require('download');
                                    var dest = '/images/';
                                    var foto_url0 = "http://camip:port/++image?cameraNum=0&width=1280&height=720&quality=50";
                                    new Download({mode: '777'}).get(foto_url0).dest(dest).rename("cam0.jpg").run()    
                                    setTimeout(function(){ 
                                          sendTo('telegram.0', '/images/cam0.jpg'); 
                                     }, 12000);
                              
                              

                              Gruss

                              1 Reply Last reply Reply Quote 0
                              • S
                                Solear last edited by

                                Das geht aber nur, wenn man sich nicht an der Cam authentifizieren muss.

                                Gesendet von iPhone mit Tapatalk

                                1 Reply Last reply Reply Quote 0
                                • coyote
                                  coyote Most Active last edited by

                                  Habe gestern den js-controller auf Version 0.8.10 hochgezogen, funktioniert es bei euch noch ein Bild zu Telegram zu senden?

                                  on({time: {hour: 9, minute: 6}}, function() {
                                  sendTo('telegram', '/opt/iobroker/foto/kamerabild.jpeg');
                                  log("Foto verschickt");
                                  });
                                  

                                  Im log steht noch "Foto verschickt" aber es kommt nichts mehr an. Text schicken geht ohne Probleme

                                  1 Reply Last reply Reply Quote 0
                                  • S
                                    Solear last edited by

                                    Bei mir ging und geht es. Neustart gemacht?

                                    Gesendet von iPhone mit Tapatalk

                                    1 Reply Last reply Reply Quote 0
                                    • coyote
                                      coyote Most Active last edited by

                                      Hmm ok.

                                      Javascript Instanz und Telegram Adapter schon neu gestartet. Ich versuche mal noch nen kompletten Neustart.

                                      Edit: Nein, leider kein Erfolg.

                                      Cubie jetzt komplett neu gestartet, bringt leider auch nix. Laut Log sollte es verschickt werden, Pfad und Bild sind auch vorhanden.

                                      Keine Ahnung wieso es plötzlich nicht mehr geht. Jemand noch ne Idee wo/wie ich den Fehler suchen kann?

                                      1 Reply Last reply Reply Quote 0
                                      • T
                                        thomassch last edited by

                                        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:
                                        1175_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
                                        • S
                                          Solear last edited by

                                          Hey, danke für das Skript!

                                          Wie lange dauert es bei dir vom Auslösen bis zum Ankommen des Bildes bei Telegram?

                                          Schneller als 2 Sekunden?

                                          1 Reply Last reply Reply Quote 0
                                          • T
                                            thomassch last edited by

                                            @Solear:

                                            Hey, danke für das Skript!

                                            Wie lange dauert es bei dir vom Auslösen bis zum Ankommen des Bildes bei Telegram?

                                            Schneller als 2 Sekunden? `

                                            Hab es nicht gestoppt - die Bilder sind aber 2-3 sekunden später auf der Platte …

                                            da ich die Verzögerung drin habe, sind die 10-20 Sekunden später auch per Telegram auf meinen Handy...

                                            (ich denke aber die Zeit richtet sich nach der Auslastung von Telegram.)

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            425
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

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