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. Einsteigerfragen
  4. Telegram / Edit Message [gelöst]

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.5k

Telegram / Edit Message [gelöst]

Geplant Angeheftet Gesperrt Verschoben Einsteigerfragen
7 Beiträge 4 Kommentatoren 522 Aufrufe 4 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.
  • M Offline
    M Offline
    MarkusK
    schrieb am zuletzt editiert von MarkusK
    #1

    Ich möchte das Klingeln an der Haustür per Telegram melden. Jedoch soll die Telegramnachricht einige Sekunden später durch ein Bild ergänzt werden. Dazu möchte ich die Edit-Möglichkeit von Telegram nutzen. Aber bereits das Updaten einer einfachen Textnachricht klapppt nicht.
    Hier beispielhaft zwei Funktionen für senden und updaten. Ich möchte das ganze später erweitern mit Buttons (Tür öffnen) und dem Updates/Hinzufügen eines Fotos.
    Was mache ich falsch?

    function sendtext() {
        sendTo('telegram.0', {
            text: 'Message to chat'
            });
        var messageid=getState("telegram.0.communicate.botSendMessageId").val;
        var chatid=getState("telegram.0.communicate.requestChatId").val;
        setState('telegram_messageid', messageid);
        setState('telegram_chatid', chatid);
    }
    
    function updatetext() {
        sendTo('telegram.0', {
            text: 'New text message',
            editMessageText: {
                options: {
                    chatid: getState("telegram_chatid").val,
                    messageid: getState("telegram_messageid").val,
                }
            }
        });
    }
    
    bahnuhrB ZarelloZ 2 Antworten Letzte Antwort
    0
    • M MarkusK

      Ich möchte das Klingeln an der Haustür per Telegram melden. Jedoch soll die Telegramnachricht einige Sekunden später durch ein Bild ergänzt werden. Dazu möchte ich die Edit-Möglichkeit von Telegram nutzen. Aber bereits das Updaten einer einfachen Textnachricht klapppt nicht.
      Hier beispielhaft zwei Funktionen für senden und updaten. Ich möchte das ganze später erweitern mit Buttons (Tür öffnen) und dem Updates/Hinzufügen eines Fotos.
      Was mache ich falsch?

      function sendtext() {
          sendTo('telegram.0', {
              text: 'Message to chat'
              });
          var messageid=getState("telegram.0.communicate.botSendMessageId").val;
          var chatid=getState("telegram.0.communicate.requestChatId").val;
          setState('telegram_messageid', messageid);
          setState('telegram_chatid', chatid);
      }
      
      function updatetext() {
          sendTo('telegram.0', {
              text: 'New text message',
              editMessageText: {
                  options: {
                      chatid: getState("telegram_chatid").val,
                      messageid: getState("telegram_messageid").val,
                  }
              }
          });
      }
      
      bahnuhrB Online
      bahnuhrB Online
      bahnuhr
      Forum Testing Most Active
      schrieb am zuletzt editiert von
      #2

      @markusk
      Ich hab nicht verstanden was du da machen willst !

      Es ist doch so:

      • du hast irgendein trigger der erkennt, dass geklingelt wurde.
        Bei mir ist es ein Homematic Taster. Und das werdest du aus und dann sendest du ein sendto zu telegram.
        also so:
      on({id: "hm-rpc.0.LEQ0029078.1.PRESS_SHORT", val: true, ack: true}, function() {   // Klingel HM Taster
         sendTo('telegram.0', { user: "abc", text: "Es klingelt!", parse_mode: 'HTML' });
      });
      

      Und ein Bild senden geht so:

          //Bild senden mit Telegram
              request.get({url: 'http://192.168.xxx.xxx:88//cgi-bin/CGIProxy.fcgi?cmd=snapPicture2&usr=xxx&pwd=xxx', encoding: 'binary'}, function (err, response, body) {
                  fs.writeFile("/opt/iobroker/iobroker-data/tmp/snap.jpg", body, 'binary', function(err) {
                  if (err) {
                      console.error(err);
                  } else {
                      console.log('Snapshot sent');
                      sendTo('telegram.0', {text: '/opt/iobroker/iobroker-data/tmp/snap.jpg', caption: 'Haustür: Es klingelt.'});
                  }
                }); 
              });
      
      

      Und natürlich musst du die url angleichen.

      mfg


      Wenn ich helfen konnte, dann Daumen hoch (Pfeil nach oben)!
      Danke.
      gute Forenbeiträge: https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge
      ScreenToGif :https://www.screentogif.com/downloads.html

      M 1 Antwort Letzte Antwort
      0
      • M MarkusK

        Ich möchte das Klingeln an der Haustür per Telegram melden. Jedoch soll die Telegramnachricht einige Sekunden später durch ein Bild ergänzt werden. Dazu möchte ich die Edit-Möglichkeit von Telegram nutzen. Aber bereits das Updaten einer einfachen Textnachricht klapppt nicht.
        Hier beispielhaft zwei Funktionen für senden und updaten. Ich möchte das ganze später erweitern mit Buttons (Tür öffnen) und dem Updates/Hinzufügen eines Fotos.
        Was mache ich falsch?

        function sendtext() {
            sendTo('telegram.0', {
                text: 'Message to chat'
                });
            var messageid=getState("telegram.0.communicate.botSendMessageId").val;
            var chatid=getState("telegram.0.communicate.requestChatId").val;
            setState('telegram_messageid', messageid);
            setState('telegram_chatid', chatid);
        }
        
        function updatetext() {
            sendTo('telegram.0', {
                text: 'New text message',
                editMessageText: {
                    options: {
                        chatid: getState("telegram_chatid").val,
                        messageid: getState("telegram_messageid").val,
                    }
                }
            });
        }
        
        ZarelloZ Offline
        ZarelloZ Offline
        Zarello
        schrieb am zuletzt editiert von
        #3

        Kann es sein, dass die Funktion sendTo asynchron ist? Damit würden direkt nach dem sendTo noch die falschen Werte in den beiden getState abgefragt werden. Ich bin mir aber nicht sicher und habe gerade keine Möglichkeit das zu testen.

        @markusk sagte in Telegram / Edit Message:

        function sendtext() {
            sendTo('telegram.0', {
                text: 'Message to chat'
                });
            var messageid=getState("telegram.0.communicate.botSendMessageId").val;
            var chatid=getState("telegram.0.communicate.requestChatId").val;
        
        1 Antwort Letzte Antwort
        0
        • bahnuhrB bahnuhr

          @markusk
          Ich hab nicht verstanden was du da machen willst !

          Es ist doch so:

          • du hast irgendein trigger der erkennt, dass geklingelt wurde.
            Bei mir ist es ein Homematic Taster. Und das werdest du aus und dann sendest du ein sendto zu telegram.
            also so:
          on({id: "hm-rpc.0.LEQ0029078.1.PRESS_SHORT", val: true, ack: true}, function() {   // Klingel HM Taster
             sendTo('telegram.0', { user: "abc", text: "Es klingelt!", parse_mode: 'HTML' });
          });
          

          Und ein Bild senden geht so:

              //Bild senden mit Telegram
                  request.get({url: 'http://192.168.xxx.xxx:88//cgi-bin/CGIProxy.fcgi?cmd=snapPicture2&usr=xxx&pwd=xxx', encoding: 'binary'}, function (err, response, body) {
                      fs.writeFile("/opt/iobroker/iobroker-data/tmp/snap.jpg", body, 'binary', function(err) {
                      if (err) {
                          console.error(err);
                      } else {
                          console.log('Snapshot sent');
                          sendTo('telegram.0', {text: '/opt/iobroker/iobroker-data/tmp/snap.jpg', caption: 'Haustür: Es klingelt.'});
                      }
                    }); 
                  });
          
          

          Und natürlich musst du die url angleichen.

          mfg

          M Offline
          M Offline
          MarkusK
          schrieb am zuletzt editiert von
          #4

          @bahnuhr:

          Also zum Ersten habe ich bereits einen Fehler gefunden. In den options muss chat_id und message_id mit Unterstrich geschrieben werden:

          options: {
                          chat_id: xxxx,
                          message_id: yyy,
          

          Dann hat es zumindest einmal die nachträgliche Änderung funktioniert. Allerdings nur einmal. Irgendwie kommen da die ID's durcheinander.
          Ich habe auch statt

          var messageid=getState("telegram.0.communicate.botSendMessageId").val;
          

          diese ID verwendet:

          var messageid=getState("telegram.0.communicate.requestMessageId").val;
          

          Das sendto ist asycron, allerdings scheint es schnell genug zu sein, um danach die aktuellen ID's zu liefern. Ich Logge die ID's und diese stehen auch einige Zeit nach dem Senden der ersten Nachricht so in den Datenpunkte drin.

          Also grundsätzlich würde ich gerne mit dem Klingeln sofort eine Message an Telegram senden. Das funktioniert. Schön wäre es, wenn ich dort einen Button habe, um die Tür zu öffnen. Das funktioniert auch mittels:

          sendTo('telegram.0', {
              text:   'Press button',
              reply_markup: {
                  keyboard: [
                      ['Line 1, Button 1', 'Line 1, Button 2'],
                      ['Line 2, Button 3', 'Line 2, Button 4']
                  ],
                  resize_keyboard:   true,
                  one_time_keyboard: true
              }
          });
          

          Ich würde auch ein Foto, ggf. Video senden, was grundsätzlich auch in der einfachen Form ebenfalls funktioniert:

          sendTo('telegram.0', {
                  text:                   '/var/www/html/x.jpg',
                  caption:                'Snapshot',
                  disable_notification:   false
              });
          

          Ich möchte gerne das Foto nachträglich, also in der ursprünglichen Klingel-Message, mit einem Button zum Öffnen unterbringen. Es soll also keine zweite Message mit dem Foto gesendet werden, sondern ein Update der Klingel-Nachricht gemacht werden.
          Das Foto kann ich nicht sofort übermitteln, da ich gerne dazu eine Blink-Kamera (Tochterfirma von Amazon) nutze und das Triggern eines Foto asyncron abläuft. D.h. ich muss mindestens 5 sec. warten, bis ich das Foto in der Cloud abrufen kann. In der Zwischenzeit soll aber bereits die Klingel-Message mit dem Tür-Öffnen-Button (ggf. mit Placeholder-Foto) versendet worden sein. Ich befürchte aber, dass die Telegram API gar nicht alles unterstützt und ich ggf. doch auf eine zweite Nachricht zurückgreifen muss,

          Hintergrund:
          Das ganze System habe ich bereits in ähnlicher Form am Laufen, soll aber durch eine andere und bessere Lösung ersetzt werden. Statt Telegram verwende ich momentan Email, Foto kann ich gleich mitliefern, da ich es bei einem alten Kamerasystem per wget holen kann. Tür öffnen mache ich noch per Relais an einem Arduino, soll aber durch Nuki ersetzt werden.

          bahnuhrB 1 Antwort Letzte Antwort
          0
          • M MarkusK

            @bahnuhr:

            Also zum Ersten habe ich bereits einen Fehler gefunden. In den options muss chat_id und message_id mit Unterstrich geschrieben werden:

            options: {
                            chat_id: xxxx,
                            message_id: yyy,
            

            Dann hat es zumindest einmal die nachträgliche Änderung funktioniert. Allerdings nur einmal. Irgendwie kommen da die ID's durcheinander.
            Ich habe auch statt

            var messageid=getState("telegram.0.communicate.botSendMessageId").val;
            

            diese ID verwendet:

            var messageid=getState("telegram.0.communicate.requestMessageId").val;
            

            Das sendto ist asycron, allerdings scheint es schnell genug zu sein, um danach die aktuellen ID's zu liefern. Ich Logge die ID's und diese stehen auch einige Zeit nach dem Senden der ersten Nachricht so in den Datenpunkte drin.

            Also grundsätzlich würde ich gerne mit dem Klingeln sofort eine Message an Telegram senden. Das funktioniert. Schön wäre es, wenn ich dort einen Button habe, um die Tür zu öffnen. Das funktioniert auch mittels:

            sendTo('telegram.0', {
                text:   'Press button',
                reply_markup: {
                    keyboard: [
                        ['Line 1, Button 1', 'Line 1, Button 2'],
                        ['Line 2, Button 3', 'Line 2, Button 4']
                    ],
                    resize_keyboard:   true,
                    one_time_keyboard: true
                }
            });
            

            Ich würde auch ein Foto, ggf. Video senden, was grundsätzlich auch in der einfachen Form ebenfalls funktioniert:

            sendTo('telegram.0', {
                    text:                   '/var/www/html/x.jpg',
                    caption:                'Snapshot',
                    disable_notification:   false
                });
            

            Ich möchte gerne das Foto nachträglich, also in der ursprünglichen Klingel-Message, mit einem Button zum Öffnen unterbringen. Es soll also keine zweite Message mit dem Foto gesendet werden, sondern ein Update der Klingel-Nachricht gemacht werden.
            Das Foto kann ich nicht sofort übermitteln, da ich gerne dazu eine Blink-Kamera (Tochterfirma von Amazon) nutze und das Triggern eines Foto asyncron abläuft. D.h. ich muss mindestens 5 sec. warten, bis ich das Foto in der Cloud abrufen kann. In der Zwischenzeit soll aber bereits die Klingel-Message mit dem Tür-Öffnen-Button (ggf. mit Placeholder-Foto) versendet worden sein. Ich befürchte aber, dass die Telegram API gar nicht alles unterstützt und ich ggf. doch auf eine zweite Nachricht zurückgreifen muss,

            Hintergrund:
            Das ganze System habe ich bereits in ähnlicher Form am Laufen, soll aber durch eine andere und bessere Lösung ersetzt werden. Statt Telegram verwende ich momentan Email, Foto kann ich gleich mitliefern, da ich es bei einem alten Kamerasystem per wget holen kann. Tür öffnen mache ich noch per Relais an einem Arduino, soll aber durch Nuki ersetzt werden.

            bahnuhrB Online
            bahnuhrB Online
            bahnuhr
            Forum Testing Most Active
            schrieb am zuletzt editiert von
            #5

            @markusk sagte in Telegram / Edit Message:

            Ich möchte gerne das Foto nachträglich, also in der ursprünglichen Klingel-Message, mit einem Button zum Öffnen unterbringen. Es soll also keine zweite Message mit dem Foto gesendet werden, sondern ein Update der Klingel-Nachricht gemacht werden.

            Warum ?

            Dann warte doch einfach 5 Sek. und sende dann das Bild mit der caption ist hat geklingelt.
            Siehe Script oben.

            Warum schwierig ! wenn es auch einfach geht.


            Wenn ich helfen konnte, dann Daumen hoch (Pfeil nach oben)!
            Danke.
            gute Forenbeiträge: https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge
            ScreenToGif :https://www.screentogif.com/downloads.html

            1 Antwort Letzte Antwort
            1
            • liv-in-skyL Offline
              liv-in-skyL Offline
              liv-in-sky
              schrieb am zuletzt editiert von liv-in-sky
              #6

              außer fehler die oben schon beschrieben

              ein test damit funktioniert - es darf nicht unmittelbar alles hintereinander audgeführt werden

              damit gehts - zum testen

              sendtext()
               waiter().then(updatetext)
              //updatetext()
              
              async function sendtext() {
              
                 sendTo('telegram.0', {
              
                     text: 'Message to chat'
              
                     });
                 await wait(1000);
                 var messageid=getState("telegram.0.communicate.botSendMessageId").val;
              
                 var chatid=getState("telegram.0.communicate.botSendChatId").val;
                 await wait(2000);log("hier")
                 setState('0_userdata.0.CONTROL-OWN.AAATEST.telegram_messageid', String(messageid));
              
                 setState('0_userdata.0.CONTROL-OWN.AAATEST.telegram_chatid', String(chatid));
              
              }
              
              
              
              async function updatetext() {
              
                 let mid=getState("0_userdata.0.CONTROL-OWN.AAATEST.telegram_messageid").val
                 let mch=getState("0_userdata.0.CONTROL-OWN.AAATEST.telegram_chatid").val
                 log(mid+'  -  '+mch)
              
              
                 sendTo('telegram.0', {
              
                    text: 'New text message',
              
                     editMessageText: {
              
                         options: {
              
                             chat_id: mch,
              
                             message_id: mid,
                              
              
                         }
              
                     }
              
                 });
              
              }
              
              async function waiter(){  await wait(4000);}
              

              postit-dp (29).gif

              nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

              M 1 Antwort Letzte Antwort
              1
              • liv-in-skyL liv-in-sky

                außer fehler die oben schon beschrieben

                ein test damit funktioniert - es darf nicht unmittelbar alles hintereinander audgeführt werden

                damit gehts - zum testen

                sendtext()
                 waiter().then(updatetext)
                //updatetext()
                
                async function sendtext() {
                
                   sendTo('telegram.0', {
                
                       text: 'Message to chat'
                
                       });
                   await wait(1000);
                   var messageid=getState("telegram.0.communicate.botSendMessageId").val;
                
                   var chatid=getState("telegram.0.communicate.botSendChatId").val;
                   await wait(2000);log("hier")
                   setState('0_userdata.0.CONTROL-OWN.AAATEST.telegram_messageid', String(messageid));
                
                   setState('0_userdata.0.CONTROL-OWN.AAATEST.telegram_chatid', String(chatid));
                
                }
                
                
                
                async function updatetext() {
                
                   let mid=getState("0_userdata.0.CONTROL-OWN.AAATEST.telegram_messageid").val
                   let mch=getState("0_userdata.0.CONTROL-OWN.AAATEST.telegram_chatid").val
                   log(mid+'  -  '+mch)
                
                
                   sendTo('telegram.0', {
                
                      text: 'New text message',
                
                       editMessageText: {
                
                           options: {
                
                               chat_id: mch,
                
                               message_id: mid,
                                
                
                           }
                
                       }
                
                   });
                
                }
                
                async function waiter(){  await wait(4000);}
                

                postit-dp (29).gif

                M Offline
                M Offline
                MarkusK
                schrieb am zuletzt editiert von
                #7

                @liv-in-sky
                Super. Danke. So klappt es. Hatte zwar auch auf ein Timing Problem getippt, aber war mir durch das Loggen der ID's recht sicher, dass die ID's schon geändert waren.

                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

                655

                Online

                32.7k

                Benutzer

                82.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