Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. telegram

    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

    telegram

    This topic has been deleted. Only users with topic management privileges can see it.
    • haus-automatisierung
      haus-automatisierung Developer Most Active @michihorn last edited by

      @michihorn sagte in telegram:

      leider verliert der Adapter immer mal wieder den Token.

      Das passiert eigentlich nur, wenn man die Instanz per setObject z.B. aus Scripts heraus regelmäßig neustartet. Was man nie tun sollte, ...

      M 1 Reply Last reply Reply Quote 0
      • M
        michihorn @haus-automatisierung last edited by

        @haus-automatisierung Das tue ich bewusst nicht, bislang hatte ich die Fehlermeldung nicht. Ich habe einen zweiten IOB für mein privates Haus laufen, mit der selben Installation, dort habe ich den fehler nicht

        haus-automatisierung 1 Reply Last reply Reply Quote 0
        • haus-automatisierung
          haus-automatisierung Developer Most Active @michihorn last edited by

          @michihorn sagte in telegram:

          Ich habe einen zweiten IOB für mein privates Haus laufen

          Aber nicht mit dem gleichen Token, sondern einem zusätzlichen Bot, oder? Das gleiche Token für mehrere Instanzen nutzen funktioniert nicht.

          M 1 Reply Last reply Reply Quote 0
          • haus-automatisierung
            haus-automatisierung Developer Most Active @michihorn last edited by

            @michihorn sagte in telegram:

            ETELEGRAM: 400 Bad Request: message text is empty

            Zeig am besten mal, wie genau Du die Nachricht zusammenbaust und sendest.

            M 1 Reply Last reply Reply Quote 0
            • M
              michihorn @haus-automatisierung last edited by

              @haus-automatisierung Nee, das ist klar es war ein eigener Token 😉

              1 Reply Last reply Reply Quote 0
              • M
                michihorn @haus-automatisierung last edited by michihorn

                @haus-automatisierung

                /*****Bewegung Doorbell ****************************************************
                * Mai 2025
                * Adapter: 
                * geä:
                *************************************************************************/
                
                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" }, function (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);
                        }
                    });
                   }
                    readFile('vis.0', '/Doorbell/Doorbell.jpg', function (err, img) {
                        var ereignis_text = formatDate(new Date(obj.state.ts), "hh:mm:ss");
                        sendTo("telegram.0", {
                            text: img,
                            caption: "Doorbell Bewegung " + ereignis_text,
                            type: "photo"
                        });
                        delFileAsync('vis.0', '/Doorbell/Doorbell.jpg')
                    });
                    
                });
                

                Aktuell ist das jetzt die Fehlermeldung

                elegram.0
                	2025-05-09 12:12:09.035	error	Failed sending [chatId - 6105180270]: Error: ETELEGRAM: 400 Bad Request: message text is empty
                telegram.0
                	2025-05-09 12:12:03.582	error	Failed sending [chatId - 6105180270]: Error: ETELEGRAM: 400 Bad Request: message text is empty
                telegram.0
                	2025-05-09 12:11:59.114	error	Failed sending [chatId - 6105180270]: Error: ETELEGRAM: 400 Bad Request: message text is empty
                telegram.0
                	2025-05-09 12:11:53.525	error	Failed sending [chatId - 6105180270]: Error: ETELEGRAM: 400 Bad Request: message text is empty
                telegram.0
                	2025-05-09 12:11:49.124	error	Failed sending [chatId - 6105180270]: Error: ETELEGRAM: 400 Bad Request: message text is empty
                telegram.0
                	2025-05-09 12:11:48.590	error	Failed sending [chatId - 6105180270]: Error: ETELEGRAM: 400 Bad Request: message text is empty
                telegram.0
                	2025-05-09 12:11:40.331	error	Failed sending [chatId - 6105180270]: Error: ETELEGRAM: 400 Bad Request: message text is empty
                telegram.0
                	2025-05-09 12:11:36.294	error	Failed sending [chatId - 6105180270]: Error: ETELEGRAM: 400 Bad Request: message text is empty
                telegram.0
                	2025-05-09 12:11:30.005	error	Failed sending [chatId - 6105180270]: Error: ETELEGRAM: 400 Bad Request: message text is empty
                telegram.0
                	2025-05-09 12:11:23.893	error	Failed sending [chatId - 6105180270]: Error: ETELEGRAM: 400 Bad Request: message text is empty
                telegram.0
                	2025-05-09 12:11:19.774	error	Failed sending [chatId - 6105180270]: Error: ETELEGRAM: 400 Bad Request: message text is empty
                telegram.0
                	2025-05-09 12:11:13.677	error	Failed sending [chatId - 6105180270]: Error: ETELEGRAM: 400 Bad Request: message text is empty
                telegram.0
                	2025-05-09 12:11:10.434	error	Failed sending [chatId - 6105180270]: Error: ETELEGRAM: 400 Bad Request: message text is empty
                telegram.0
                	2025-05-09 12:11:04.927	error	Failed sending [chatId - 6105180270]: Error: ETELEGRAM: 400 Bad Request: message text is empty
                telegram.0
                	2025-05-09 12:10:59.677	error	Failed sending [chatId - 6105180270]: Error: ETELEGRAM: 400 Bad Request: message text is empty
                telegram.0
                	2025-05-09 12:10:53.561	error	Failed sending [chatId - 6105180270]: Error: ETELEGRAM: 400 Bad Request: message text is empty
                telegram.0
                	2025-05-09 12:10:49.077	error	Failed sending [chatId - 6105180270]: Error: ETELEGRAM: 400 Bad Request: message text is empty
                telegram.0
                	2025-05-09 12:10:44.206	error	Failed sending [chatId - 6105180270]: Error: ETELEGRAM: 400 Bad Request: message text is empty
                telegram.0
                	2025-05-09 12:10:42.514	error	Failed sending [chatId - 6105180270]: Error: ETELEGRAM: 400 Bad Request: message text is empty
                
                OliverIO haus-automatisierung 2 Replies Last reply Reply Quote 0
                • OliverIO
                  OliverIO @michihorn last edited by 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 1 Reply Last reply Reply Quote 1
                  • haus-automatisierung
                    haus-automatisierung Developer Most Active @michihorn last edited by 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);
                              }
                          });
                        }
                    });
                    
                    OliverIO M 3 Replies Last reply Reply Quote 1
                    • OliverIO
                      OliverIO @haus-automatisierung last edited by OliverIO

                      @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'
                      });
                      
                      1 Reply Last reply Reply Quote 1
                      • M
                        michihorn @OliverIO last edited by

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

                        1 Reply Last reply Reply Quote 0
                        • M
                          michihorn @haus-automatisierung last edited by

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

                          1 Reply Last reply Reply Quote 0
                          • M
                            michihorn @haus-automatisierung last edited by

                            @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)
                            
                            OliverIO 1 Reply Last reply Reply Quote 0
                            • OliverIO
                              OliverIO @michihorn last edited by 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 1 Reply Last reply Reply Quote 0
                              • M
                                michihorn @OliverIO last edited by 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

                                OliverIO 1 Reply Last reply Reply Quote 0
                                • OliverIO
                                  OliverIO @michihorn last edited by

                                  @michihorn

                                  Trage da einfach mal anstatt dessen

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

                                  Ein.

                                  M 1 Reply Last reply Reply Quote 0
                                  • M
                                    michihorn @OliverIO last edited by michihorn

                                    @oliverio sagte in telegram:

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

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

                                    haus-automatisierung OliverIO 2 Replies Last reply Reply Quote 0
                                    • haus-automatisierung
                                      haus-automatisierung Developer Most Active @michihorn last edited by

                                      @michihorn Ist die Doku der Funktion unvollständig?

                                      M 1 Reply Last reply Reply Quote 0
                                      • M
                                        michihorn @haus-automatisierung last edited by

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

                                        1 Reply Last reply Reply Quote 0
                                        • OliverIO
                                          OliverIO @michihorn last edited by

                                          @michihorn

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

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

                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate
                                          FAQ Cloud / IOT
                                          HowTo: Node.js-Update
                                          HowTo: Backup/Restore
                                          Downloads
                                          BLOG

                                          874
                                          Online

                                          31.9k
                                          Users

                                          80.2k
                                          Topics

                                          1.3m
                                          Posts

                                          3
                                          20
                                          531
                                          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