Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. [Script] DWD/UWZ/NINA Warnungen als Push/Sprachnachrichten

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [Script] DWD/UWZ/NINA Warnungen als Push/Sprachnachrichten

    This topic has been deleted. Only users with topic management privileges can see it.
    • T
      ticaki Developer last edited by ticaki

      update:

      v0.97.4

      • Änderung im oberen Teil: ca. 92-104 hab die Zeile darüber und darunter mit hineingenommen
      /* ************************************************************************ */ // ab nächster Zeile kopieren
      var konstanten = [
          {'name':'telegram','value':1,count:0, delay:200, maxChar: 4000 },
          {"name":'pushover',"value":2, count:0, delay:1000, maxChar: 1000},
          {"name":'email',"value":4},
          {"name":'sayit',"value":8, count:0, delay:0, maxChar: 940},
          {"name":'home24',"value":16, count:0, delay:0},
          {"name":'alexa',"value":32, count:0, delay:0, maxChar: 940},
          {"name":'state',"value":64},
          {"name":'iogo',"value":128, maxChar: 940}
      ];
      const TELEGRAM = konstanten[0].value; // die nicht kopieren sondern bis hier hin.
      
      
      • Nina: lange Urls werden verworfen
      • Nina: Urls die nicht ins Muster passen werden verworfen
      • lange Nachrichten werden in mehrere Teile aufgesplittet. (Telegram, Pushover, Alexa, SayIT) Bei Sayit weiß ich nicht die Zeichenzahl.
      • KK

      Für ioGo hab ich es nicht eingebaut, finde da auch nix zur maximalen Zeichenanzahl.

      1 Reply Last reply Reply Quote 0
      • M
        maddingamer last edited by

        Moin,
        Erstmal wirklich sehr gutes Script. Ich bin begeistert!
        Zwei Fragen habe ich allerdings (und ich komme irgendwie mit dem Scrollen hier noch nicht so zurecht..)

        1. Brauche ich den NINA-Adapter noch, da die AGS im Script selbst ja auch eingetragen sind? (sind da eig. auch 2 Landkreise wie im Adapter möglich?)

        2. Gibt es die Möglichkeit einer Verkürzen Ausgabe? Also z.B. nur die Überschrift einer Meldung? Bei den ganzen Corona-Meldungen ist es doch ehr nervig wenn Alexa erstmal ne halbe Stunde sappelt 😄

        T 1 Reply Last reply Reply Quote 0
        • T
          ticaki Developer @maddingamer last edited by

          @maddingamer sagte in [Script] DWD/UWZ/NINA Warnungen als Push/Sprachnachrichten:

          Moin,
          Erstmal wirklich sehr gutes Script. Ich bin begeistert!
          Zwei Fragen habe ich allerdings (und ich komme irgendwie mit dem Scrollen hier noch nicht so zurecht..)

          1. Brauche ich den NINA-Adapter noch, da die AGS im Script selbst ja auch eingetragen sind? (sind da eig. auch 2 Landkreise wie im Adapter möglich?)

          Ja du brauchst den Nina Adapter.

          Das muß ich mal eindeutiger beschreiben. Da kommt nicht die AGS rein.
          Der Nina Adapter gibt die Meldungen für die AGS aus. Das können Meldungen für das Bundesland, oder für den Kreis oder genau für deine Stadt/Dorf sein. Das Script sucht nach dem von dir benannten Kreis oder Stadt/Dorf und gibt diese zusätzlich aus, so das man überregionale Warnungen von regionalen unterscheiden kann.

          Hab z.B. bei Nina schon Trinkwasserwarnungen für 3 Dörfer gesehen.

          1. Gibt es die Möglichkeit einer Verkürzen Ausgabe? Also z.B. nur die Überschrift einer Meldung? Bei den ganzen Corona-Meldungen ist es doch ehr nervig, wenn Alexa erstmal ne halbe Stunde sappelt

          Ich hab Halsschmerzen und trockenen Husten... Gehe davon aus, das ich Zeit hab das einzubauen. 😉 Ich hab selbst schon darüber nachgedacht. Ich denke die beste Lösung ist eine Option in der man eine maximale Zeichenanzahl angeben kann. Wenn die Meldung diese übersteigt, wird nur die Headline ausgegeben. (für Sayit & Alexa)

          1 Reply Last reply Reply Quote 0
          • T
            ticaki Developer last edited by ticaki

            v0.97.5

            • Neue Konfigurationsoption: uMaxCharToSpeak hier könnt ihr die maximale Anzahl an Zeichen die über die Sprachausgabe ausgegeben werden eingeben. Wird es überschritten wird nur die Schlagzeile ausgegeben.
            • ansonsten KK (keine Konfigurationsänderung)
            • Telegram Fehler: im ChatId-Zweig war ein Fehler der das Skript beendet hat.
            • Sprachausgabe Fehler: Der "x weitere Warnungen" Zähler war kaputt.

            v.0.97.5.1

            • Wenn uMaxCharToSpeak die Nachricht begrenzt wird "Weiterführende Informationen sind vorhanden." angehangen.
            • KK

            Einfügen ab ca 224

            // Obergrenze an Zeichen die über Sprachausgabe ausgegeben werden, bei überschreitung wird nur die Schlagzeile ausgegebenen
            var uMaxCharToSpeak = 0; // 0 = aus - Zahl größer als 0 = maximal Zeichenanzahl (1000 ist ein guter Wert)
            

            1000 Zeichen sind rund 86 Sekunden bla bla... die größte aktuelle Meldung sind um die 9 Minuten 😞

            M 1 Reply Last reply Reply Quote 0
            • M
              maddingamer @ticaki last edited by

              @ticaki
              Mega gut! Ich danke dir!
              Könntest du uMaxCharToSpeak auch für z.B. Telegramm einbinden? Auch da würde es mir reichen, wenn ich nur die Headline bekomme, statt so sehr viel Text.. Genauer nachschauen kann man das im Bedarfsfall ja immer nochmal 🙂

              Nebenbei noch eine andere Frage: Zum updaten muss man doch auch noch den Block bei Zeile 1071 einfügen.. Das hattest du in deinem Post nicht dazugeschrieben 😉 Ich habe einfach direkt nochmal das Script neu von Github geholt.. Daher ist mir das aufgefallen 😄

              T 2 Replies Last reply Reply Quote 0
              • T
                ticaki Developer @maddingamer last edited by

                @maddingamer
                Update Anleitung steht im Script. da steht im code 123456 von da ab muß man alles kopieren sowie die Änderungen in der Config die ich hier poste. Oder halt komplett 🙂

                M 1 Reply Last reply Reply Quote 0
                • M
                  maddingamer @ticaki last edited by

                  @ticaki wer lesen kann ist klar im Vorteil... Danke dir 😄

                  1 Reply Last reply Reply Quote 0
                  • T
                    ticaki Developer @maddingamer last edited by ticaki

                    @maddingamer sagte in [Script] DWD/UWZ/NINA Warnungen als Push/Sprachnachrichten:

                    @ticaki
                    Mega gut! Ich danke dir!
                    Könntest du uMaxCharToSpeak auch für z.B. Telegramm einbinden? Auch da würde es mir reichen, wenn ich nur die Headline bekomme, statt so sehr viel Text.. Genauer nachschauen kann man das im Bedarfsfall ja immer nochmal 🙂

                    Du könntest ja erstmal ab Zeile ca. 1042 diesen Code

                    das würde es dann für dich schon mal lösen.

                    Edit: nächstes Posting enthält die eingebaute Version

                    1 Reply Last reply Reply Quote 0
                    • T
                      ticaki Developer last edited by ticaki

                      v0.97.6

                      • Funktion: Das Hinzufügen von Beschreibung und Handlungsanweisungen zu Text- und/oder Sprachnachrichten, kann abgeschaltet werden. Dieses betrifft keine Emailbenachrichtigungen.
                      • Konfigurationsänderungen bitte einfügen ansonsten KK
                        Ab ca. 238 einfügen
                      // Mit diesen Optionen verringert man die Nachrichtenlänge in dem Beschreibung oder Handlungsanweisungen
                      // nicht der Nachricht hinzugefügt werden.
                      var uTextMitBeschreibung            = true; // gilt nicht für Email, aber für alle anderen Textnachrichten
                      var uTextMitAnweisungen             = true; // uTextMitAnweisungen muß evenfalls true sein um Anweisungen zu erhalten
                      var uSpracheMitBeschreibung         = true; // gilt für alle Sprachnachrichten
                      var uSpracheMitAnweisungen          = true; // uSpracheMitBeschreibung muß evenfalls true sein um Anweisungen zu erhalten
                      
                      
                      M 1 Reply Last reply Reply Quote 0
                      • M
                        maddingamer @ticaki last edited by

                        @ticaki Sehr genial! Danke!!

                        Nochmal eine Frage: Legt das Script irgendwie einen Datenpunkt mit dem Text an, den es "weglässt"?
                        Ich lasse mir die Warnungen z.B. per Telegramm schicken und da wäre es ggf. sinnvoll, an den Telegramm Bot ein Befehl wie "zeige Beschreibung" oder Ähnliches zu schicken, um dann genauere Infos zu bekommen. Damit man nur mehr Infos bekommt, wenn man sie haben möchte... Kannst du mir folgen was ich meine? 😄 Muss nicht unbedingt in dein Script eingebunden werden wenn du da nicht von überzeugt bist, aber eine kleine Hilfe wäre nett 🙂

                        T 1 Reply Last reply Reply Quote 0
                        • T
                          ticaki Developer @maddingamer last edited by ticaki

                          @maddingamer
                          Suche in deinem Script nach diesem hier:

                          // Plain text
                          

                          darunter findest du diesen Code

                                      if ((getPushModeFlag(mode) & CANPLAIN & todoBitmask) != 0) {
                                          let pushMsg = headline + getArtikelMode(mode) + area + (bt ? NEWLINE + sTime : '')
                                          if (uTextMitBeschreibung) {
                                              pushMsg+= NEWLINE + description;
                                              if (uTextMitAnweisungen && !!instruction && typeof instruction === 'string' && instruction.length > 2) {
                          

                          den ersetzt du durch diesen:

                                      if ((getPushModeFlag(mode) & CANPLAIN & todoBitmask) != 0) {
                                          let pushMsg = headline + getArtikelMode(mode) + area + (bt ? NEWLINE + sTime : '')
                                          if (uTextMitBeschreibung || onClickCheckRun) {
                                              pushMsg+= NEWLINE + description;
                                              if ((uTextMitAnweisungen || onClickCheckRun) && !!instruction && typeof instruction === 'string' && instruction.length > 2) {
                          
                          

                          und dann tippst du in Telegram Ww? ein 🙂

                          Nachteil: alle Manuell ausgelösten Textnachrichten haben den vollen Text.

                          Ich baue mir gerade einen Telegram Handler zusammen mit dem ich meine Bude steuern, Wetterwarnungen anfordern und Treibstoffpreise an meiner Lieblingstankstelle abrufen kann. Keine Ahnung ob das Interessant ist, auf jeden Fall braucht man für den Handler etwas mehr Erfahrung. Mußte über deine Anfrage deshalb etwas lächeln, da ich da schon länger am rumbasteln bin.

                          M 1 Reply Last reply Reply Quote 0
                          • M
                            maddingamer @ticaki last edited by

                            @ticaki Ich glaube ich belasse es dann erstmal bei den "kurzen" Meldungen.. mit dem ganzen Telegram-Krams steige ich noch nicht so wirklich durch 😄

                            T 1 Reply Last reply Reply Quote 0
                            • T
                              ticaki Developer @maddingamer last edited by ticaki

                              @maddingamer
                              Jetzt hast du mich falsch verstanden.

                              Nimm die Änderungen im Code vor und tippe Ww? in Telegram.

                              Das man mit Telegram die Nachrichten anfordern kann ist schon seit langem eingebaut. Nur dass du es mit beschreibungen bekommst erfodert änderungen im Code.

                              M 1 Reply Last reply Reply Quote 0
                              • M
                                maddingamer @ticaki last edited by

                                @ticaki

                                Das man mit Telegram die Nachrichten anfordern kann ist schon seit langem eingebaut.

                                Gibt es dazu irgenwie eine Doku? 😄

                                Nimm die Änderungen im Code vor und tippe Ww? in Telegram.

                                Das funktioniert, aber jetzt bekomme ich auch wenn ich über javascript.0.wetterwarnung.commands.telegram die Warnung(en) manuell schicke die ganzen 2 Nachrichten, statt wie ohne die Änderung nur die Headline.. Oder habe ich dich wieder falsch verstanden?

                                T 1 Reply Last reply Reply Quote 0
                                • T
                                  ticaki Developer @maddingamer last edited by

                                  @maddingamer
                                  Nope keine Doku ist geheim g das war eigentlich zum Debuggen gedacht.

                                  Ich baue den Code gerade um das eine Anforderung über Telegram die Nachrichten in voller Länge schickt und manuell noch immer in Kurzform. Gib mir 20 Minuten.

                                  ist btw. ne gute Idee 🙂

                                  1 Reply Last reply Reply Quote 1
                                  • T
                                    ticaki Developer last edited by ticaki

                                    v0.97.6.1

                                    • über Telegram erhält man mit Wwww Warnungen mit Beschreibung und Handlungsanweisungen unabhängig von den Einstellungen dazu.
                                    • KK

                                    An sinnvollen Kommandos gibt es aktuell nur

                                    Ww?
                                    Wwww
                                    

                                    Ww? aktiviert command.telegram
                                    Wwww macht das selbe wie Ww? + Es überschreibt kurzzeitig alle Einstellungen zu Textbegrenzungen

                                    M 1 Reply Last reply Reply Quote 1
                                    • M
                                      maddingamer @ticaki last edited by maddingamer

                                      @ticaki Super! 🙂
                                      Kann man für das wwww und das ww? irgendwie einen Alias anlegen? Ich bin aktuell dabei ein Button-Menü für Telegram zu bauen und da hätte ich lieber sowas wie aktuelle Warnungen und vollständige Warnungen o.Ä. stehen.. Aber soweit ich verstanden habe, stimmt der gesendete Text immer mit dem auf dem Button überein.. und ww? und wwww auf dem Button ist nicht so einleuchtend finde ich 😄

                                      EDIT: Ich glaube am einfachsten und sinnvollsten wäre ein Datenpunkt analog zu javascript.0.wetterwarnung.commands.telegram bzw .alexa. Also z.B. commands.telegram_headline. Den kann ich dann ja triggern..

                                      1 Reply Last reply Reply Quote 0
                                      • T
                                        ticaki Developer last edited by ticaki

                                        Ähm... 😁
                                        ich benutze folgende Werte die von meinen Telegram Knöpfen gesendet werden:

                                        1. lange version 2. kurze Version
                                        'DWDUZWNINA#!§$LONG'
                                        'DWDUZWNINA#!§$TT'
                                        

                                        Suche einfach in dem Script nach dieser Zeichenkombination und ersetzte sie durch was immer du magst.

                                        Wwww ist aber einfach einzutippen 😉

                                        EDIT: Beispiel Code für die Verwendung von Telegram:

                                        sendTo('telegram', {
                                        //    user: user,
                                            text: 'Click the button',
                                            reply_markup: {
                                                inline_keyboard: [
                                                    [{ text: 'Wetterwarnung kurz', callback_data: 'DWDUZWNINA#!§$TT' }],
                                                    [{ text: 'Wetterwarnung lang', callback_data: 'DWDUZWNINA#!§$LONG' }]
                                                ]
                                            }
                                        });
                                        

                                        Beim nächsten Update wird Ww? so sein, dass es immer die kurze Version ausgibt egal was eingestellt ist.

                                        M D 2 Replies Last reply Reply Quote 0
                                        • M
                                          maddingamer @ticaki last edited by

                                          @ticaki Habe jetzt wwww ersetzt und für die kurzen meldungen triggere ich einfach den datenpunkt commands.telegram.. Nicht unbedingt perfekt, aber funktioniert 🙂

                                          Zu deinem Beispiel: Das ist natürlich sehr schick, aber ich nutze nicht inline_keyboard sondern nur keyboard.. und da gibt es meines Wissens nach die Aufteilung von text und callback_data leider nicht..

                                          1 Reply Last reply Reply Quote 0
                                          • T
                                            ticaki Developer last edited by

                                            In der ursprünglichen Version hat Ww? auch nix anders gemacht als command.telegram auf true zu setzen.

                                            v0.97.6.2

                                            • telegram: Das Auslösen von Warnungen per Telegram ist im Codeteil konfigurierbar. Unterhalb von 123456 findet man die Variablen.
                                            • Ww? = kurze Warnungen = var uTelegramMessageShort = 'Ww?';
                                            • Wwww = lange Warnungen = var uTelegramMessageLong = 'Wwww';
                                            1 Reply Last reply Reply Quote 1
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            1.0k
                                            Online

                                            31.7k
                                            Users

                                            79.7k
                                            Topics

                                            1.3m
                                            Posts

                                            53
                                            1521
                                            467225
                                            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