let DP = "0_userdata.0.vis.Wetter.Heute."; let min_Tag; let max_Tag; let regenTag; let windMax; let durchSchnitt; let sunrise = getState('0_userdata.0.Astrozeiten.sunrise').val; let sunset = getState('0_userdata.0.Astrozeiten.sunset').val; // Speicher Aktuelle Wetterwerte //Ausführen wenn die Aussentemperatur sich ändert on({id: 'javascript.0.Wetterstation.Aussentemperatur'}, async function (obj) { min_Tag = (await getStateAsync(DP + 'Min_Tag')).val; max_Tag = (await getStateAsync(DP + 'Max_Tag')).val; if (obj.state.val < min_Tag) { await setStateAsync(DP + "Min_Tag", obj.state.val); await setStateAsync(DP + "Temperatur_Durchschnitt", (max_Tag + obj.state.val)/2); }else if (obj.state.val > max_Tag) { await setStateAsync(DP + "Max_Tag", obj.state.val); await setStateAsync(DP + "Temperatur_Durchschnitt", (min_Tag + obj.state.val)/2); }; }); //Ausführen wenn die Regenmenge sich ändert on({id: 'javascript.0.Wetterstation.Regen_Tag'}, async function (obj) { regenTag = (await getStateAsync(DP + 'Regen_Tag')).val; if (obj.state.val > regenTag) { await setStateAsync(DP + "Regen_Tag", obj.state.val); }; }); //Ausführen wenn die Windgeschwindigkeit sich ändert on({id: 'javascript.0.Wetterstation.Wind_max'}, async function (obj) { windMax = (await getStateAsync(DP + 'Wind_Max')).val; if (obj.state.val > windMax) { await setStateAsync(DP + "Wind_Max", obj.state.val); } }); //Ausführen wenn die Windböe sich ändert on({id: 'javascript.0.Wetterstation.Windboeen_max'}, async function (obj) { let max = (await getStateAsync(DP + 'Max_Boee')).val; if (obj.state.val > max) { await setStateAsync(DP + "Max_Boee", obj.state.val); } }); //Ausführen wenn die Luftdruck relativ sich ändert on({id: 'javascript.0.Wetterstation.Druck_relativ'}, async function (obj) { let max = (await getStateAsync(DP + 'Max_Luftdruck')).val; let min = (await getStateAsync(DP + 'Min_Luftdruck')).val; if (obj.state.val > max) { await setStateAsync(DP + "Max_Luftdruck", obj.state.val); await setStateAsync(DP + "Luftdruck_Durchschnitt", (min + obj.state.val)/2); }; if (obj.state.val < min) { await setStateAsync(DP + "Min_Luftdruck", obj.state.val); await setStateAsync(DP + "Luftdruck_Durchschnitt", (max + obj.state.val)/2); }; }); //Ausführen wenn die Luftdruck absolut sich ändert on({id: 'javascript.0.Wetterstation.Druck_absolut'}, async function (obj) { let druck = (await getStateAsync(DP + 'Luftdruck_0Uhr')).val; await setStateAsync(DP + "Luftdruck_differenz", (obj.state.val - druck)); }); //Ausführen wenn die Windchill sich ändert on({id: 'javascript.0.Wetterstation.Gefuehlte_Temperatur'}, async function (obj) { let min = (await getStateAsync(DP + 'Min_Windchill')).val; let max = (await getStateAsync(DP + 'Max_Windchill')).val; if (obj.state.val < min) { await setStateAsync(DP + "Min_Windchill", obj.state.val); await setStateAsync(DP + "Windchill_Durchschnitt", (max + obj.state.val)/2); } else if (obj.state.val > max) { await setStateAsync(DP + "Max_Windchill", obj.state.val); await setStateAsync(DP + "Windchill_Durchschnitt", (min + obj.state.val)/2); } }); //Ausführen wenn die Taupunkt sich ändert on({id: 'javascript.0.Wetterstation.Taupunkt'}, async function (obj) { let min = (await getStateAsync(DP + 'Min_Taupunkt')).val; let max = (await getStateAsync(DP + 'Max_Taupunkt')).val; if (obj.state.val < min) { await setStateAsync(DP + "Min_Taupunkt", obj.state.val); } else if (obj.state.val > max) { await setStateAsync(DP + "Max_Taupunkt", obj.state.val); } }); //Ausführen wenn die Luftfeuchte sich ändert on({id: 'javascript.0.Wetterstation.Aussenfeuchtigkeit'}, async function (obj) { let min = (await getStateAsync(DP + 'Min_Feuchte')).val; let max = (await getStateAsync(DP + 'Max_Feuchte')).val; if (obj.state.val < min) { await setStateAsync(DP + "Min_Feuchte", obj.state.val); await setStateAsync(DP + "Feuchte_Durchschnitt", (max + obj.state.val)/2); } else if (obj.state.val > max) { await setStateAsync(DP + "Max_Feuchte", obj.state.val); await setStateAsync(DP + "Feuchte_Durchschnitt", (min + obj.state.val)/2); } }); //Ausführen wenn die Sonnenstrahlung sich ändert on({id: 'javascript.0.Wetterstation.Sonnenstrahlung'}, async function (obj) { let max = (await getStateAsync(DP + 'Max_Sonnenstrahlung')).val; if (obj.state.val > max) { await setStateAsync(DP + "Max_Sonnenstrahlung", obj.state.val); } }); //Akteulle Wetterwerte Ende //Aktuelle Wetterwerte zurück setzten async function Werte_Reset() { await setStateAsync(DP + 'Luftdruck_0Uhr', (await getStateAsync('javascript.0.Wetterstation.Druck_absolut')).val); let regen = (await getStateAsync(DP + 'Regen_Tag')).val; if (regen == null) {regen = 0}; let SonneTag = Math.round((await getStateAsync('javascript.0.Wetterstation.Info.Sonnenschein_VorTag')).val / 60); let istTemp = ((await getStateAsync(DP + 'Durchschnitt')).val / 24); let jsonVortag = JSON.stringify({ "Min_Tag": getState(DP + 'Min_Tag').val, "Max_Tag": getState(DP + 'Max_Tag').val, "Durchschnitt_Tag" : istTemp, "Windboe": getState(DP + 'Wind_Max').val, "Regen_Tag": regen, "Sonne_Tag": SonneTag, "Energie_Tag": getState('javascript.0.Wetterstation.Info.Solarenergie_VorTag').val, "Schneehoehe": 0}); await setStateAsync('0_userdata.0.vis.Wetter.Vortag.Daten', jsonVortag, true); await setStateAsync(DP + 'Min_Tag',99999,true); await setStateAsync(DP + 'Max_Tag',-99999,true); await setStateAsync(DP + 'Durchschnitt',0,true); await setStateAsync(DP + 'Regen_Tag',0,true); await setStateAsync(DP + 'Wind_Max',-999,true); sunrise = (await getStateAsync('0_userdata.0.Astrozeiten.sunrise')).val; sunset = (await getStateAsync('0_userdata.0.Astrozeiten.sunset')).val; await setStateAsync(DP + 'Feuchte_Durchschnitt',0,true); await setStateAsync(DP + 'Luftdruck_Durchschnitt',0,true); await setStateAsync(DP + 'Luftdruck_differenz',0,true); await setStateAsync(DP + 'Max_Boee',-999,true); await setStateAsync(DP + 'Max_Feuchte',-999,true); await setStateAsync(DP + 'Max_Luftdruck',-999,true); await setStateAsync(DP + 'Max_Sonnenstrahlung',-999,true); await setStateAsync(DP + 'Max_Taupunkt',-999,true); await setStateAsync(DP + 'Max_Windchill',-999,true); await setStateAsync(DP + 'Min_Feuchte',9999,true); await setStateAsync(DP + 'Min_Luftdruck',9999,true); await setStateAsync(DP + 'Min_Taupunkt',999,true); await setStateAsync(DP + 'Min_Windchill',999,true); await setStateAsync(DP + 'Temperatur_Durchschnitt',0,true); await setStateAsync(DP + 'Windchill_Durchschnitt',0,true); }; async function istTemperatur() { let istTemp = (await getStateAsync('javascript.0.Wetterstation.Aussentemperatur')).val; let temp = (await getStateAsync(DP + 'Durchschnitt')).val; await setStateAsync(DP + 'Durchschnitt', istTemp + temp, true); }; async function Schneefallgrenze() { let stunde = new Date().getHours(); let pfad = 'daswetter.0.NextHours.Location_1.Day_1.Hour_' + stunde; let snowline = (await getStateAsync(pfad + '.snowline_value')).val; await setStateAsync('0_userdata.0.vis.Wetter.Heute.Schneefallgrenze', snowline, true); }; schedule('0 * * * *', istTemperatur); schedule('1 0 * * *', Werte_Reset); schedule('* * * * *', Schneefallgrenze);