DWD Wetterwarnung als Ansage und Push-Nachricht

  • Hallo

    leider muss ich mich heute mal an Euch wenden.

    Seit geraumer Zeit verwende ich ein Skript, welches mir die aktuellen Warnungen des DWD per Sprachansage über Alexa und Pushnachricht per Telegram ausgeben soll (altes Skript). Leider funktioniert es aber nicht so wie es soll. Ich habe schon viel daran ausprobiert und umgeändert, aber auch das bringt nicht die gewünschte Funktion. ?

    Hierzu mal mein altes Skript:

    Spoiler anzeigen

    on({id: new RegExp('dwd\\.0\\.warning\\.severity' + "|" + 'dwd\\.0\\.warning1\\.severity' + "|" + 'dwd\\.0\\.warning2\\.severity' + "|" + 'dwd\\.0\\.warning3\\.severity'), change: "ne"}, function (obj) { if (getState("dwd.0.warning.severity").val >= 1) { setState("alexa2.0.Echo-Devices.G090U50984850WVB.Commands.speak"/*speak*/, (['Achtung erste Unwetterwarnung',getState("dwd.0.warning.headline").val,getState("dwd.0.warning.description").val].join(''))); sendTo("telegram.0", "send", { text: (['Achtung erste Unwetterwarnung',getState("dwd.0.warning.headline").val,getState("dwd.0.warning.description").val].join('')) }); } if (getState("dwd.0.warning1.severity").val >= 1) { setState("alexa2.0.Echo-Devices.G090U50984850WVB.Commands.speak-volume"/*Volume to use for speak commands*/, 60, true); setState("alexa2.0.Echo-Devices.G090U50984850WVB.Commands.speak"/*speak*/, (['Achtung zweite Unwetter Warnung',getState("dwd.0.warning1.headline").val,getState("dwd.0.warning1.description").val].join(''))); sendTo("telegram.0", "send", { text: (['Achtung zweite Unwetterwarnung',getState("dwd.0.warning1.headline").val,getState("dwd.0.warning1.description").val].join('')) }); } if (getState("dwd.0.warning2.severity").val >= 1) { setState("alexa2.0.Echo-Devices.G090U50984850WVB.Commands.speak"/*speak*/, (['Achtung dritte Unwetter Warnung',getState("dwd.0.warning2.headline").val,getState("dwd.0.warning2.description").val].join(''))); sendTo("telegram.0", "send", { text: (['Achtung dritte Unwetter Warnung',getState("dwd.0.warning2.headline").val,getState("dwd.0.warning2.description").val].join('')) }); } if (getState("dwd.0.warning3.severity").val >= 1) { setStateDelayed("alexa2.0.Echo-Devices.G090U50984850WVB.Commands.speak"/*speak*/, (['Achtung vierte Unwetter Warnung',getState("dwd.0.warning3.headline").val,getState("dwd.0.warning3.description").val].join('')), 30000, false); sendTo("telegram.0", "send", { text: (['Achtung vierte Unwetterwarnung',getState("dwd.0.warning3.headline").val,getState("dwd.0.warning3.description").val].join('')) }); }
    });

    Als ich heute gelesen habe, dass bei dem Kommando "speak" nur eine begrenzte Anzahl von Zeichen sein dürfen, habe ich ein zweites Skript für das Kommando "ssml" entwickelt. Das funktioniert aber auch nicht.

    Hierzu mein Skript:

    Spoiler anzeigen

    var Anzahl, Ausgabetext1, Ausgabetext2, Ausgabetext3, Ausgabetext4, Warnungen, Ausgabetext, timeout;

    on({id: new RegExp('dwd\\.0\\.warning\\.severity' + "|" + 'dwd\\.0\\.warning1\\.severity' + "|" + 'dwd\\.0\\.warning2\\.severity' + "|" + 'dwd\\.0\\.warning3\\.severity'), change: "ne"}, function (obj) { if (getState("dwd.0.warning.severity").val != 0) { Anzahl = (typeof Anzahl == 'number' ? Anzahl : 0) + 1; Ausgabetext1 = ['Erste Wetterwarnung',getState("dwd.0.warning.headline").val,getState("dwd.0.warning.description").val].join(''); } if (getState("dwd.0.warning1.severity").val != 0) { Anzahl = (typeof Anzahl == 'number' ? Anzahl : 0) + 1; Ausgabetext2 = ['und zweite Wetterwarnung',getState("dwd.0.warning1.headline").val,getState("dwd.0.warning1.description").val].join(''); } if (getState("dwd.0.warning2.severity").val != 0) { Anzahl = (typeof Anzahl == 'number' ? Anzahl : 0) + 1; Ausgabetext3 = ['und dritte Wetterwarnung',getState("dwd.0.warning2.headline").val,getState("dwd.0.warning2.description").val].join(''); } if (getState("dwd.0.warning3.severity").val != 0) { Anzahl = (typeof Anzahl == 'number' ? Anzahl : 0) + 1; Ausgabetext4 = ['und vierte Wetterwarnung',getState("dwd.0.warning3.headline").val,getState("dwd.0.warning3.description").val].join(''); } if (Anzahl == 1) { Warnungen = 'Es gibt eine Wetterwarnung.'; } if (Anzahl == 2) { Warnungen = 'Es gibt zwei Wetterwarnungen.'; } if (Anzahl == 3) { Warnungen = 'Es gibt drei Wetterwarnungen.'; } if (Anzahl == 4) { Warnungen = 'Es gibt vier Wetterwarnungen.'; } if (Anzahl != 0) { Ausgabetext = ['<speak><voice name="Alexa">',Warnungen,Ausgabetext1,Ausgabetext2,Ausgabetext3,Ausgabetext4,'</voice></speak>'].join(''); } if (Anzahl == 0) { Ausgabetext = ['<speak><voice name="Alexa">','Im Moment gibt es keine Wetterwarnung.','</voice></speak>'].join(''); } timeout = setTimeout(function () { // Wohnzimmer if (getState("alexa2.0.Echo-Devices.G090U50984850WVB.Info.name").val == 'Echo Dot Wz') { setState("alexa2.0.Echo-Devices.G090U50984850WVB.Commands.ssml"/*ssml*/, Ausgabetext); } }, 500);
    });

    Kann mir bitte jemand helfen? Wo liegt mein Fehler?

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!