Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. DWD Warnung als Telegramm

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    DWD Warnung als Telegramm

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

      Ich will mir, wenn es eine Wetterwarnung gibt ein Telegramm zusenden lassen.

      Ebenso wenn die Warnung aufgehoben wurde.

      Das funktioniert auch, allerdings nur bedingt.

      Ich bekomme ein Telegramm in dem der erste Teil mit Beginn und Ende enthalten ist.

      Der Teil in dem text, Headline und Description stehen sollte fehlt. (wobei unter Objekten in diesen etwas drinnen steht)

      Telegramm sieht so aus:

      "Achtung Wetterwarnungen gültig vom 13.12.2016 05:22 bis 13.12.2016 10:00 : "

      Kann sich das mal jemand ansehen und evtl. korrigieren ?

      var Severity = "dwd.0.warning.severity"/*Warning severity*/;
      
      on(Severity, function (obj){
      if (obj.newState.val !==0) {
      
      var Begin = getState("dwd.0.warning.begin"/*Warning begin*/).val;
      var End = getState("dwd.0.warning.end"/*Warning end*/).val;
      var text = getState("dwd.0.warning.text"/*Warning text*/).val;
      var Headline = getState("dwd.0.warning.headline"/*Warning headline*/).val;
      var Description = getState("dwd.0.warning.description"/*Warning description*/).val;
      
      var DWD_telegramm = "Achtung Wetterwarnungen " + Headline + " gültig vom " + Begin + " bis " + End + ": " + Description ;
      sendTo ("telegram.0", DWD_telegramm);
      //sendTo('telegram.0', "Wetterwarnungen " + ': ' + text + " gültig vom " + Begin + " bis " + End + ': ' + Description);
      //setState (idSayIt2, "Achtung Wetterwarnungen " + Headline + " gültig vom " + Begin + " bis " + End + ': ' + Description);
      }
      if (obj.newState.val === 0) {
      sendTo ("telegram.0", "Alle Wetterwarnungen des Deutschen Wetterdienstes wurden aufgehoben") ;
      //sendTo('telegram.0', "de;80;Alle Wetterwarnungen des Deutschen Wetterdienstes wurden aufgehoben") ;
      }
      //log ("Achtung Wetterwarnungen " + Headline + " gültig vom " + Begin + " bis " + End + ': ' + Description);
      log ( "Wetterwarnungen " + text + " gültig vom " + Begin + " bis " + End + ': ' + Description);
      
      });
      
      1 Reply Last reply Reply Quote 0
      • F
        Fitti last edited by

        Funktioniert bei mir einwandfrei.

        Folgendes ist mir aufgefallen:

        1.) Der Text per Telegram und der Logtext sind unterschiedlich, da Du einmal "Description" und einmal "Text" verwendest.

        2.) Die Description ist aber genau das, was man eigentlich will, die Meldung im Telegram ist perfekt.

        3.) Der Logtext wird in der normalen Anzeige abgeschnitten, was mich selber wundert. Geht man mit der Maus ohne klicken rauf, zeigt die Hoverfunktion aber den gesamten text.

        <u>Meine Ausgabe sieht so aus:</u> ````
        Achtung Wetterwarnungen
        Amtliche WARNUNG vor FROST gültig vom 14.12.2016 18:00 bis 15.12.2016 11:00: Es tritt leichter Frost zwischen 0 °C und -3 °C auf.

        
        Man kann schön testen, indem man bei den Objecten die Severity verändert. So muss man nicht auf echte Änderungen warten.
        
        Schaue es Dir also nochmal an. Das Skript ist in Ordnung.
        
        So long,
        
        Fitti
        1 Reply Last reply Reply Quote 0
        • htrecksler
          htrecksler Forum Testing last edited by

          Falls es doch nicht klappt…

          Nur eine Vermutung...

          kann es vielleicht an der asyncronen Abarbeitung liegen?

          Das telegram wird geschickt, aber die Werte sind noch nicht gefüllt?

          1 Reply Last reply Reply Quote 0
          • F
            Fitti last edited by

            Da sind immer Werte drinnen. Außer beim allersten Start. Sie werden bei Änderungen über schrieben.

            Weiterhin triggert man ja auf eine Änderung.

            1 Reply Last reply Reply Quote 0
            • R
              ralalla last edited by

              @htrecksler:

              Falls es doch nicht klappt…

              Nur eine Vermutung...

              kann es vielleicht an der asyncronen Abarbeitung liegen?

              Das telegram wird geschickt, aber die Werte sind noch nicht gefüllt? `

              Genau das ist es wohl.

              Habe die Bedingung zum Auslösen händisch geändert.

              Die Variablen sind durch eine momentan anstehende Warnung bereits gefüllt.

              Dann kommt auch der ganze Text per Telegramm an.

              Also müsste wohl eine Verzögerung in das Script ?

              Kann mir (als Vollnoob) jemand zeigen an welcher Stelle diese am besten rein sollte und wie diese auszusehen hat ?

              1 Reply Last reply Reply Quote 0
              • lobomau
                lobomau last edited by

                @ralalla:

                @htrecksler:

                Falls es doch nicht klappt…

                Nur eine Vermutung...

                kann es vielleicht an der asyncronen Abarbeitung liegen?

                Das telegram wird geschickt, aber die Werte sind noch nicht gefüllt? `

                Genau das ist es wohl.

                Habe die Bedingung zum Auslösen händisch geändert.

                Die Variablen sind durch eine momentan anstehende Warnung bereits gefüllt.

                Dann kommt auch der ganze Text per Telegramm an.

                Also müsste wohl eine Verzögerung in das Script ?

                Kann mir (als Vollnoob) jemand zeigen an welcher Stelle diese am besten rein sollte und wie diese auszusehen hat ? `
                Hast du die Verzögerung inzwischen eingebaut? Habe dein oberes Script auch seit paar Wochen im Einsatz.

                1 Reply Last reply Reply Quote 0
                • lobomau
                  lobomau last edited by

                  @lobomau:

                  @ralalla:

                  @htrecksler:

                  Falls es doch nicht klappt…

                  Nur eine Vermutung...

                  kann es vielleicht an der asyncronen Abarbeitung liegen?

                  Das telegram wird geschickt, aber die Werte sind noch nicht gefüllt? `

                  Genau das ist es wohl.

                  Habe die Bedingung zum Auslösen händisch geändert.

                  Die Variablen sind durch eine momentan anstehende Warnung bereits gefüllt.

                  Dann kommt auch der ganze Text per Telegramm an.

                  Also müsste wohl eine Verzögerung in das Script ?

                  Kann mir (als Vollnoob) jemand zeigen an welcher Stelle diese am besten rein sollte und wie diese auszusehen hat ? Hast du die Verzögerung inzwischen eingebaut? Habe dein oberes Script auch seit paar Wochen im Einsatz.
                  Angeregt durch den thread http://forum.iobroker.net/viewtopic.php?f=21&t=4622 habe ich etwas rumprobiert, aber ohne Erfolg.

                  Habe dann versucht mit Blockly.
                  1146_dwd-telegram.jpg
                  Für den Bereich "1. mache" hinter dem "timeout" von 10s muss noch was rein.

                  Und zwar soll an telegram geschickt werden die Daten vom DWD-Adapter:

                  dwd.0.warning.begin

                  dwd.0.warning.end

                  dwd.0.warning.text

                  dwd.0.warning.headline

                  dwd.0.warning.description

                  Wie übergebe ich diese Werte über Blockly an telegram?

                  Hier mein bisheriger Block zum Importieren:

                  ! ````
                  <xml xmlns="http://www.w3.org/1999/xhtml"><block type="on_ext" id="Za9:z_OdHrl8gT]^gQ[c" x="-562" y="-237"><mutation items="1"></mutation>
                  <field name="CONDITION">ne</field>

                  <value name="OID0"><shadow type="field_oid" id="{YQ%X[0%aZ?wT=y5x(E-"><field name="oid">dwd.0.warning.severity</field></shadow></value> 
                  <statement name="STATEMENT"><block type="controls_if" id="plycChL,3pMlxYR65=0r"><mutation elseif="1"></mutation>
                      <value name="IF0"><block type="logic_compare" id="S+LPUIh7VMv@[]rVKTyz"><field name="OP">NEQ</field>
                          <value name="A"><block type="get_value" id="_4aPvN2IM%4J:.YTPNEt"><field name="ATTR">val</field>
                              <field name="OID">dwd.0.warning.severity</field></block></value> 
                          <value name="B"><block type="math_number" id="cI~Jnwi%eY+-81OZ81c2"><field name="NUM">0</field></block></value></block></value> 
                      <statement name="DO0"><block type="timeouts_settimeout" id="A?rWXoM=A?4m6iP3sK8V"><field name="NAME">timeout</field>
                          <field name="DELAY">10000</field></block></statement> 
                      <value name="IF1"><block type="logic_compare" id="[qlBv{(7-QMPq`|?^vuz"><field name="OP">EQ</field>
                          <value name="A"><block type="get_value" id="{{iqDnb:d^{~VF1f}K!A"><field name="ATTR">val</field>
                              <field name="OID">dwd.0.warning.severity</field></block></value> 
                          <value name="B"><block type="math_number" id="F,+_tEi%aV/0!K)czU8n"><field name="NUM">0</field></block></value></block></value> 
                      <statement name="DO1"><block type="telegram" id="bj;-+)BQ+pYRIL#wkOj?"><field name="INSTANCE">.1</field>
                  
                          <value name="MESSAGE"><shadow type="text" id="rfJDep:!7yaK~PbK.h%B"><field name="TEXT">Alle Wetterwarnungen des Deutschen Wetterdienstes wurden aufgehoben</field></shadow></value></block></statement></block></statement></block></xml> 
                  
                  
                  EDIT: der Trigger muss auf "aktualisiert" anstatt "geändert" eingestellt sein!
                  1 Reply Last reply Reply Quote 0
                  • blauholsten
                    blauholsten Developer last edited by

                    @ralalla:

                    @htrecksler:

                    Falls es doch nicht klappt…

                    Nur eine Vermutung...

                    kann es vielleicht an der asyncronen Abarbeitung liegen?

                    Das telegram wird geschickt, aber die Werte sind noch nicht gefüllt? `

                    Genau das ist es wohl.

                    Habe die Bedingung zum Auslösen händisch geändert.

                    Die Variablen sind durch eine momentan anstehende Warnung bereits gefüllt.

                    Dann kommt auch der ganze Text per Telegramm an.

                    Also müsste wohl eine Verzögerung in das Script ?

                    Kann mir (als Vollnoob) jemand zeigen an welcher Stelle diese am besten rein sollte und wie diese auszusehen hat ? `
                    Vielleicht so:

                    var Severity = "dwd.0.warning.severity"/*Warning severity*/;
                    
                    on(Severity, function (obj){
                    if (obj.newState.val !==0) {
                    
                    var Begin = getState("dwd.0.warning.begin"/*Warning begin*/).val;
                    var End = getState("dwd.0.warning.end"/*Warning end*/).val;
                    var text = getState("dwd.0.warning.text"/*Warning text*/).val;
                    var Headline = getState("dwd.0.warning.headline"/*Warning headline*/).val;
                    var Description = getState("dwd.0.warning.description"/*Warning description*/).val;
                    
                    var DWD_telegramm = "Achtung Wetterwarnungen " + Headline + " gültig vom " + Begin + " bis " + End + ": " + Description ;
                    setTimeout(function() {
                    sendTo ("telegram.0", DWD_telegramm);
                    //sendTo('telegram.0', "Wetterwarnungen " + ': ' + text + " gültig vom " + Begin + " bis " + End + ': ' + Description);
                    //setState (idSayIt2, "Achtung Wetterwarnungen " + Headline + " gültig vom " + Begin + " bis " + End + ': ' + Description);
                    }, 1000);
                    }
                    if (obj.newState.val === 0) {
                    sendTo ("telegram.0", "Alle Wetterwarnungen des Deutschen Wetterdienstes wurden aufgehoben") ;
                    //sendTo('telegram.0', "de;80;Alle Wetterwarnungen des Deutschen Wetterdienstes wurden aufgehoben") ;
                    }
                    //log ("Achtung Wetterwarnungen " + Headline + " gültig vom " + Begin + " bis " + End + ': ' + Description);
                    log ( "Wetterwarnungen " + text + " gültig vom " + Begin + " bis " + End + ': ' + Description);
                    
                    });
                    
                    1 Reply Last reply Reply Quote 0
                    • P
                      PrinzEisenherz1 last edited by

                      Also ich habe mittlerweile ne Lösung für das Problem! Ich stelle später mal das Script hier rein wenn es gewünscht ist!

                      Gruß Johnny

                      1 Reply Last reply Reply Quote 0
                      • S
                        Sven_Tengeler last edited by

                        Hallo,

                        hier eine mögliche Lösung

                        ~~![](</s><URL url=)<link_text text="http://uploads.tapatalk-cdn.com/2017010 ... 482b62.jpg">http://uploads.tapatalk-cdn.com/20170107/ee6a0a17c5f0b3e1500b4ce092482b62.jpg</link_text>" />

                        Gruß Sven

                        Gesendet von iPhone mit Tapatalk~~

                        1 Reply Last reply Reply Quote 0
                        • lobomau
                          lobomau last edited by

                          @PrinzEisenherz1:

                          Also ich habe mittlerweile ne Lösung für das Problem! Ich stelle später mal das Script hier rein wenn es gewünscht ist!

                          Gruß Johnny `
                          Natürlich. Immer her damit! 🙂

                          1 Reply Last reply Reply Quote 0
                          • lobomau
                            lobomau last edited by

                            @Sven_Tengeler:

                            Hallo,

                            hier eine mögliche Lösung

                            ~~![](</s><URL url=)<link_text text="http://uploads.tapatalk-cdn.com/2017010 ... 482b62.jpg">http://uploads.tapatalk-cdn.com/20170107/ee6a0a17c5f0b3e1500b4ce092482b62.jpg</link_text>" />

                            Gruß Sven

                            Gesendet von iPhone mit Tapatalk~~ ` Danke. Wieder was für Blockly gelernt.

                            1 Reply Last reply Reply Quote 0
                            • P
                              PrinzEisenherz1 last edited by

                              So, hier mein Lösungsansatz.

                              ! /* Script zum Übertragen der DWD-Wetterwarnungen an Telegram */ ! var idWarnung = "dwd.0.warning.description"; var idWarnung1 = "dwd.0.warning1.description"; var idWarnung2 = "dwd.0.warning2.description"; ! function check(){ var Warnung = getState(idWarnung).val; if (Warnung !== "") { var Begin = getState("dwd.0.warning.begin").val; var End = getState("dwd.0.warning.end").val; var text = getState("dwd.0.warning.text").val; var Headline = getState("dwd.0.warning.headline").val; var Description = getState("dwd.0.warning.description").val; var DWD_telegramm = Headline + "\ngültig vom " + Begin + " bis " + End + "\n" + Description ; setTimeout(function() { sendTo ("telegram.0", DWD_telegramm); }, 1 * 1000); } else { sendTo ("telegram.0", "Alle Wetterwarnungen des Deutschen Wetterdienstes wurden aufgehoben") ; } } ! function check1(){ var Warnung1 = getState(idWarnung1).val; if (Warnung1 !== "") { var Begin = getState("dwd.0.warning1.begin").val; var End = getState("dwd.0.warning1.end").val; var text = getState("dwd.0.warning1.text").val; var Headline = getState("dwd.0.warning1.headline").val; var Description = getState("dwd.0.warning1.description").val; var DWD_telegramm = Headline + "\ngültig vom " + Begin + " bis " + End + "\n" + Description ; setTimeout(function() { sendTo ("telegram.0", DWD_telegramm); }, 1 * 1000); } else { sendTo ("telegram.0", "Wetterwarnung No.2 des Deutschen Wetterdienstes wurden aufgehoben") ; } } ! function check2(){ var Warnung2 = getState(idWarnung2).val; if (Warnung2 !== "") { var Begin = getState("dwd.0.warning2.begin").val; var End = getState("dwd.0.warning2.end").val; var text = getState("dwd.0.warning2.text").val; var Headline = getState("dwd.0.warning2.headline").val; var Description = getState("dwd.0.warning2.description").val; var DWD_telegramm = Headline + "\ngültig vom " + Begin + " bis " + End + "\n" + Description ; setTimeout(function() { sendTo ("telegram.0", DWD_telegramm); }, 1 * 1000); } else { sendTo ("telegram.0", "Wetterwarnung No.3 des Deutschen Wetterdienstes wurden aufgehoben") ; } } ! on(idWarnung, function (obj){ if (obj.newState.val !== obj.oldState.val) { check(); } }); ! on(idWarnung1, function (obj){ if (obj.newState.val !== obj.oldState.val) { check1(); } }); ! on(idWarnung2, function (obj){ if (obj.newState.val !== obj.oldState.val) { check2(); } }); !

                              Bei mir klappt es einwandfrei.

                              Bis jetzt fg

                              Gruß

                              Johnny

                              1 Reply Last reply Reply Quote 0
                              • lobomau
                                lobomau last edited by

                                @PrinzEisenherz1:

                                So, hier mein Lösungsansatz.

                                ! /* Script zum Übertragen der DWD-Wetterwarnungen an Telegram */ ! var idWarnung = "dwd.0.warning.description"; var idWarnung1 = "dwd.0.warning1.description"; var idWarnung2 = "dwd.0.warning2.description"; ! function check(){ var Warnung = getState(idWarnung).val; if (Warnung !== "") { var Begin = getState("dwd.0.warning.begin").val; var End = getState("dwd.0.warning.end").val; var text = getState("dwd.0.warning.text").val; var Headline = getState("dwd.0.warning.headline").val; var Description = getState("dwd.0.warning.description").val; var DWD_telegramm = Headline + "\ngültig vom " + Begin + " bis " + End + "\n" + Description ; setTimeout(function() { sendTo ("telegram.0", DWD_telegramm); }, 1 * 1000); } else { sendTo ("telegram.0", "Alle Wetterwarnungen des Deutschen Wetterdienstes wurden aufgehoben") ; } } ! function check1(){ var Warnung1 = getState(idWarnung1).val; if (Warnung1 !== "") { var Begin = getState("dwd.0.warning1.begin").val; var End = getState("dwd.0.warning1.end").val; var text = getState("dwd.0.warning1.text").val; var Headline = getState("dwd.0.warning1.headline").val; var Description = getState("dwd.0.warning1.description").val; var DWD_telegramm = Headline + "\ngültig vom " + Begin + " bis " + End + "\n" + Description ; setTimeout(function() { sendTo ("telegram.0", DWD_telegramm); }, 1 * 1000); } else { sendTo ("telegram.0", "Wetterwarnung No.2 des Deutschen Wetterdienstes wurden aufgehoben") ; } } ! function check2(){ var Warnung2 = getState(idWarnung2).val; if (Warnung2 !== "") { var Begin = getState("dwd.0.warning2.begin").val; var End = getState("dwd.0.warning2.end").val; var text = getState("dwd.0.warning2.text").val; var Headline = getState("dwd.0.warning2.headline").val; var Description = getState("dwd.0.warning2.description").val; var DWD_telegramm = Headline + "\ngültig vom " + Begin + " bis " + End + "\n" + Description ; setTimeout(function() { sendTo ("telegram.0", DWD_telegramm); }, 1 * 1000); } else { sendTo ("telegram.0", "Wetterwarnung No.3 des Deutschen Wetterdienstes wurden aufgehoben") ; } } ! on(idWarnung, function (obj){ if (obj.newState.val !== obj.oldState.val) { check(); } }); ! on(idWarnung1, function (obj){ if (obj.newState.val !== obj.oldState.val) { check1(); } }); ! on(idWarnung2, function (obj){ if (obj.newState.val !== obj.oldState.val) { check2(); } }); !

                                Bei mir klappt es einwandfrei.

                                Bis jetzt fg

                                Gruß

                                Johnny `
                                Sauber! Werde ich wohl übernehmen wegen der 3 Wetter-Warnungen.

                                Ansonsten, mit dem Blockly hat es auch funktioniert:
                                1146_unbenannt.jpg

                                1 Reply Last reply Reply Quote 0
                                • Homoran
                                  Homoran Global Moderator Administrators last edited by

                                  @lobomau:

                                  Sauber! Werde ich wohl übernehmen wegen der 3 Wetter-Warnungen. `
                                  [Spielverderber_on]

                                  Wir hatten heute morgen 4 Wetterwarnungen, von denen die ersten drei gelb, die vierte rot war 😉

                                  [Spielverderber_off]

                                  Gruß

                                  Rainer

                                  1 Reply Last reply Reply Quote 0
                                  • S
                                    Sven_Tengeler last edited by

                                    Ich erweitere Blockly grade für die 3 Warnungsstufen.

                                    Poste es wenn es fertig ist 🙂

                                    Gruß Sven

                                    Gesendet von iPhone mit Tapatalk

                                    1 Reply Last reply Reply Quote 0
                                    • Jeeper.at
                                      Jeeper.at last edited by

                                      [offtopic]

                                      Ich will in Österreich auch so einen tollen gratis Wetterwarndienst. 😞

                                      [/offtopic]

                                      1 Reply Last reply Reply Quote 0
                                      • P
                                        PrinzEisenherz1 last edited by

                                        Meins kann man auch ohne probleme auf eine Wetterwarnung reduzieren oder auf 10 erhöhen. Wie man es am liebsten will.

                                        Ist im Script glaube ich selbsterklärend.

                                        Da muss mal also keinen Mädchenmodus (Spielverderber) anwenden… Lach

                                        1 Reply Last reply Reply Quote 0
                                        • R
                                          ralalla last edited by

                                          So nach etwas Pause bin ich auch wieder da und will mich erst mal bedanken.

                                          Habe das Skript von PrinzEisenherz1 auf 4 Meldungen erweitert, läuft bisher ohne Probleme.

                                          Gesendet von iPhone mit Tapatalk

                                          1 Reply Last reply Reply Quote 0
                                          • P
                                            PrinzEisenherz1 last edited by

                                            Freut mich das es klappt bei dir.

                                            Ist zwar noch nicht ganz perfekt das Script aber nach m Urlaub setz ich mich nochmal ran.

                                            Hab da noch ein zwei Ideen.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            412
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            16
                                            67
                                            10213
                                            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