Navigation

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

    NEWS

    • [erledigt] 15. 05. Wartungsarbeiten am ioBroker Forum

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    telegram

    This topic has been deleted. Only users with topic management privileges can see it.
    • M
      michihorn last edited by

      Hallöchen
      ich habe den Telegram Adapter 4.0.1 am laufen, leider verliert der Adapter immer mal wieder den Token.
      Aktuell läuft der Adapter, produziert aber viele Fehler, vielleicht hat jemand einen Tip für mich.

      elegram.0
      2025-05-09 10:45:05.822	error	Failed sending [chatId - 6105180270]: Error: ETELEGRAM: 400 Bad Request: message text is empty
      
      telegram.0
      2025-05-09 10:45:05.786	debug	Send message to [Michael]: "undefined"
      
      telegram.0
      2025-05-09 10:45:05.785	debug	Received command "send": {"caption":"Boot Bewegung 10:45:05","type":"photo"}
      
      telegram.0
      2025-05-09 10:45:05.783	silly	States system redis pmessage io.messagebox.system.adapter.telegram.0/io.messagebox.system.adapter.telegram.0:{"command":"send","message":{"caption":"Boot Bewegung 10:45:05","type":"photo"},"from":"system.adapter.javascript.0","_id":47698352}
      
      telegram.0
      2025-05-09 10:45:02.644	error	Failed sending [chatId - 6105180270]: Error: ETELEGRAM: 400 Bad Request: message text is empty
      
      telegram.0
      2025-05-09 10:45:02.616	debug	Send message to [Michael]: "undefined"
      
      telegram.0
      2025-05-09 10:45:02.616	debug	Received command "send": {"caption":"Doorbell Bewegung 10:45:02","type":"photo"}
      
      telegram.0
      2025-05-09 10:45:02.615	silly	States system redis pmessage io.messagebox.system.adapter.telegram.0/io.messagebox.system.adapter.telegram.0:{"command":"send","message":{"caption":"Doorbell Bewegung 10:45:02","type":"photo"},"from":"system.adapter.javascript.0","_id":47698351}
      
      telegram.0
      2025-05-09 10:44:55.837	error	Failed sending [chatId - 6105180270]: Error: ETELEGRAM: 400 Bad Request: message text is empty
      
      telegram.0
      2025-05-09 10:44:55.793	debug	Send message to [Michael]: "undefined"
      
      telegram.0
      2025-05-09 10:44:55.792	debug	Received command "send": {"caption":"Boot Bewegung 10:44:55","type":"photo"}
      
      telegram.0
      2025-05-09 10:44:55.790	silly	States system redis pmessage io.messagebox.system.adapter.telegram.0/io.messagebox.system.adapter.telegram.0:{"command":"send","message":{"caption":"Boot Bewegung 10:44:55","type":"photo"},"from":"system.adapter.javascript.0","_id":47698350}
      
      telegram.0
      2025-05-09 10:44:52.870	error	Failed sending [chatId - 6105180270]: Error: ETELEGRAM: 400 Bad Request: message text is empty
      
      telegram.0
      2025-05-09 10:44:52.766	debug	Send message to [Michael]: "undefined"
      
      telegram.0
      2025-05-09 10:44:52.765	debug	Received command "send": {"caption":"Doorbell Bewegung 10:44:52","type":"photo"}
      
      telegram.0
      2025-05-09 10:44:52.756	silly	States system redis pmessage io.messagebox.system.adapter.telegram.0/io.messagebox.system.adapter.telegram.0:{"command":"send","message":{"caption":"Doorbell Bewegung 10:44:52","type":"photo"},"from":"system.adapter.javascript.0","_id":47698349}
      
      telegram.0
      2025-05-09 10:44:45.814	error	Failed sending [chatId - 6105180270]: Error: ETELEGRAM: 400 Bad Request: message text is empty
      
      telegram.0
      2025-05-09 10:44:45.788	debug	Send message to [Michael]: "undefined"
      
      telegram.0
      2025-05-09 10:44:45.787	debug	Received command "send": {"caption":"Boot Bewegung 10:44:45","type":"photo"}
      
      telegram.0
      2025-05-09 10:44:45.780	silly	States system redis pmessage io.messagebox.system.adapter.telegram.0/io.messagebox.system.adapter.telegram.0:{"command":"send","message":{"caption":"Boot Bewegung 10:44:45","type":"photo"},"from":"system.adapter.javascript.0","_id":47698348}
      
      telegram.0
      2025-05-09 10:44:42.626	error	Failed sending [chatId - 6105180270]: Error: ETELEGRAM: 400 Bad Request: message text is empty
      
      telegram.0
      2025-05-09 10:44:42.598	debug	Send message to [Michael]: "undefined"
      
      telegram.0
      2025-05-09 10:44:42.597	debug	Received command "send": {"caption":"Doorbell Bewegung 10:44:42","type":"photo"}
      
      telegram.0
      2025-05-09 10:44:42.596	silly	States system redis pmessage io.messagebox.system.adapter.telegram.0/io.messagebox.system.adapter.telegram.0:{"command":"send","message":{"caption":"Doorbell Bewegung 10:44:42","type":"photo"},"from":"system.adapter.javascript.0","_id":47698347}
      
      telegram.0
      2025-05-09 10:44:35.810	error	Failed sending [chatId - 6105180270]: Error: ETELEGRAM: 400 Bad Request: message text is empty
      
      telegram.0
      2025-05-09 10:44:35.772	debug	Send message to [Michael]: "undefined"
      
      telegram.0
      2025-05-09 10:44:35.771	debug	Received command "send": {"caption":"Boot Bewegung 10:44:35","type":"photo"}
      
      telegram.0
      2025-05-09 10:44:35.770	silly	States system redis pmessage io.messagebox.system.adapter.telegram.0/io.messagebox.system.adapter.telegram.0:{"command":"send","message":{"caption":"Boot Bewegung 10:44:35","type":"photo"},"from":"system.adapter.javascript.0","_id":47698346}
      
      telegram.0
      2025-05-09 10:44:32.767	silly	Objects user redis pmessage */cfg.o.script.js.SYSTEM.Motion_Doorbell:{"_id":"script.js.SYSTEM.Motion_Doorbell","type":"script","common":{"name":"Motion_Doorbell","expert":true,"engineType":"Javascript/js","enabled":true,"engine":"system.adapter.javascript.0","source":"/*****Bewegung Doorbell ****************************************************\r\n* Mai 2025\r\n* Adapter: \r\n* geä:\r\n*************************************************************************/\r\n\r\nconst idmotion = \"reolink.1.sensor.motion\"\r\nconst camurl = 'http://192.168.188.122/cgi-bin/api.cgi?cmd=Snap&channel=0&rs=wuuPhkmUCeI9WG7C&user=admin&password=roadking04&width=800&height=600'\r\n\r\non({ id: idmotion, change:\"any\" }, function (obj) {\r\n if (obj.state.val == true) {\r\n log(\"Motion Doorbell\")\r\n\r\n httpGet(camurl, { responseType: 'arraybuffer' }, async (err, response) => {\r\n if (!err) {\r\n writeFile('vis.0', '/Doorbell/Doorbell.jpg', response.data, (err) => {\r\n if (err) {\r\n console.error(err);\r\n }\r\n });\r\n } else {\r\n console.error(err);\r\n }\r\n });\r\n }\r\n readFile('vis.0', '/Doorbell/Doorbell.jpg', function (err, img) {\r\n var ereignis_text = formatDate(new Date(obj.state.ts), \"hh:mm:ss\");\r\n sendTo(\"telegram.0\", {\r\n text: img,\r\n caption: \"Doorbell Bewegung \" + ereignis_text,\r\n type: \"photo\"\r\n });\r\n delFileAsync('vis.0', '/Doorbell/Doorbell.jpg')\r\n });\r\n \r\n});","debug":false,"verbose":false},"native":{},"from":"system.adapter.admin.0","user":"system.user.admin","ts":1746780272756,"acl":{"object":1636,"owner":"system.user.admin","ownerGroup":"system.group.administrator"}}
      

      Ich möchte erwähnen, das bis gersten, diese Fehlermeldung nicht vorhanden war. Zwischendurch habe ich nun den Adapter mal neu installiert.

      Gruß
      Michael

      haus-automatisierung 2 Replies Last reply Reply Quote 0
      • 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

                                            693
                                            Online

                                            31.6k
                                            Users

                                            79.5k
                                            Topics

                                            1.3m
                                            Posts

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