const ZEITPLAN = '20 2 * * *'; let DPIn = ''; let DPAus = ''; let tempMin = 99; let tempMax = -99; let durchschnitt = -99; let windboe = 0; let regenTag = -99; let regenMonat = 0; let regenJahr let schneehoehe = 0; let sonnenschein = 0; let warme_Tage = 0; let sommer_Tage = 0; let heisse_Tage = 0; let frost_Tage = 0; let kalte_Tage = 0; let eis_Tage = 0; let sehrkalte_Tage = 0; let trockenzeit = 0; let jsonRekord; let monat = ''; let jahr; let jahrkurz; let json; let start, 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() { start = new Date(zeitstempel.getFullYear(),zeitstempel.getMonth(),zeitstempel.getDate()-1,0,0,0); start = new Date(start.getTime()); monat = monatnummer[start.getMonth()]; jahr = start.getFullYear(); DPIn = '0_userdata.0.vis.Wetter.Daten.Jahre.' + jahr; DPAus = '0_userdata.0.vis.Wetter.Daten.Rekord.RekordWerte'; jsonRekord = JSON.parse(getState(DPAus).val); leseJahr(); }; function leseJahr() { let jsonJahr = JSON.parse(getState(DPIn).val) jahrkurz = jahr.toString().substr(2,2); jsonRekord.Tiefstwert = aktWert(jsonRekord.Tiefstwert, jsonJahr.Tiefstwert, 'min', jahr); jsonRekord.Hoechstwert = aktWert(jsonRekord.Hoechstwert, jsonJahr.Hoechstwert, 'max', jahr); jsonRekord.Durchschnitt = aktWert(jsonRekord.Durchschnitt, jsonJahr.Durchschnitt, 'max', jahr); jsonRekord.Max_Windboe = aktWert(jsonRekord.Max_Windboe, jsonJahr.Max_Windboe, 'max', jahr); jsonRekord.Regenmenge_Tag = aktWert(jsonRekord.Regenmenge_Tag, jsonJahr.Regenmenge_Tag, 'max', jahr); jsonRekord.Regenmenge_Monat = aktWert(jsonRekord.Regenmenge_Monat, jsonJahr.Regenmenge_Monat, 'max', jahr); jsonRekord.Regenmenge_Jahr = aktWert(jsonRekord.Regenmenge_Jahr, jsonJahr.Regenmenge_Jahr, 'max', '0'); jsonRekord.Schneehoehe = aktWert(jsonRekord.Schneehoehe, jsonJahr.Schneehoehe, 'max', jahr); jsonRekord.Sonne_Tag = aktWert(jsonRekord.Sonne_Tag, jsonJahr.Sonne_Tag, 'max', jahr); jsonRekord.Sonne_Monat = aktWert(jsonRekord.Sonne_Monat, jsonJahr.Sonne_Monat, 'max', jahr); jsonRekord.Sonne_Jahr = aktWert(jsonRekord.Sonne_Jahr, jsonJahr.Sonne_Jahr, 'max', '0'); jsonRekord.WarmeTage = aktWert(jsonRekord.WarmeTage, jsonJahr.WarmeTage, 'max', '-1'); jsonRekord.SommerTage = aktWert(jsonRekord.SommerTage, jsonJahr.SommerTage, 'max', '-1'); jsonRekord.HeisseTage = aktWert(jsonRekord.HeisseTage, jsonJahr.HeisseTage, 'max', '-1'); jsonRekord.FrostTage = aktWert(jsonRekord.FrostTage, jsonJahr.FrostTage, 'max', '-1'); jsonRekord.KalteTage = aktWert(jsonRekord.KalteTage, jsonJahr.KalteTage, 'max', '-1'); jsonRekord.EisTage = aktWert(jsonRekord.EisTage, jsonJahr.EisTage, 'max', '-1'); jsonRekord.SehrkalteTage = aktWert(jsonRekord.SehrkalteTage, jsonJahr.SehrkalteTage, 'max', '-1'); jsonRekord.Trockenperiode = aktWert(jsonRekord.Trockenperiode, jsonJahr.Trockenperiode, 'max', '-2'); log(jsonRekord) //setState('0_userdata.0.vis.Wetter.Daten.Rekord.RekordWerte', JSON.stringify(json), 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, info) { let tmpaltWert = nurWert(altWert); let tmpneuWert; let a_neuWert; if ((info != '0') && (info != '-1')) { tmpneuWert = nurWert(neuWert); a_neuWert = neuWert.split(' '); } else { tmpneuWert = neuWert; }; let tempDatum, datum = ''; if (maxmin === 'min') { if (tmpneuWert < tmpaltWert) { tempDatum = neuWert.split('('); tempDatum = tempDatum[1].split(')'); if (info == '0') { //datum = ' (' + tempDatum[0] + ')'; } else { datum = ' (' + tempDatum[0] + '.' + jahrkurz + ')'; }; return tmpneuWert + datum; } else { return altWert; }; } else if (maxmin === 'max') { if (tmpneuWert > tmpaltWert) { tempDatum = neuWert.split('('); tempDatum = tempDatum[1].split(')'); if (info == '0') { //datum = ' (' + tempDatum[0] + ')'; } else if(info == '-1') { datum = ' ' + a_neuWert[1] + ' (' + jahr + ')'; } else if(info == '-2') { let x = a_neuWert[3].split(")"); datum = ' ' + a_neuWert[1] + ' ' + a_neuWert[2] + ' ' + x[0] + ' ' + jahrkurz + ')'; } else { datum = ' (' + tempDatum[0] + '.' + jahrkurz + ')'; }; return tmpneuWert + datum; } else { return altWert; }; }; };