const ZEITPLAN = '50 1 * * *'; let DPIn = ""; let DPAus = ""; let heisse_Tage = 0; let warme_Tage = 0; let Sommertage = 0; let kalte_Tage = 0; let Eistage = 0; let Frost_Tage = 0; let sehr_kalte_Tage = 0; let tempMin = 99; let tempMax = -99; let durchschnitt = -99; let max_Windboe = -99; let max_RegenTag = -99; let regenMonat = 0; let Max_Schneehoehe = 0; let Max_SonneTag = 0; let Sonne_Monat = 0; let monatn = "0"; let monatt = ""; let jahr = 0; let tag = 0; let zeitstempel = new Date(); const monatsname_kurz = ['Jan','Feb','Mär','Apr','Mai','Jun','Jul','Aug','Sep','Okt','Nov','Dez']; const monatnummer = ['01', '02', '03', '04', '05','06','07','08','09','10','11','12']; schedule(ZEITPLAN, erstelleJSON); function erstelleJSON() { let start = new Date(zeitstempel.getFullYear(),zeitstempel.getMonth(),zeitstempel.getDate()-1,0,0,0); start = new Date(start.getTime()); monatn = monatnummer[start.getMonth()]; monatt = monatsname_kurz[start.getMonth()]; jahr = start.getFullYear(); tag = start.getDate(); DPAus = '0_userdata.0.vis.Wetter.Daten.' + jahr + '.Monate.' + monatn; leseAktTag(); }; function leseAktTag() { let json = JSON.parse(getState(DPAus).val) let SonneTag = getState('javascript.0.Wetterstation.Info.Sonnenschein_VorTag').val; SonneTag = SonneTag / 60; tempMin = aktWert(json.Tiefstwert, getState('0_userdata.0.Statistik.Wetter.VorTag.Temperatur_Tiefstwert').val, 'min'); tempMax = aktWert(json.Hoechstwert, getState('0_userdata.0.Statistik.Wetter.VorTag.Temperatur_Hoechstwert').val, 'max'); durchschnitt = aktWert(json.Durchschnitt, getState('0_userdata.0.Statistik.Wetter.VorTag.Temperatur_Durchschnitt').val, 'max'); max_Windboe = aktWert(json.Max_Windboe, getState('0_userdata.0.Statistik.Wetter.VorTag.Windboe_max').val, 'max'); let regen = getState('0_userdata.0.Statistik.Wetter.VorTag.Regenmenge').val; if (regen == null) {regen = 0}; max_RegenTag = aktWert(json.Regenmenge_Tag, regen, 'max') Max_Schneehoehe = aktWert(json.Schneehoehe, 0, 'max') Max_SonneTag = aktWert(json.Sonne_Tag, parseInt(SonneTag), 'max') let min = getState('0_userdata.0.Statistik.Wetter.VorTag.Temperatur_Tiefstwert').val; let max = getState('0_userdata.0.Statistik.Wetter.VorTag.Temperatur_Hoechstwert').val; if (min < -10) { sehr_kalte_Tage = parseInt(json.SehrkalteTage) + 1; } else if (max < 0) { Eistage = parseInt(json.EisTage) + 1; } else if (min < 0) { Frost_Tage = parseInt(json.FrostTage) + 1; } else if (max < 10) { kalte_Tage = parseInt(json.KalteTage) + 1; } else if (max > 30) { heisse_Tage = parseInt(json.HeisseTage) + 1; } else if (max > 25) { Sommertage = parseInt(json.SommerTage) + 1; } else if (max > 20) { warme_Tage = parseInt(json.WarmeTage) + 1; }; let tmpaltWert = nurWert(json.Sonne_Monat); Sonne_Monat = tmpaltWert + parseInt(SonneTag); tmpaltWert = nurWert(json.Regenmenge_Tag); regenMonat = tmpaltWert + regen; aktMonat(); }; function aktMonat() { let JsonMonat = JSON.stringify({ "Tiefstwert": tempMin, "Hoechstwert": tempMax, "Durchschnitt": durchschnitt, "Max_Windboe": max_Windboe, "Regenmenge_Tag": max_RegenTag, "Regenmenge_Monat": regenMonat.toFixed(2) + ' (' + monatt + ')', "Schneehoehe": Max_Schneehoehe, "Sonne_Monat": Sonne_Monat + ' (' + monatt + ')', "Sonne_Tag": Max_SonneTag, "WarmeTage": warme_Tage.toString(), "SommerTage": Sommertage.toString(), "HeisseTage": heisse_Tage.toString(), "FrostTage": Frost_Tage.toString(), "KalteTage": kalte_Tage.toString(), "EisTage": Eistage.toString(), "SehrkalteTage": sehr_kalte_Tage.toString()}); setState(DPAus, JsonMonat, true); }; function nurWert(text) { let Zahl; if (text.indexOf(' ') > -1) { //Datum vorhanden let a_altWert = text.split(' '); Zahl = parseFloat(a_altWert[0]); } else { //Datum nicht vorhanden Zahl = parseFloat(text); }; return Zahl; }; function aktWert(altWert, neuWert, maxmin) { let tmpaltWert = nurWert(altWert); if (maxmin === 'min') { if (neuWert < tmpaltWert) { return neuWert.toString() + ' (' + tag + ' ' + monatt + ')'; } else { return altWert; }; } else if (maxmin === 'max') { if (neuWert > tmpaltWert) { return neuWert.toString() + ' (' + tag + ' ' + monatt + ')'; } else { return altWert; }; }; };