Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. [gelöst] Telegram Reihenfolge Ausgabe falsch

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    720

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

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

[gelöst] Telegram Reihenfolge Ausgabe falsch

Scheduled Pinned Locked Moved JavaScript
10 Posts 2 Posters 834 Views 2 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • D Offline
    D Offline
    drapo
    wrote on last edited by drapo
    #1

    Hallo zusammen

    Ich gebe mir mittels dem folgenden Skript und dem Radar-Trap Adapter neue Radar Meldungen über Telegram aus. Dabei erhalte ich die GPS Daten als Karte und ich möchte natürlich direkt unter der Karte auch den Ort und die Strasse haben. Leider bekomme ich es häufig wie auf dem Bild völlig nach Zufall. So ist es nicht lesbar. Wie kann ich das verbessern dass das alles in der richtigen Reihenfolge erscheint?

    
    function sendImage() {
    
        var Liste, telegram, i, obj, koordinaten, lon, lat, Stadt, Strasse;
    
    
    Liste = getState('radar-trap.0.mi7-x6GA0Bg75EzychceA.direction-0.speedTraps').val;
    telegram = '';
    var i_end = Liste.length;
    var i_inc = 1;
    if (1 > i_end) {
      i_inc = -i_inc;
    }
    for (i = 1; i_inc >= 0 ? i <= i_end : i >= i_end; i += i_inc) { 
      obj = Liste[(i - 1)];
      koordinaten = getAttr(obj, 'geometry.coordinates');
      lon = parseFloat((koordinaten[0]));
      lat = parseFloat((koordinaten[1]));
      Stadt = getAttr(obj, 'properties.city');
      Strasse = getAttr(obj, 'properties.street');
      telegram = [Strasse,'\n',Stadt].join('');
      setTimeout(3000);             
            sendTo('telegram.0', {
    
                text: telegram
    
            });
        setTimeout(3000); 
            sendTo('telegram.0', {
    
                latitude: lat,
                longitude: lon,
    
            });
        }
     };
    
    on("javascript.0.Test", function (obj) {
    
            sendTo('telegram.0', {text: 'Achtung neuer Radar!''});
            setTimeout(sendImage, 2000);
    
        
     });
    
    

    und so sieht es dann in Telegram aus. Vor allem wenn es viele Meldungen sind total unbrauchbar.

    b090ef77-54a6-46af-a227-55d8a2a57bf8-grafik.png

    haus-automatisierungH 1 Reply Last reply
    0
    • D drapo

      Hallo zusammen

      Ich gebe mir mittels dem folgenden Skript und dem Radar-Trap Adapter neue Radar Meldungen über Telegram aus. Dabei erhalte ich die GPS Daten als Karte und ich möchte natürlich direkt unter der Karte auch den Ort und die Strasse haben. Leider bekomme ich es häufig wie auf dem Bild völlig nach Zufall. So ist es nicht lesbar. Wie kann ich das verbessern dass das alles in der richtigen Reihenfolge erscheint?

      
      function sendImage() {
      
          var Liste, telegram, i, obj, koordinaten, lon, lat, Stadt, Strasse;
      
      
      Liste = getState('radar-trap.0.mi7-x6GA0Bg75EzychceA.direction-0.speedTraps').val;
      telegram = '';
      var i_end = Liste.length;
      var i_inc = 1;
      if (1 > i_end) {
        i_inc = -i_inc;
      }
      for (i = 1; i_inc >= 0 ? i <= i_end : i >= i_end; i += i_inc) { 
        obj = Liste[(i - 1)];
        koordinaten = getAttr(obj, 'geometry.coordinates');
        lon = parseFloat((koordinaten[0]));
        lat = parseFloat((koordinaten[1]));
        Stadt = getAttr(obj, 'properties.city');
        Strasse = getAttr(obj, 'properties.street');
        telegram = [Strasse,'\n',Stadt].join('');
        setTimeout(3000);             
              sendTo('telegram.0', {
      
                  text: telegram
      
              });
          setTimeout(3000); 
              sendTo('telegram.0', {
      
                  latitude: lat,
                  longitude: lon,
      
              });
          }
       };
      
      on("javascript.0.Test", function (obj) {
      
              sendTo('telegram.0', {text: 'Achtung neuer Radar!''});
              setTimeout(sendImage, 2000);
      
          
       });
      
      

      und so sieht es dann in Telegram aus. Vor allem wenn es viele Meldungen sind total unbrauchbar.

      b090ef77-54a6-46af-a227-55d8a2a57bf8-grafik.png

      haus-automatisierungH Online
      haus-automatisierungH Online
      haus-automatisierung
      Developer Most Active
      wrote on last edited by haus-automatisierung
      #2

      @drapo setTimeout funktioniert so nicht. Damit kannst Du keine Ausführung auf die Art verzögern.

      Du kannst wait nutzen. Das liefert ein Promise zurück, wodurch Du mit await die Ausführung pausieren kannst:

      https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md#wait

      Dafür muss deine Funktion aber als asynchron definiert werden. Ist nix ioBroker spezifisches. Javascript Promises anschauen.

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

      D 1 Reply Last reply
      0
      • haus-automatisierungH haus-automatisierung

        @drapo setTimeout funktioniert so nicht. Damit kannst Du keine Ausführung auf die Art verzögern.

        Du kannst wait nutzen. Das liefert ein Promise zurück, wodurch Du mit await die Ausführung pausieren kannst:

        https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md#wait

        Dafür muss deine Funktion aber als asynchron definiert werden. Ist nix ioBroker spezifisches. Javascript Promises anschauen.

        D Offline
        D Offline
        drapo
        wrote on last edited by
        #3

        @haus-automatisierung und wie kann ich mein problem lösen? am liebsten wäre mir natürlich wenn die Strasse und der Ort direkt in der GPS Nachricht verbaut ist. Wenn das nicht geht lebe ich natürlich auch mit 2 Nachrichten resp. 1x GPS und 1x Strasse und Ort. Nur in der richtigen Reihenfolge muss es kommen.

        Wie löse ich so etwas?

        haus-automatisierungH 1 Reply Last reply
        0
        • D drapo

          @haus-automatisierung und wie kann ich mein problem lösen? am liebsten wäre mir natürlich wenn die Strasse und der Ort direkt in der GPS Nachricht verbaut ist. Wenn das nicht geht lebe ich natürlich auch mit 2 Nachrichten resp. 1x GPS und 1x Strasse und Ort. Nur in der richtigen Reihenfolge muss es kommen.

          Wie löse ich so etwas?

          haus-automatisierungH Online
          haus-automatisierungH Online
          haus-automatisierung
          Developer Most Active
          wrote on last edited by haus-automatisierung
          #4

          @drapo Erstmal solltest Du deinen Code richtig einrücken und alles überflüssige entfernen. Sieht ja schrecklich aus :)

          So z.B. (nur im Browser programmiert, also keine Garantie auf Vollständigkeit):

          async function sendImage() {
              const speedTraps = getState('radar-trap.0.mi7-x6GA0Bg75EzychceA.direction-0.speedTraps').val;
          
              for (const speedTrap of speedTraps) {
                  await sendToAsync('telegram.0', {
                      text: `${speedTrap.properties.city}\n${speedTrap.properties.street}`
                  });
          
                  await wait(1000);
          
                  const coordinates = speedTrap.geometry.coordinates;
          
                  await sendToAsync('telegram.0', {
                      latitude: parseFloat(coordinates[1]),
                      longitude: parseFloat(coordinates[0]),
                  });
              }
          }
          
          on('javascript.0.Test', async (obj) => {
              await sendToAsync('telegram.0', { text: 'Achtung neuer Radar!' });
              setTimeout(sendImage, 2000);
          });
          
          

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

          D 2 Replies Last reply
          0
          • haus-automatisierungH haus-automatisierung

            @drapo Erstmal solltest Du deinen Code richtig einrücken und alles überflüssige entfernen. Sieht ja schrecklich aus :)

            So z.B. (nur im Browser programmiert, also keine Garantie auf Vollständigkeit):

            async function sendImage() {
                const speedTraps = getState('radar-trap.0.mi7-x6GA0Bg75EzychceA.direction-0.speedTraps').val;
            
                for (const speedTrap of speedTraps) {
                    await sendToAsync('telegram.0', {
                        text: `${speedTrap.properties.city}\n${speedTrap.properties.street}`
                    });
            
                    await wait(1000);
            
                    const coordinates = speedTrap.geometry.coordinates;
            
                    await sendToAsync('telegram.0', {
                        latitude: parseFloat(coordinates[1]),
                        longitude: parseFloat(coordinates[0]),
                    });
                }
            }
            
            on('javascript.0.Test', async (obj) => {
                await sendToAsync('telegram.0', { text: 'Achtung neuer Radar!' });
                setTimeout(sendImage, 2000);
            });
            
            
            D Offline
            D Offline
            drapo
            wrote on last edited by
            #5

            @haus-automatisierung wenn man weiss wie es geht scheint es am Ende immer sehr einfach. Muss ehrlich sagen denke das hätte ich alleine nicht geschafft. Danke Dir vielmals. Ausserdem bin ich doch recht stolz dass mir DER Matthias Kleine geholfen hat :-)

            1 Reply Last reply
            1
            • haus-automatisierungH haus-automatisierung

              @drapo Erstmal solltest Du deinen Code richtig einrücken und alles überflüssige entfernen. Sieht ja schrecklich aus :)

              So z.B. (nur im Browser programmiert, also keine Garantie auf Vollständigkeit):

              async function sendImage() {
                  const speedTraps = getState('radar-trap.0.mi7-x6GA0Bg75EzychceA.direction-0.speedTraps').val;
              
                  for (const speedTrap of speedTraps) {
                      await sendToAsync('telegram.0', {
                          text: `${speedTrap.properties.city}\n${speedTrap.properties.street}`
                      });
              
                      await wait(1000);
              
                      const coordinates = speedTrap.geometry.coordinates;
              
                      await sendToAsync('telegram.0', {
                          latitude: parseFloat(coordinates[1]),
                          longitude: parseFloat(coordinates[0]),
                      });
                  }
              }
              
              on('javascript.0.Test', async (obj) => {
                  await sendToAsync('telegram.0', { text: 'Achtung neuer Radar!' });
                  setTimeout(sendImage, 2000);
              });
              
              
              D Offline
              D Offline
              drapo
              wrote on last edited by drapo
              #6

              @haus-automatisierung das skript läuft soweit und macht das was es soll. Ich habe allerdings eine Herausforderung bei der ich Dich nochmals um Hilfe bitten möchte.

              Es kann nun sein, dass ich Informationen zu bestehenden Blitzern erneut kriege. Da ich einen Blitzer aber nur einmal als neu angezeigt haben möchte, müsste man die json mit den inhalten vergleichen. Am besten nur city und street vergleichen da die anderen inhalte nicht relevant sind. Wenn ein Eintrag neu dazu gekommen ist, soll die Info kommen. Wenn jedoch alles gleich ist, dann keine neue Info.

              Könntest Du mir nochmals behilflich sein? Dank Dir

              haus-automatisierungH 1 Reply Last reply
              0
              • D drapo

                @haus-automatisierung das skript läuft soweit und macht das was es soll. Ich habe allerdings eine Herausforderung bei der ich Dich nochmals um Hilfe bitten möchte.

                Es kann nun sein, dass ich Informationen zu bestehenden Blitzern erneut kriege. Da ich einen Blitzer aber nur einmal als neu angezeigt haben möchte, müsste man die json mit den inhalten vergleichen. Am besten nur city und street vergleichen da die anderen inhalte nicht relevant sind. Wenn ein Eintrag neu dazu gekommen ist, soll die Info kommen. Wenn jedoch alles gleich ist, dann keine neue Info.

                Könntest Du mir nochmals behilflich sein? Dank Dir

                haus-automatisierungH Online
                haus-automatisierungH Online
                haus-automatisierung
                Developer Most Active
                wrote on last edited by
                #7

                @drapo sagte in [gelöst] Telegram Reihenfolge Ausgabe falsch:

                Könntest Du mir nochmals behilflich sein? Dank Dir

                Ich hoffe Du bist Teilnehmer im ioBroker-Master-Kurs wenn Du mir hier schon Programmieraufträge verteilst :)

                So z.B. Offene Themen:

                • Cache knownSpeedTraps irgendwann zurücksetzen (Schedule?)
                • Cache geht bei Neustart des Scripts oder des Adapters verloren (halb so wild?)
                const knownSpeedTraps = [];
                
                async function sendImage() {
                    const speedTraps = getState('radar-trap.0.mi7-x6GA0Bg75EzychceA.direction-0.speedTraps').val;
                
                    for (const speedTrap of speedTraps) {
                        const city = speedTrap.properties.city;
                        const street = speedTrap.properties.street;
                
                        const cacheKey = `${city}-${street}`;
                        if (!knownSpeedTraps.includes(cacheKey)) {
                            knownSpeedTraps.push(cacheKey);
                
                            await sendToAsync('telegram.0', {
                                text: `${city}\n${street}`
                            });
                
                            await wait(1000);
                
                            const coordinates = speedTrap.geometry.coordinates;
                
                            await sendToAsync('telegram.0', {
                                latitude: parseFloat(coordinates[1]),
                                longitude: parseFloat(coordinates[0]),
                            });
                        }
                    }
                }
                
                on('javascript.0.Test', async (obj) => {
                    await sendToAsync('telegram.0', { text: 'Achtung neuer Radar!' });
                    setTimeout(sendImage, 2000);
                });
                

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

                D 2 Replies Last reply
                1
                • haus-automatisierungH haus-automatisierung

                  @drapo sagte in [gelöst] Telegram Reihenfolge Ausgabe falsch:

                  Könntest Du mir nochmals behilflich sein? Dank Dir

                  Ich hoffe Du bist Teilnehmer im ioBroker-Master-Kurs wenn Du mir hier schon Programmieraufträge verteilst :)

                  So z.B. Offene Themen:

                  • Cache knownSpeedTraps irgendwann zurücksetzen (Schedule?)
                  • Cache geht bei Neustart des Scripts oder des Adapters verloren (halb so wild?)
                  const knownSpeedTraps = [];
                  
                  async function sendImage() {
                      const speedTraps = getState('radar-trap.0.mi7-x6GA0Bg75EzychceA.direction-0.speedTraps').val;
                  
                      for (const speedTrap of speedTraps) {
                          const city = speedTrap.properties.city;
                          const street = speedTrap.properties.street;
                  
                          const cacheKey = `${city}-${street}`;
                          if (!knownSpeedTraps.includes(cacheKey)) {
                              knownSpeedTraps.push(cacheKey);
                  
                              await sendToAsync('telegram.0', {
                                  text: `${city}\n${street}`
                              });
                  
                              await wait(1000);
                  
                              const coordinates = speedTrap.geometry.coordinates;
                  
                              await sendToAsync('telegram.0', {
                                  latitude: parseFloat(coordinates[1]),
                                  longitude: parseFloat(coordinates[0]),
                              });
                          }
                      }
                  }
                  
                  on('javascript.0.Test', async (obj) => {
                      await sendToAsync('telegram.0', { text: 'Achtung neuer Radar!' });
                      setTimeout(sendImage, 2000);
                  });
                  
                  D Offline
                  D Offline
                  drapo
                  wrote on last edited by
                  #8

                  @haus-automatisierung wenn Du mir versichern kannst dass du solch komplexe themen wie cache ebenfalls in deinem master kurs abhandelst hast du sofort einen neuen kunden gewonnen :-)

                  Vielen Dank für die erneute Unterstützung. Hätte ich wieder nicht hingekriegt. Um den Cache zu löschen denke ich dass ich das Skript 1x pro Woche per scheduler neu starte. ich denke das ist für mich das einfachste da ich keine ahnung habe ich ich das sonst lösen soll

                  1 Reply Last reply
                  0
                  • haus-automatisierungH haus-automatisierung

                    @drapo sagte in [gelöst] Telegram Reihenfolge Ausgabe falsch:

                    Könntest Du mir nochmals behilflich sein? Dank Dir

                    Ich hoffe Du bist Teilnehmer im ioBroker-Master-Kurs wenn Du mir hier schon Programmieraufträge verteilst :)

                    So z.B. Offene Themen:

                    • Cache knownSpeedTraps irgendwann zurücksetzen (Schedule?)
                    • Cache geht bei Neustart des Scripts oder des Adapters verloren (halb so wild?)
                    const knownSpeedTraps = [];
                    
                    async function sendImage() {
                        const speedTraps = getState('radar-trap.0.mi7-x6GA0Bg75EzychceA.direction-0.speedTraps').val;
                    
                        for (const speedTrap of speedTraps) {
                            const city = speedTrap.properties.city;
                            const street = speedTrap.properties.street;
                    
                            const cacheKey = `${city}-${street}`;
                            if (!knownSpeedTraps.includes(cacheKey)) {
                                knownSpeedTraps.push(cacheKey);
                    
                                await sendToAsync('telegram.0', {
                                    text: `${city}\n${street}`
                                });
                    
                                await wait(1000);
                    
                                const coordinates = speedTrap.geometry.coordinates;
                    
                                await sendToAsync('telegram.0', {
                                    latitude: parseFloat(coordinates[1]),
                                    longitude: parseFloat(coordinates[0]),
                                });
                            }
                        }
                    }
                    
                    on('javascript.0.Test', async (obj) => {
                        await sendToAsync('telegram.0', { text: 'Achtung neuer Radar!' });
                        setTimeout(sendImage, 2000);
                    });
                    
                    D Offline
                    D Offline
                    drapo
                    wrote on last edited by
                    #9

                    @haus-automatisierung hab mir dein script nochmals studiert. Würde denn die Definition von knownSpeedTraps als var anstatt const das Problem des Cache zurücksetzen nicht automatisch lösen?

                    haus-automatisierungH 1 Reply Last reply
                    0
                    • D drapo

                      @haus-automatisierung hab mir dein script nochmals studiert. Würde denn die Definition von knownSpeedTraps als var anstatt const das Problem des Cache zurücksetzen nicht automatisch lösen?

                      haus-automatisierungH Online
                      haus-automatisierungH Online
                      haus-automatisierung
                      Developer Most Active
                      wrote on last edited by
                      #10

                      @drapo nein. Das ändert nur den scope (in diesem fall auch nicht). Var einfach nie benutzten (nur let und const).

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

                      1 Reply Last reply
                      0

                      Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                      Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                      With your input, this post could be even better 💗

                      Register Login
                      Reply
                      • Reply as topic
                      Log in to reply
                      • Oldest to Newest
                      • Newest to Oldest
                      • Most Votes


                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      448

                      Online

                      32.7k

                      Users

                      82.6k

                      Topics

                      1.3m

                      Posts
                      Community
                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                      ioBroker Community 2014-2025
                      logo
                      • Login

                      • Don't have an account? Register

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Home
                      • Recent
                      • Tags
                      • Unread 0
                      • Categories
                      • Unreplied
                      • Popular
                      • GitHub
                      • Docu
                      • Hilfe