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. ioBroker Allgemein
  4. telegram

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.1k

telegram

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
20 Beiträge 3 Kommentatoren 1.2k Aufrufe 3 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.
  • haus-automatisierungH haus-automatisierung

    @michihorn Das geht so nicht, Du übergibst die Daten aus readFile direkt an Telegam. Also Binärdaten. Der Telegram-Adapter kann damit aber nicht umgehen und hätte gerne einen Pfad. Dafür habe ich die Funktion createTempFile eingebaut.

    Und @OliverIO hat auch Recht - am besten mit einem weiteren Trigger auf geändert Bild-Dateien reagieren (oder sich den Umweg über das Datei-Management von ioBroker komplett sparen, wenn Du die Datei eh direkt wieder löschen willst).

    Vorschlag 1)

    const idmotion = 'reolink.1.sensor.motion';
    const camurl = 'http://192.168.188.122/cgi-bin/api.cgi?cmd=Snap&channel=0&rs=wuuPhkmUCeI9WG7C&user=admin&password=rxxxxxg04&width=800&height=600';
     
    on({ id: idmotion, change: 'any' }, (obj) => {
      if (obj.state.val == true) {
        log('Motion Doorbell'):
     
        httpGet(camurl, { responseType: 'arraybuffer' }, async (err, response) => {
            if (!err) {
                writeFile('vis.0', '/Doorbell/Doorbell.jpg', response.data, (err) => {
                    if (err) {
                        console.error(err);
                    }
                });
            } else {
                console.error(err);
            }
        });
      }
    });
    
    onFile('vis.0', '/Doorbell/*.jpg', true, async (id, fileName, size, data, mimeType) => {
      const ereignis_text = formatDate(new Date(), 'hh:mm:ss');
    
      sendToAsync('telegram.0', {
          text: createTempFile(fileName, data),
          caption: `Doorbell Bewegung ${ereignis_text}`,
          type: 'photo'
      });
    });
    

    Vorschlag 2:

    const idmotion = 'reolink.1.sensor.motion';
    const camurl = 'http://192.168.188.122/cgi-bin/api.cgi?cmd=Snap&channel=0&rs=wuuPhkmUCeI9WG7C&user=admin&password=rxxxxxg04&width=800&height=600';
     
    on({ id: idmotion, change: 'any' }, (obj) => {
        if (obj.state.val == true) {
          log('Motion Doorbell'):
       
          httpGet(camurl, { responseType: 'arraybuffer' }, async (err, response) => {
              if (!err) {
                  const ereignis_text = formatDate(new Date(obj.state.ts), 'hh:mm:ss');
    
                  sendToAsync('telegram.0', {
                      text: createTempFile(fileName, response.data),
                      caption: `Doorbell Bewegung ${ereignis_text}`,
                      type: 'photo'
                  });
              } else {
                  console.error(err);
              }
          });
        }
    });
    
    OliverIOO Offline
    OliverIOO Offline
    OliverIO
    schrieb am zuletzt editiert von OliverIO
    #10

    @haus-automatisierung

    Ein File handle sollte gemäß Doku auch gehen.
    Vgl. Beispiel
    https://github.com/iobroker-community-adapters/ioBroker.telegram/blob/master/docs/en/README.md#explicit-types-of-messages

    sendTo('telegram.0', 'send', {
        text: fs.readFileSync('/opt/path/picture.png'),
        type: 'photo'
    });
    

    Meine Adapter und Widgets
    TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
    Links im Profil

    1 Antwort Letzte Antwort
    1
    • OliverIOO OliverIO

      @michihorn

      Da ist ein Zeitfehler drin.

      Httpget
      Und Readfile wird relativ zeitnah hintereinander ändernaufgerufen.
      Es ist nicht gesichert, das die callbacks genau auch so in der Reihenfolge fertig sind.

      D.h. Das Bild das du mit HTTPget abrufst ist wahrscheinlich noch nicht vorhanden, wenn du den readfile/telegram Befehl aufrufst.
      Daher auch die Meldung mit undefined oder message empty.

      Wenn du auf die Verwendung der callback Versionen der Funktionen verzichtest und mit await arbeitest, wird es viel logischer von der Abarbeitung her.

      M Offline
      M Offline
      michihorn
      schrieb am zuletzt editiert von
      #11

      @oliverio Ja stimmt, zumindest machmal, aber jetzt weiß ich ja woran es gelegen hat. Danke

      1 Antwort Letzte Antwort
      0
      • haus-automatisierungH haus-automatisierung

        @michihorn Das geht so nicht, Du übergibst die Daten aus readFile direkt an Telegam. Also Binärdaten. Der Telegram-Adapter kann damit aber nicht umgehen und hätte gerne einen Pfad. Dafür habe ich die Funktion createTempFile eingebaut.

        Und @OliverIO hat auch Recht - am besten mit einem weiteren Trigger auf geändert Bild-Dateien reagieren (oder sich den Umweg über das Datei-Management von ioBroker komplett sparen, wenn Du die Datei eh direkt wieder löschen willst).

        Vorschlag 1)

        const idmotion = 'reolink.1.sensor.motion';
        const camurl = 'http://192.168.188.122/cgi-bin/api.cgi?cmd=Snap&channel=0&rs=wuuPhkmUCeI9WG7C&user=admin&password=rxxxxxg04&width=800&height=600';
         
        on({ id: idmotion, change: 'any' }, (obj) => {
          if (obj.state.val == true) {
            log('Motion Doorbell'):
         
            httpGet(camurl, { responseType: 'arraybuffer' }, async (err, response) => {
                if (!err) {
                    writeFile('vis.0', '/Doorbell/Doorbell.jpg', response.data, (err) => {
                        if (err) {
                            console.error(err);
                        }
                    });
                } else {
                    console.error(err);
                }
            });
          }
        });
        
        onFile('vis.0', '/Doorbell/*.jpg', true, async (id, fileName, size, data, mimeType) => {
          const ereignis_text = formatDate(new Date(), 'hh:mm:ss');
        
          sendToAsync('telegram.0', {
              text: createTempFile(fileName, data),
              caption: `Doorbell Bewegung ${ereignis_text}`,
              type: 'photo'
          });
        });
        

        Vorschlag 2:

        const idmotion = 'reolink.1.sensor.motion';
        const camurl = 'http://192.168.188.122/cgi-bin/api.cgi?cmd=Snap&channel=0&rs=wuuPhkmUCeI9WG7C&user=admin&password=rxxxxxg04&width=800&height=600';
         
        on({ id: idmotion, change: 'any' }, (obj) => {
            if (obj.state.val == true) {
              log('Motion Doorbell'):
           
              httpGet(camurl, { responseType: 'arraybuffer' }, async (err, response) => {
                  if (!err) {
                      const ereignis_text = formatDate(new Date(obj.state.ts), 'hh:mm:ss');
        
                      sendToAsync('telegram.0', {
                          text: createTempFile(fileName, response.data),
                          caption: `Doorbell Bewegung ${ereignis_text}`,
                          type: 'photo'
                      });
                  } else {
                      console.error(err);
                  }
              });
            }
        });
        
        M Offline
        M Offline
        michihorn
        schrieb am zuletzt editiert von
        #12

        @haus-automatisierung Danke für die Überarbeitung des Scriptes, ich habe jetzt mal die Variante eingebaut. Danke

        1 Antwort Letzte Antwort
        0
        • haus-automatisierungH haus-automatisierung

          @michihorn Das geht so nicht, Du übergibst die Daten aus readFile direkt an Telegam. Also Binärdaten. Der Telegram-Adapter kann damit aber nicht umgehen und hätte gerne einen Pfad. Dafür habe ich die Funktion createTempFile eingebaut.

          Und @OliverIO hat auch Recht - am besten mit einem weiteren Trigger auf geändert Bild-Dateien reagieren (oder sich den Umweg über das Datei-Management von ioBroker komplett sparen, wenn Du die Datei eh direkt wieder löschen willst).

          Vorschlag 1)

          const idmotion = 'reolink.1.sensor.motion';
          const camurl = 'http://192.168.188.122/cgi-bin/api.cgi?cmd=Snap&channel=0&rs=wuuPhkmUCeI9WG7C&user=admin&password=rxxxxxg04&width=800&height=600';
           
          on({ id: idmotion, change: 'any' }, (obj) => {
            if (obj.state.val == true) {
              log('Motion Doorbell'):
           
              httpGet(camurl, { responseType: 'arraybuffer' }, async (err, response) => {
                  if (!err) {
                      writeFile('vis.0', '/Doorbell/Doorbell.jpg', response.data, (err) => {
                          if (err) {
                              console.error(err);
                          }
                      });
                  } else {
                      console.error(err);
                  }
              });
            }
          });
          
          onFile('vis.0', '/Doorbell/*.jpg', true, async (id, fileName, size, data, mimeType) => {
            const ereignis_text = formatDate(new Date(), 'hh:mm:ss');
          
            sendToAsync('telegram.0', {
                text: createTempFile(fileName, data),
                caption: `Doorbell Bewegung ${ereignis_text}`,
                type: 'photo'
            });
          });
          

          Vorschlag 2:

          const idmotion = 'reolink.1.sensor.motion';
          const camurl = 'http://192.168.188.122/cgi-bin/api.cgi?cmd=Snap&channel=0&rs=wuuPhkmUCeI9WG7C&user=admin&password=rxxxxxg04&width=800&height=600';
           
          on({ id: idmotion, change: 'any' }, (obj) => {
              if (obj.state.val == true) {
                log('Motion Doorbell'):
             
                httpGet(camurl, { responseType: 'arraybuffer' }, async (err, response) => {
                    if (!err) {
                        const ereignis_text = formatDate(new Date(obj.state.ts), 'hh:mm:ss');
          
                        sendToAsync('telegram.0', {
                            text: createTempFile(fileName, response.data),
                            caption: `Doorbell Bewegung ${ereignis_text}`,
                            type: 'photo'
                        });
                    } else {
                        console.error(err);
                    }
                });
              }
          });
          
          M Offline
          M Offline
          michihorn
          schrieb am zuletzt editiert von
          #13

          @haus-automatisierung sagte in telegram:

          Dafür habe ich die Funktion createTempFile eingebaut.

          Das Script moniert den fileName
          text: createTempFile(fileName, response.data),

          javascript.0	15:04:31.098	error	
          
          ReferenceError: fileName is not defined
          
          javascript.0	15:04:31.099	error	
          
              at Object.<anonymous> (script.js.SYSTEM.Motion_Doorbell:26:40)
          
          OliverIOO 1 Antwort Letzte Antwort
          0
          • M michihorn

            @haus-automatisierung sagte in telegram:

            Dafür habe ich die Funktion createTempFile eingebaut.

            Das Script moniert den fileName
            text: createTempFile(fileName, response.data),

            javascript.0	15:04:31.098	error	
            
            ReferenceError: fileName is not defined
            
            javascript.0	15:04:31.099	error	
            
                at Object.<anonymous> (script.js.SYSTEM.Motion_Doorbell:26:40)
            
            OliverIOO Offline
            OliverIOO Offline
            OliverIO
            schrieb am zuletzt editiert von OliverIO
            #14

            @michihorn

            Ok, Du hast überhaupt keine Ahnung von JavaScript?

            Filename ist eine variable in der der Dateiname zu deinem Bild steht.
            Also entweder die Daten die aus dem httprequest kommen als Datei speichern oder besser doch wieder das file handle wie in deinem ursprünglichen Beispiel übergeben.

            Kann es leider nicht selbst nachstellen.

            Meine Adapter und Widgets
            TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
            Links im Profil

            M 1 Antwort Letzte Antwort
            0
            • OliverIOO OliverIO

              @michihorn

              Ok, Du hast überhaupt keine Ahnung von JavaScript?

              Filename ist eine variable in der der Dateiname zu deinem Bild steht.
              Also entweder die Daten die aus dem httprequest kommen als Datei speichern oder besser doch wieder das file handle wie in deinem ursprünglichen Beispiel übergeben.

              Kann es leider nicht selbst nachstellen.

              M Offline
              M Offline
              michihorn
              schrieb am zuletzt editiert von michihorn
              #15

              @oliverio Ich lerne jeden Tag dazu. Es ist noch kein Meister vom Himmel gefallen. ;-)
              Die Variante2 von Hausautomatik habe ich so übernommen. Die Variable fileName war nicht in der Definition angegeben und es ist nicht klar wo wird die Variable "gefüllt", ergo moppert das Script. Leider gibt es auch keine Sendung per Telegram. Ich schaue mir das später nochmal an. Danke erstmal

              OliverIOO 1 Antwort Letzte Antwort
              0
              • M michihorn

                @oliverio Ich lerne jeden Tag dazu. Es ist noch kein Meister vom Himmel gefallen. ;-)
                Die Variante2 von Hausautomatik habe ich so übernommen. Die Variable fileName war nicht in der Definition angegeben und es ist nicht klar wo wird die Variable "gefüllt", ergo moppert das Script. Leider gibt es auch keine Sendung per Telegram. Ich schaue mir das später nochmal an. Danke erstmal

                OliverIOO Offline
                OliverIOO Offline
                OliverIO
                schrieb am zuletzt editiert von
                #16

                @michihorn

                Trage da einfach mal anstatt dessen

                createTempFile('telegram-image.png', response.data)

                Ein.

                Meine Adapter und Widgets
                TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                Links im Profil

                M 1 Antwort Letzte Antwort
                0
                • OliverIOO OliverIO

                  @michihorn

                  Trage da einfach mal anstatt dessen

                  createTempFile('telegram-image.png', response.data)

                  Ein.

                  M Offline
                  M Offline
                  michihorn
                  schrieb am zuletzt editiert von michihorn
                  #17

                  @oliverio sagte in telegram:

                  createTempFile('telegram-image.png', response.data)

                  und wo wird telegram-image.png "gefüllt"? Mit response.data?

                  haus-automatisierungH OliverIOO 2 Antworten Letzte Antwort
                  0
                  • M michihorn

                    @oliverio sagte in telegram:

                    createTempFile('telegram-image.png', response.data)

                    und wo wird telegram-image.png "gefüllt"? Mit response.data?

                    haus-automatisierungH Offline
                    haus-automatisierungH Offline
                    haus-automatisierung
                    Developer Most Active
                    schrieb am zuletzt editiert von
                    #18

                    @michihorn Ist die Doku der Funktion unvollständig?

                    🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
                    🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
                    📚 Meine inoffizielle ioBroker Dokumentation

                    M 1 Antwort Letzte Antwort
                    0
                    • haus-automatisierungH haus-automatisierung

                      @michihorn Ist die Doku der Funktion unvollständig?

                      M Offline
                      M Offline
                      michihorn
                      schrieb am zuletzt editiert von
                      #19

                      @haus-automatisierung Aus meiner Sicht schon, ich werde mich am Montag mal in Ruhe damit beschäftigen.
                      Viele Grüße ;-)

                      1 Antwort Letzte Antwort
                      0
                      • M michihorn

                        @oliverio sagte in telegram:

                        createTempFile('telegram-image.png', response.data)

                        und wo wird telegram-image.png "gefüllt"? Mit response.data?

                        OliverIOO Offline
                        OliverIOO Offline
                        OliverIO
                        schrieb am zuletzt editiert von
                        #20

                        @michihorn

                        Das ist nur der temporäre Dateiname.
                        Gefüllt wird das durch diese Funktion.
                        Der Inhalt kommt von response.data

                        Meine Adapter und Widgets
                        TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                        Links im Profil

                        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
                        FAQ Cloud / IOT
                        HowTo: Node.js-Update
                        HowTo: Backup/Restore
                        Downloads
                        BLOG

                        630

                        Online

                        32.6k

                        Benutzer

                        82.1k

                        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