const ZEITPLAN = '10 2 * * *'; 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 regenJahr = 0; let Max_Schneehoehe = '0'; let Sonne_Tag = '0'; let Sonne_Monat = '0'; let Sonne_Jahr = 0; let Trockenperiode = 0; let TrockenperiodeVerg = 0; let TrockenperiodeStart = ''; let TrockenperiodeStartVerg = ''; let jahr = 0; let monati = 0; let tag = 0; let monatt = ""; 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()); jahr = start.getFullYear(); monati = start.getMonth(); tag = start.getDate(); monatt = monatsname_kurz[start.getMonth()]; DPIn = '0_userdata.0.vis.Wetter.Daten.' + jahr + '.Monate.'; DPAus = '0_userdata.0.vis.Wetter.Daten.Jahre.' + jahr; leseAktJahr(); }; function leseAktJahr() { let jsonJahr = JSON.parse(getState(DPAus).val); let jsonMonat = JSON.parse(getState(DPIn + monatnummer[monati]).val); tempMin = aktWert(jsonJahr.Tiefstwert, jsonMonat.Tiefstwert, 'min'); tempMax = aktWert(jsonJahr.Hoechstwert, jsonMonat.Hoechstwert, 'max'); durchschnitt = aktWert(jsonJahr.Durchschnitt, jsonMonat.Durchschnitt, 'max'); max_Windboe = aktWert(jsonJahr.Max_Windboe, jsonMonat.Max_Windboe, 'max'); max_RegenTag = aktWert(jsonJahr.Regenmenge_Tag, jsonMonat.Regenmenge_Tag, 'max'); regenMonat = aktWert(regenMonat, jsonMonat.Regenmenge_Monat, 'max'); Max_Schneehoehe = aktWert(jsonJahr.Schneehoehe, jsonMonat.Schneehoehe, 'max'); Sonne_Tag = aktWert(jsonJahr.Sonne_Tag, jsonMonat.Sonne_Tag, 'max'); Sonne_Monat = aktWert(jsonJahr.Sonne_Monat, jsonMonat.Sonne_Monat, 'max'); werteJahr(); }; function werteJahr() { let dp = ''; for (let i = 0; i <= monati; i ++) { dp = DPIn + monatnummer[i]; let jsonTmp = JSON.parse(getState(dp).val); Sonne_Jahr += nurWert(jsonTmp.Sonne_Monat); regenJahr += nurWert(jsonTmp.Regenmenge_Monat); sehr_kalte_Tage += parseInt(jsonTmp.SehrkalteTage); Eistage += parseInt(jsonTmp.EisTage); Frost_Tage += parseInt(jsonTmp.FrostTage); kalte_Tage += parseInt(jsonTmp.KalteTage); heisse_Tage += parseInt(jsonTmp.HeisseTage); Sommertage += parseInt(jsonTmp.SommerTage); warme_Tage += parseInt(jsonTmp.WarmeTage); }; aktJahr(); }; function aktJahr() { //Schleife nur für Trockenperiode, da Monat Übergreifend sein kann DPIn = '0_userdata.0.vis.Wetter.Daten.' + jahr + '.TageMonat.'; for (let i = 0; i <= monati; i ++) { let mySelector = DPIn + monatnummer[i]; $(mySelector).each(function(id, y) { leseTage(id, i); }); }; let JsonJahr = JSON.stringify({ "Tiefstwert": tempMin, "Hoechstwert": tempMax, "Durchschnitt": durchschnitt, "Max_Windboe": max_Windboe, "Regenmenge_Tag": max_RegenTag, "Regenmenge_Monat": regenMonat, "Regenmenge_Jahr": regenJahr, "Schneehoehe": Max_Schneehoehe, "Sonne_Tag": Sonne_Tag, "Sonne_Monat": Sonne_Monat, "Sonne_Jahr": Sonne_Jahr, "WarmeTage": warme_Tage, "SommerTage": Sommertage, "HeisseTage": heisse_Tage, "FrostTage": Frost_Tage, "KalteTage": kalte_Tage, "EisTage": Eistage, "SehrkalteTage": sehr_kalte_Tage, "Trockenperiode": TrockenperiodeVerg + TrockenperiodeStartVerg }); setState('0_userdata.0.vis.Wetter.Daten.Jahre.'+ jahr, JsonJahr, true); }; function leseTage(id, monatNr) { let monat = monatnummer[monatNr]; let json = JSON.parse(getState(id).val) for ( let i = 0; i < json.length; i++) { if (json[i].Regenmenge_Tag == 0) { Trockenperiode ++; if (Trockenperiode == 1) { TrockenperiodeStart = ' Tag(e) (vom ' + (i + 1) + '.' + monatsname_kurz[parseInt(monatNr)] + ')'; }; } else { if (Trockenperiode > 0) { if (Trockenperiode >= TrockenperiodeVerg){ TrockenperiodeVerg = Trockenperiode; TrockenperiodeStartVerg = TrockenperiodeStart; }; TrockenperiodeStart = ''; }; Trockenperiode = 0; }; }; }; 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); let tmpneuWert = nurWert(neuWert); if (maxmin === 'min') { if (tmpneuWert < tmpaltWert) { return neuWert; } else { return altWert; }; } else if (maxmin === 'max') { if (tmpneuWert > tmpaltWert) { return neuWert; } else { return altWert; }; }; };