@pix sagte in Hilfe für Schleife:
Habs geändert:
neuer Code für Wunderground 3.1.1
Hallo Pix!
Mir ist gerade aufgefallen, dass das Script seit 4.8. 21:50 Uhr nicht mehr aktuakisiert.
Beim DP javascript.0.Wunderground.Regenvorschausteht noch immer der Wert vom 4.8.
objects - ioBroker (8).png
Unter weathunderground.0wird jedoch der aktuelle Wert angezeigt.
objects - ioBroker (7).png
Script
/* Wunderground Regen
{1}
Abfrage des Weatherunderground Adapters im Bereich Vorhersage,
wann der nächste Regen erwartet wird.
{1}
Findet in den forecastHourly-Datenpunkt den ersten Regen-Eintrag
Ausgabe in Text ("kein Regen", "X Stunden (X% [Wahrscheinlichkeit])")
{1}
{1}
{1}
http://forum.iobroker.net/viewtopic.php?f=21&t=3447#p31858
{1}
01.08.2016 erstellt von Pix unter Nutzung des obigen Skriptes
28.06.2017 Korrekturen
12.07.2017 Fehler abfangen und Typ Variable auf String geändert
06.03.2019 Code optimiert
berücksichtigt Niederschlag in der aktuellen Stunde (Stunde 0)
11.06.2019 auf neue Datenpunkte angepasst für weatherground-Adapter (getestet V3.0.11)
04.08.2019 geändert für Wunderground Adapter 3.1.1
*/
const vorstd = 36; // Vorschau in Stunden (weatherundergroudn bietet neuerdings bis 36h Vorschau), kann hier auch kleiner sein
const idRegen = "javascript."+ instance + ".Wunderground.Regenvorschau"; // Ziel-Datenpunkt
const wunder_inst = "weatherunderground.0."; // Weatherground-Adapter Instanz
const logging = false;
const fC = false; // nicht dauerhaft auf true stehen lassen. Wegen AAsynchronität dann keine Werte.
createState(idRegen, "kein Regen", fC, {
name: "Regenvorschau",
dec: "Wann gibt es den nächsten Regen",
type: "string",
role: "text"
});
function berechneZeit() {
if (logging) log("Berechne Dauer in Stunden bis zum nächsten Regen");
let i = 0;
let data; // leer
let pop; // leer
for (i=0 ; i<vorstd; i++) {
if (getState(wunder_inst + "forecastHourly." + i + "h.precipitation").val > 0) {
data = getState(wunder_inst + "forecastHourly." + i + "h.precipitation").val;
pop = getState(wunder_inst + "forecastHourly." + i + "h.precipitationChance").val;
if (logging) log("Regeneintrag gefunden bei " + i + "h " + data + "mm");
if (i == 0) { // wenn jetzt Regen
if (logging) log("In dieser Stunde werden " + data + "mm Regen erwartet (Wahrscheinlichkeit " + pop + "%)");
setState(idRegen, "jetzt (" + pop + "%)");
} else {
if (logging) log("In " + i + " Stunden werden " + data + "mm Regen erwartet (Wahrscheinlichkeit " + pop + "%)");
setState(idRegen, i + " Stunden (" + pop + "%)");
}
i=vorstd; // beim ersten Auftreten der Regenwahrscheinlichkeit über 0 abbrechen
}
if ((i == vorstd) && (pop === 0)) {
setState(idRegen, "Kein Regen erwartet (" + pop + "%)");
if (logging) log("Kein Regen erwartet (" + pop + "%)");
}
}
}
// bei jeglicher Aktualisierung von Weatherunderground Berechnung starten
on({
id: /^weatherunderground\.[0-9]+\.forecast.*\.[0-9]+h\.precipitation$/, // forecastHourly, forecastDaily, forecast
change: "any"
}, berechneZeit);
// bei Skriptstart
berechneZeit();
Weatherunderground läuft in 3.2.1
Hast du eine Idee?