Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • 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

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Bild vom Telegram Empfangen

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.5k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.0k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.6k

Bild vom Telegram Empfangen

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
25 Beiträge 8 Kommentatoren 3.9k Aufrufe 6 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • N Nahasapee

    @fastfoot

    ja so ein ähnlichen workaround hatte ich mir auch reingebastelt.
    was müsste man den tun, damit es im sourcecode ansprechbar ist?
    in deinem Screenshot sieht man die checkbox ja schon, und in der index_m.html scheint ja auch schon was eingetragen zu sein

    94990103-008b-4bb4-b9ef-7ff6c2b07d65-image.png

    F Offline
    F Offline
    fastfoot
    schrieb am zuletzt editiert von
    #16

    @Nahasapee sagte in Bild vom Telegram Empfangen:

    @fastfoot

    ja so ein ähnlichen workaround hatte ich mir auch reingebastelt.
    was müsste man den tun, damit es im sourcecode ansprechbar ist?
    in deinem Screenshot sieht man die checkbox ja schon, und in der index_m.html scheint ja auch schon was eingetragen zu sein

    94990103-008b-4bb4-b9ef-7ff6c2b07d65-image.png

    ich denke du verwechselst die Dateien. Bei mir steht in der index_m.html gar nix von diesem Setting. Du kannst folgendes darin (index_m.html) einfügen

                    <div class="row">
                        <div class="input-field col s12 m12 l12">
                            <input id="useUsername" class="value" type="checkbox" />
                            <label class="translate" for="useUsername">Store username instead of firstname of remembered users</label>
                        </div>
                    </div>
                    <div class="row">
                        <div class="input-field col s12 m12 l12">
                            <input id="saveFiles" class="value" type="checkbox" />
                            <label class="translate" for="saveFiles">Save media files</label>
                        </div>
                    </div>
    
    

    Sieht dann so aus und funktioniert auf Anhieb(Upload nicht vergessen!)
    Telegram3.PNG

    Es bleibt die Krux dass msg.photo[3] zu msg.photo[2] verändert werden muss, ist also alles nix für den Normalanwender. Ich scheue mich den Einzeiler zum Ändern des Sourcecodes zu posten, unbedarfte Anwender könnten unnötigen Support erzeugen. Man sollte warten bis das gefixt ist

    iobroker läuft unter Docker auf QNAP TS-451+
    SkriptRecovery: https://forum.iobroker.net/post/930558

    1 Antwort Letzte Antwort
    0
    • N Nahasapee

      @fastfoot

      ja so ein ähnlichen workaround hatte ich mir auch reingebastelt.
      was müsste man den tun, damit es im sourcecode ansprechbar ist?
      in deinem Screenshot sieht man die checkbox ja schon, und in der index_m.html scheint ja auch schon was eingetragen zu sein

      94990103-008b-4bb4-b9ef-7ff6c2b07d65-image.png

      F Offline
      F Offline
      fastfoot
      schrieb am zuletzt editiert von
      #17

      @Nahasapee
      Gerade gesehen: Hast du deine Version von Github installiert? Dort ist die index_m.html nämlich bereits geändert. Das bedeutet aber dass das Setting bereits aktiviert ist und auch funktioniert. Der Fehler mit msg.photo[3] ist immer noch da, ich werde das issue entsprechend abändern

      iobroker läuft unter Docker auf QNAP TS-451+
      SkriptRecovery: https://forum.iobroker.net/post/930558

      1 Antwort Letzte Antwort
      0
      • M MCU

        @piForscher
        Ich hab mal ein wenig probiert:

        1. Adapter- Telegram für den User umstellen, an den man ein Bild schicken möchte, insbesondere, wenn man mehrere Telegram-Instanzen laufen hat! Man muß es nur bei der Instanz ändern, zu der man auch ein Bild schicken möchte!

        iobroker-telegram-Bild-holen.PNG

        1. Man bekommt jetzt die RAW Daten: (in denen steht dann auch die file_id)

        iobroker-telegram-Bild-holen-Request_RAW.PNG

        1. Verarbeiten der RAW Daten:
          Hinter dem Wort"bot" kommt direkt der "Token" (steht in den Haupteinstellungen!)
          !!Die file_id wird ohne "" hinter der Variablen geschrieben!!!
          -> Beispiel: https://api.telegram.org/bot1234kjhgasdf73425jhdfgoiuzfgdlkjh2345i/getFile?file_id=aJHGSDmndasafjh

        getFile mit dem file_id (String) als Request ----> .........."file_path":"photos/file_0.jpg"

        Danach aus result den file_path lesen und verarbeiten:
        (!!!! den 2. request im Bild nicht machen sondern den macht man im Javascript)

        iobroker-telegram-Bild-holen-Request_RAW-verarbeiten.PNG

        1. Dann das File mittels Javascript direkt in eine Datei lesen:

        iobroker-telegram-Bild-holen-Request_RAW-Bild-schreiben.PNG

        Pogrammierung von der Javascript-Funktion:
        !!! Wichtig!! hier ist Gesamtpfad anders, bzw zwischen "...telegram.org" und "bot<token>" muß /file/ stehen. !!!!

        iobroker-telegram-Bild-holen-Request_RAW-Bild-schreiben-Prog.PNG

        Und schon hat man das Bild in dem entsprechenden Verzeichnis.
        Kann ja jemand, der sich besser mit Javascript auskennt, vielleicht mal in eine komplette Funktion umwandeln?
        P.S.: Gerade nochmal ausprobiert
        Funktioniert auch mit voice-Nachrichten usw. Man kann damit anscheinend alle Dateien, die man in Telegram erzeugt oder gespeichert hat abrufen.

        Ich hoffe es hilft ein wenig.

        M Online
        M Online
        MCU
        schrieb am zuletzt editiert von MCU
        #18

        @piForscher
        So hab jetzt eine Funktion geschrieben, mit der man also automatisch alle Dateien, die man zum User_BOT in Telegram einfügt, herunterlädt:

        var fs = require('fs');
        var DATEN,FILE_ID_STR,FILE_PATH_GES, FILE_PATH;
        
        const token = 'DEIN_TOKEN_EINTRAGEN'; //!!!!!! ÄNDERN
        
        const url_telegram_file = 'https://api.telegram.org/file/bot' + token +'/';
        const url_telegram = 'https://api.telegram.org/bot' + token +'/';
        const Speicher_Verzeichnis = '/media/shares/bilder/';
        // Eintrag in Objekt lesen
        //console.log(FILE_ID_STR);
        STR_1 = RAW_DATEN.indexOf('file_id') + 1;
        STR_2 = RAW_DATEN.slice(((RAW_DATEN.indexOf('file_id') + 1) - 1), RAW_DATEN.length).indexOf(',') + 1;
        STR_3 = (STR_1 + STR_2) - 3;
        FILE_ID_STR = (RAW_DATEN.slice(((STR_1 + 10) - 1), STR_3));
        try {
          require("request")(([url_telegram,'getFile?file_id=',FILE_ID_STR].join('')), function (error, response, result) {
            console.log("Result " + result);
            FILE_PATH_GES = result;
            //console.log("FILE" + FILE_PATH_GES);
          }).on("error", function (e) {console.error(e);});
        } catch (e) { console.error("Error" + e); }
        
        timeout3 = setTimeout(function () {
            
            //console.log("FILE " + FILE_PATH_GES);
            //FILE_PATH besorgen
            STR_1 = FILE_PATH_GES.indexOf('file_path') + 1;
            //STR_3 = FILE_PATH_GES.length;
            STR_2 = FILE_PATH_GES.slice(STR_1+11, FILE_PATH_GES.length).indexOf('"');
            FILE_PATH = FILE_PATH_GES.slice(STR_1+11 , STR_1 + 11 + STR_2);
            //console.log (FILE_PATH);
            //FILE_SCHREIBEN
            const url = url_telegram_file + "/" + FILE_PATH ;
            //console.log(url);
            console.log(Speicher_Verzeichnis + FILE_PATH);
            //FILE_PATH untersuchen und Typ ermitteln evtl Verzeichnis anlegen
            STR_1 = FILE_PATH.indexOf('/');
            STR_2 = FILE_PATH.slice(0,STR_1);
            //console.log(STR_2);
            //Verzeichnis ermittelt
            //Prüfen ist Verzeichnis vorhanden
            
            if(!fs.existsSync(Speicher_Verzeichnis + STR_2)){
            fs.mkdirSync(Speicher_Verzeichnis + STR_2, 0777, function(err){
                if(err){
                    console.log(err);
                    // echo the result back
                    response.send("ERROR! Konnte Verzeichnis nicht erstellen! \n");
                }
            });
        }
            
            request(url, {encoding:'binary'}, function(error, response, body) {
                fs.writeFile(Speicher_Verzeichnis  +FILE_PATH, body, 'binary', function (err) {
                    if(err) log('Fehler!');
                });                
            });
            
        }, 1000);
        
        

        Dann entsprechend das TOKEN eintragen bei token = " ";

        Und dann das Verzeichnis Speicher_Verzeichnis = '/media/shares/bilder/'; anpassen. (Wichtig: Volle Zugriffsrechte für iobroker)

        Diese Funktion in den Javascript Baustein einbauen
        iobroker-telegram-Bild-holen-automatisch.PNG

        Also die drei Punkte klicken und dort das gesamte Script einfügen!
        Den Trigger anlegen für das RAW Objekt für den entsprechenden User (telegram.0 oder telegram.1) usw.

        Da ich leider nicht weiß wie man in dem entsprechenden Verzeichnis ein Ordner mit den richtigen Berechtigungen anlegt, kann es vorkommen, daß man bei ersten Mal pro Typ von Datei (Voice,document,photos) als Ausgabe "Fehler" bekommt.
        ioBroker muß halt alle Rechte dort haben als User und muß Verzeichnisse anlegen dürfen.

        Also einmal alle Typen in Telegram schicken, bzw zu dem User einstellen. -> Es kommt jedesmal ein Fehler. Aber die Verzeichnisse werden angelegt.

        Danach hab ich mir geholfen mit der Konsole:
        Einmal für Das Verzeichnis in das die Daten geschrieben werden
        sudo chmod -R 777 /media/shares/bilder
        !!muß für Dein Verzeichnis angepasst werden!!!

        Wenn man das einmal für alle Typen gemacht hat, werden alle Dateien die man jetzt in Telegram einstellt in das Verzeichnis geschrieben mit dem richtigen Unterverzeichnis (/documents, /photos, /voice).```

        NUC i7 64GB mit Proxmox ---- Jarvis Infos Aktualisierungen der Doku auf Instagram verfolgen -> mcuiobroker Instagram
        Wenn Euch mein Vorschlag geholfen hat, bitte rechts "^" klicken.

        1 Antwort Letzte Antwort
        0
        • P Offline
          P Offline
          piForscher
          schrieb am zuletzt editiert von
          #19

          Hi,
          jetzt habe ich die guten Ideen endlich mal umgesetzt.
          Ich habe den Telegram-Adapter auf den aktuellen Stand von Github aktualisiert und das Blockly incl. Script erstellt.
          Mein Token aheb ich angepasst, ebenso wie den Speicherpfad für /media/shares/bilder/ und die Berechtigung.

          Wenn ich ein Bild per Telegram an meinen Bot schicke, bekomme ich in iobroker die Fehlermeldung: polling_error:undefined, Cannot read property 'file_id' of undefined

          Das ist wohl eine Meldung vom Adapter, das Blockly-Script ist da noch gar nicht aktiv geworden.
          Adapter-Einstellungen: Polling, save media files...

          Hat jemand eine Idee, was ich noch falsch habe ?

          Danke!

          –----------------------------------

          44 HM-Geräte mit CCU2

          iobroker auf MSI Ubuntu, Raspi2 und RaspiB.


          M F 2 Antworten Letzte Antwort
          0
          • P piForscher

            Hi,
            jetzt habe ich die guten Ideen endlich mal umgesetzt.
            Ich habe den Telegram-Adapter auf den aktuellen Stand von Github aktualisiert und das Blockly incl. Script erstellt.
            Mein Token aheb ich angepasst, ebenso wie den Speicherpfad für /media/shares/bilder/ und die Berechtigung.

            Wenn ich ein Bild per Telegram an meinen Bot schicke, bekomme ich in iobroker die Fehlermeldung: polling_error:undefined, Cannot read property 'file_id' of undefined

            Das ist wohl eine Meldung vom Adapter, das Blockly-Script ist da noch gar nicht aktiv geworden.
            Adapter-Einstellungen: Polling, save media files...

            Hat jemand eine Idee, was ich noch falsch habe ?

            Danke!

            M Online
            M Online
            MCU
            schrieb am zuletzt editiert von
            #20

            @piForscher Schick mal die Bilder von der Telegram-Instanz. Ich habe diese Einstell-Möglichkeit nicht!

            NUC i7 64GB mit Proxmox ---- Jarvis Infos Aktualisierungen der Doku auf Instagram verfolgen -> mcuiobroker Instagram
            Wenn Euch mein Vorschlag geholfen hat, bitte rechts "^" klicken.

            F 1 Antwort Letzte Antwort
            0
            • P piForscher

              Hi,
              jetzt habe ich die guten Ideen endlich mal umgesetzt.
              Ich habe den Telegram-Adapter auf den aktuellen Stand von Github aktualisiert und das Blockly incl. Script erstellt.
              Mein Token aheb ich angepasst, ebenso wie den Speicherpfad für /media/shares/bilder/ und die Berechtigung.

              Wenn ich ein Bild per Telegram an meinen Bot schicke, bekomme ich in iobroker die Fehlermeldung: polling_error:undefined, Cannot read property 'file_id' of undefined

              Das ist wohl eine Meldung vom Adapter, das Blockly-Script ist da noch gar nicht aktiv geworden.
              Adapter-Einstellungen: Polling, save media files...

              Hat jemand eine Idee, was ich noch falsch habe ?

              Danke!

              F Offline
              F Offline
              fastfoot
              schrieb am zuletzt editiert von
              #21

              @piForscher sagte in Bild vom Telegram Empfangen:

              Hat jemand eine Idee, was ich noch falsch habe ?

              Das dürfte an dem hier beschriebenen Fehler liegen, der ist auch auf Github noch nicht gefixt, es gibt aber ein issue dazu

              iobroker läuft unter Docker auf QNAP TS-451+
              SkriptRecovery: https://forum.iobroker.net/post/930558

              1 Antwort Letzte Antwort
              0
              • M MCU

                @piForscher Schick mal die Bilder von der Telegram-Instanz. Ich habe diese Einstell-Möglichkeit nicht!

                F Offline
                F Offline
                fastfoot
                schrieb am zuletzt editiert von
                #22

                @MCU sagte in Bild vom Telegram Empfangen:

                Ich habe diese Einstell-Möglichkeit nicht!

                Die GitHub-Version hat diese Einstellung, siehe hier

                iobroker läuft unter Docker auf QNAP TS-451+
                SkriptRecovery: https://forum.iobroker.net/post/930558

                M 1 Antwort Letzte Antwort
                0
                • F fastfoot

                  @MCU sagte in Bild vom Telegram Empfangen:

                  Ich habe diese Einstell-Möglichkeit nicht!

                  Die GitHub-Version hat diese Einstellung, siehe hier

                  M Online
                  M Online
                  MCU
                  schrieb am zuletzt editiert von
                  #23

                  @fastfoot Dann braucht man das Script nicht mehr, wenn die Instanz das schon drin hat!
                  Script sollte unabhängig davon funktionieren! Notwendig sind dafür die RAW-Daten!

                  NUC i7 64GB mit Proxmox ---- Jarvis Infos Aktualisierungen der Doku auf Instagram verfolgen -> mcuiobroker Instagram
                  Wenn Euch mein Vorschlag geholfen hat, bitte rechts "^" klicken.

                  F P 2 Antworten Letzte Antwort
                  0
                  • M MCU

                    @fastfoot Dann braucht man das Script nicht mehr, wenn die Instanz das schon drin hat!
                    Script sollte unabhängig davon funktionieren! Notwendig sind dafür die RAW-Daten!

                    F Offline
                    F Offline
                    fastfoot
                    schrieb am zuletzt editiert von
                    #24

                    @MCU sagte in Bild vom Telegram Empfangen:

                    @fastfoot Dann braucht man das Script nicht mehr, wenn die Instanz das schon drin hat!
                    Script sollte unabhängig davon funktionieren! Notwendig sind dafür die RAW-Daten!

                    Genau richtig! Da wegen des beschriebenen (Noch-)Fehlers Fummelei am Source notwendig ist, sollte man momentan aber Dein Skript verwenden, das funktioniert ja gut und die Save media Files Einstellung ist dafür eben auch nicht notwendig, so dass man mit der latest/stable hinkommt

                    iobroker läuft unter Docker auf QNAP TS-451+
                    SkriptRecovery: https://forum.iobroker.net/post/930558

                    1 Antwort Letzte Antwort
                    0
                    • M MCU

                      @fastfoot Dann braucht man das Script nicht mehr, wenn die Instanz das schon drin hat!
                      Script sollte unabhängig davon funktionieren! Notwendig sind dafür die RAW-Daten!

                      P Offline
                      P Offline
                      piForscher
                      schrieb am zuletzt editiert von
                      #25

                      @MCU
                      OK, habs verstanden und auch jetzt gelöst:
                      In der Adapterkonfiguration muss im Reiter 'Nachrichten' die Option 'Speichere Original-Requests...' angewählt sein (Hatte den Punkt von dir übersehen).

                      Dann sehe ich das auch im Datenpunkt 'telegram.0.communicate.requestRaw' (der war nämlich vorher leer).

                      Danke!
                      Jetzt geht's weiter...

                      –----------------------------------

                      44 HM-Geräte mit CCU2

                      iobroker auf MSI Ubuntu, Raspi2 und RaspiB.


                      1 Antwort Letzte Antwort
                      0
                      Antworten
                      • In einem neuen Thema antworten
                      Anmelden zum Antworten
                      • Älteste zuerst
                      • Neuste zuerst
                      • Meiste Stimmen


                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      313

                      Online

                      32.4k

                      Benutzer

                      81.4k

                      Themen

                      1.3m

                      Beiträge
                      Community
                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                      ioBroker Community 2014-2025
                      logo
                      • Anmelden

                      • Du hast noch kein Konto? Registrieren

                      • Anmelden oder registrieren, um zu suchen
                      • Erster Beitrag
                        Letzter Beitrag
                      0
                      • Home
                      • Aktuell
                      • Tags
                      • Ungelesen 0
                      • Kategorien
                      • Unreplied
                      • Beliebt
                      • GitHub
                      • Docu
                      • Hilfe