Hi Paul,
Sorry das ich mich jetzt erst melde.
Tausend Dank nochmal, jetzt klappt es und langsam steig ich auch dahinter.
Hier mal mein fertiges Produkt
`/* ************************************************************************* */
/* Script zum Übertragen der DWD-Wetterwarnungen über */
/* Telegram, Pushover, Home24-Mediaplayer oder SayIt */
/* mit freundlicher Unterstützung von Paul53 (Tausend Dank nochmals) */
/* Stand: 070022017 PrinzEisenherz1 */
/* ************************************************************************* */
var request = require('request');
/* Nachrichten-Dienst festlegen */
/* aus=0 ; alle=1 ; Pushover=2 ; Telegram=3 */
var pushdienst = 3; // Auswahl Nachrichtendienst
/* Konfiguration Sprachausgabe über Home24-Mediaplayer */
var idSprachausgabe = false; // Wenn zusätzlich eine Sprachausgabe erfolgen soll dann auf true
var idMediaplayer = "192.168.178.70:50000"; // Eingabe IP-Adresse incl. Port für Home24-Mediaplayer
/* Konfiguration Sprachausgabe über SayIt */
var idSprachausgabeSayIt = false; // Wenn zusätzlich eine Sprachausgabe über SayIt erfolgen soll dann auf true
var idSayIt = "sayit.0.tts.text";
var lautstaerke = 100;
/* Trigger für Wetterwarnungen */
var idDescription0 = "dwd.0.warning.description";
var idDescription1 = "dwd.0.warning1.description";
var idDescription2 = "dwd.0.warning2.description";
/* Arrays festlegen */
var newDescriptions = [3];
var oldDescriptions = [3];
var newHeadlines = [3];
var oldHeadlines = [3];
var newBegins = [3];
var oldBegins = [3];
var newEnds = [3];
var oldEnds = [3];
var timer = null;
function check() {
/* Bereich für 'Alle Wetterwarnungen wurden aufgehoben' */
if(newDescriptions[0] === "") {
if ((pushdienst === 3) || (pushdienst === 1) ) {
setTimeout((sendTo ("telegram.0", 'Alle Warnmeldungen des DWD wurden aufgehoben')), 3 * 1000);
}
if ((pushdienst === 2) || (pushdienst === 1) ) {
sendTo("pushover.0", 'Alle Warnmeldungen des DWD wurden aufgehoben');
}
/* alle Sicherungen Wetterwarnung löschen */
oldHeadlines = newHeadlines.slice();
oldDescriptions = newDescriptions.slice();
oldBegins = newBegins.slice();
oldEnds = newEnds.slice();
return;
}
var headline;
var description;
var begin;
var end;
var i;
var warn;
/* Variablen für Meldungen Text */
var MeldungOld;
var MeldungNew;
/* Variablen für Meldungen Sprache */
var MeldungSpracheDWD = '';
var MeldungNewSprache = '';
var MeldungOldSprache = '';
/* Bereich für 'Wetterwarnung gültig bis wurde aufgehoben' */
for(i = 0; i < 3; i++) {
warn = 'dwd.0.warning';
if(i) warn = warn + i;
headline = oldHeadlines[i];
description = oldDescriptions[i];
begin = oldBegins[i];
end = oldEnds[i];
if(newDescriptions.indexOf(description) == -1 && description !== "" && description !== undefined) {
MeldungOld = oldHeadlines[i] + ' gültig bis ' + oldEnds[i] + ' Uhr wurde aufgehoben';
MeldungOldSprache = oldHeadlines[i] + ' gültig bis ' + oldEnds[i] + ' Uhr wurde aufgehoben' + ' . ';
if ((pushdienst === 3) || (pushdienst === 1) ) {
setTimeout((sendTo ("telegram.0", "Die Wetterwarnung " +"'"+ oldHeadlines[i] + " gültig bis " + oldEnds[i] + "'" + " des DWD wurde aufgehoben")), 3 * 1000);
}
if ((pushdienst === 2) || (pushdienst === 1) ) {
sendTo("pushover.0", "Die Wetterwarnung " +"'"+ oldHeadlines[i] + " gültig bis " + oldEnds[i] + "'" + " des DWD wurde aufgehoben");
}
}
/* Verknüpfen aller aufgehobenen Wetterwarnungen */
MeldungSpracheDWD = MeldungSpracheDWD + MeldungOldSprache;
}
/* Bereich für 'Neue Amtliche Wetterwarnung' */
for(i = 0; i < 3; i++) {
warn = 'dwd.0.warning';
if(i) warn = warn + i;
headline = newHeadlines[i];
description = newDescriptions[i];
begin = newBegins[i];
end = newEnds[i];
if(oldDescriptions.indexOf(description) == -1 && description !== "" && description !== undefined) {
MeldungNew = headline + "\ngültig vom " + begin + " Uhr bis " + end + " Uhr\n" + description;
/* Entfernen °C für Sprachausgabe */
var replaceDescription0 = entferneDatenpunkt(description);
MeldungNewSprache = headline + " gültig vom " + begin + " Uhr, bis " + end + " Uhr. " + replaceDescription0 + ' . ';
if ((pushdienst === 3) || (pushdienst === 1) ) {
setTimeout((sendTo ("telegram.0", MeldungNew)), 3 * 1000);
}
if ((pushdienst === 2) || (pushdienst === 1) ) {
sendTo("pushover.0", MeldungNew);
}
}
/* Verknüpfen aller neuen Warnmeldungen */
MeldungSpracheDWD = MeldungSpracheDWD + MeldungNewSprache;
}
/* Verknüpfen aller neuen und abgelaufenen Warnmeldungen */
MeldungSpracheDWD = 'Achtung . ' + MeldungSpracheDWD;
/* Bereich für Sprachausgabe über Home24-Mediaplayer */
if((idSprachausgabe === true) && (MeldungSpracheDWD !== "")){
var Url = "http://" + idMediaplayer + "/track=4fachgong.mp3|tts=" + MeldungSpracheDWD;
log('Url :' + Url);
request(Url);
}
/* Bereich für Sprachausgabe über SayIt */
if((idSprachausgabeSayIt === true) && (MeldungSpracheDWD !== "")){
setState(idSayIt, lautstaerke + ";" + MeldungSpracheDWD);
}
/* Neue Werte sichern */
oldHeadlines = newHeadlines.slice();
oldDescriptions = newDescriptions.slice();
oldBegins = newBegins.slice();
oldEnds = newEnds.slice();
}
/* Entfernt "°C" aus Sprachmeldung und ersetzt es durch "Grad" */
function entferneDatenpunkt(beschreibung) {
var rueckgabe;
rueckgabe = beschreibung;
try {rueckgabe = rueckgabe.replace(/\°C/g, "Grad");}
catch(e) {}
return rueckgabe;
}
on(idDescription0, function(dp) {
newDescriptions[0] = dp.state.val;
var warn = 'dwd.0.warning';
setTimeout(function() {
newHeadlines[0] = getState(warn + '.headline').val;
newBegins[0] = getState(warn + '.begin').val;
newEnds[0] = getState(warn + '.end').val;
}, 3000);
if(timer) clearTimeout(timer);
timer = setTimeout(check, 7000);
});
on(idDescription1, function(dp) {
newDescriptions[1] = dp.state.val;
var warn = 'dwd.0.warning1';
setTimeout(function() {
newHeadlines[1] = getState(warn + '.headline').val;
newBegins[1] = getState(warn + '.begin').val;
newEnds[1] = getState(warn + '.end').val;
}, 3000);
if(timer) clearTimeout(timer);
timer = setTimeout(check, 7000);
});
on(idDescription2, function(dp) {
newDescriptions[2] = dp.state.val;
var warn = 'dwd.0.warning2';
setTimeout(function() {
newHeadlines[2] = getState(warn + '.headline').val;
newBegins[2] = getState(warn + '.begin').val;
newEnds[2] = getState(warn + '.end').val;
}, 3000);
if(timer) clearTimeout(timer);
timer = setTimeout(check, 7000);
});`
Also nochmal Tausend Dank
Johnny[/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i]