// #########################################
var PFAD = '0_userdata.0.Sonnenwenden';
// #########################################
if ( !existsState(''+PFAD+'.01_Fruehlings-Tagundnachtgleiche')) {
createState(''+PFAD+'.01_Fruehlings-Tagundnachtgleiche','Datum',{name: '01_Fruehlings-Tagundnachtgleiche',role: 'value',type: 'string'});
createState(''+PFAD+'.02_Sommersonnenwende','Datum',{name: '02_Sommersonnenwende',role: 'value',type: 'string'});
createState(''+PFAD+'.03_Herbst-Tagundnachtgleiche','Datum',{name: '03_Herbst-Tagundnachtgleiche',role: 'value',type: 'string'});
createState(''+PFAD+'.04_Wintersonnenwende','Datum',{name: '04_Wintersonnenwende',role: 'value',type: 'string'});
createState(''+PFAD+'.Astronomische_Jahreszeiten','Datum',{name: 'Astronomische_Jahreszeiten',role: 'value',type: 'string'});
createState(''+PFAD+'.Kalendarische_Jahreszeiten','Datum',{name: 'Kalendarische_Jahreszeiten',role: 'value',type: 'string'});
createState(''+PFAD+'.naechstes_Ereignis','naechstes_Ereignis',{name: 'Sonnenwende',role: 'value',type: 'string'});
await wait(2000);
}
// #########################################
// Check um 0:0:30
// #########################################
schedule("30 0 0 * * *", async () => {
await Berechnung();
});
await Berechnung();
async function Berechnung() {
var Jahr = parseFloat(formatDate(new Date(), 'JJJJ'));
var HeuteNullUhr = Math.floor(((new Date().getTime()) + 7200000) / 86400000) * 86400000;
var FruehlingsTagundnachtgleiche = Math.floor(((36605.319 + (Jahr - 2000) * 365.24 + 1 / 24) * 86400000 - 2209165245600) / 86400000) * 86400000 + 43200000;
var Sommersonnenwende = Math.floor(((36605.319 + (Jahr - 2000) * 365.24 + 92.76 + 2 / 24 + Math.floor((Jahr - 2000) / 12) * 0.01) * 86400000 - 2209165245600) / 86400000) * 86400000 + 43200000;
var HerbstTagundnachtgleiche = Math.floor(((36605.319 + (Jahr - 2000) * 365.24 + 186.41 + 2 / 24 + Math.floor((Jahr - 2000) / 12) * 0.02) * 86400000 - 2209165245600) / 86400000) * 86400000 + 43200000;
var Wintersonnenwende = Math.floor(((36605.319 + (Jahr - 2000) * 365.24 + 276.26 + 1 / 24 + Math.floor((Jahr - 2000) / 12) * 0.02) * 86400000 - 2209165245600) / 86400000) * 86400000 + 43200000;
var FruehlingsTagundnachtgleicheNextYear = Math.floor(((36605.319 + ((Jahr + 1) - 2000) * 365.24 + 1 / 24) * 86400000 - 2209165245600) / 86400000) * 86400000 + 43200000;
if (getState(''+PFAD+'.01_Fruehlings-Tagundnachtgleiche').val != formatDate(getDateObject(FruehlingsTagundnachtgleiche), 'T.M.JJJJ')) {
setState(''+PFAD+'.01_Fruehlings-Tagundnachtgleiche', formatDate(getDateObject(FruehlingsTagundnachtgleiche), 'T.M.JJJJ'), true);
}
if (getState(''+PFAD+'.02_Sommersonnenwende').val != formatDate(getDateObject(Sommersonnenwende), 'T.M.JJJJ')) {
setState(''+PFAD+'.02_Sommersonnenwende', formatDate(getDateObject(Sommersonnenwende), 'T.M.JJJJ'), true);
}
if (getState(''+PFAD+'.03_Herbst-Tagundnachtgleiche').val != formatDate(getDateObject(HerbstTagundnachtgleiche), 'T.M.JJJJ')) {
setState(''+PFAD+'.03_Herbst-Tagundnachtgleiche', formatDate(getDateObject(HerbstTagundnachtgleiche), 'T.M.JJJJ'), true);
}
if (getState(''+PFAD+'.04_Wintersonnenwende').val != formatDate(getDateObject(Wintersonnenwende), 'T.M.JJJJ')) {
setState(''+PFAD+'.04_Wintersonnenwende', formatDate(getDateObject(Wintersonnenwende), 'T.M.JJJJ'), true);
}
if (Math.floor((FruehlingsTagundnachtgleiche - HeuteNullUhr) / 86400000) > 1) {
setState(''+PFAD+'.naechstes_Ereignis', (['Die nächste Tag/Nacht Gleichheit ist in ',Math.floor((FruehlingsTagundnachtgleiche - HeuteNullUhr) / 86400000),' Tagen, am ',formatDate(getDateObject(FruehlingsTagundnachtgleiche), 'T.M.JJJJ')].join('')), true);
if (getState(''+PFAD+'.Astronomische_Jahreszeiten').val != 'Winter') {
setState(''+PFAD+'.Astronomische_Jahreszeiten', 'Winter', true);
}
} else if (Math.floor((FruehlingsTagundnachtgleiche - HeuteNullUhr) / 86400000) == 1) {
setState(''+PFAD+'.naechstes_Ereignis', 'Die nächste Tag/Nacht Gleichheit ist Morgen', true);
} else if (Math.floor((FruehlingsTagundnachtgleiche - HeuteNullUhr) / 86400000) == 0) {
setState(''+PFAD+'.naechstes_Ereignis', 'Heute ist Tag/Nacht Gleichheit', true);
setState(''+PFAD+'.Astronomische_Jahreszeiten', 'Heute ist Frühlingsanfang', true);
} else if (Math.floor((Sommersonnenwende - HeuteNullUhr) / 86400000) > 1) {
setState(''+PFAD+'.naechstes_Ereignis', (['Die nächste Sonnenwende ist in ',Math.floor((Sommersonnenwende - HeuteNullUhr) / 86400000),' Tagen, am ',formatDate(getDateObject(Sommersonnenwende), 'T.M.JJJJ')].join('')), true);
if (getState(''+PFAD+'.Astronomische_Jahreszeiten').val != 'Frühling') {
setState(''+PFAD+'.Astronomische_Jahreszeiten', 'Frühling', true);
}
} else if (Math.floor((Sommersonnenwende - HeuteNullUhr) / 86400000) == 1) {
setState(''+PFAD+'.naechstes_Ereignis', 'Die nächste Sonnenwende ist Morgen', true);
} else if (Math.floor((Sommersonnenwende - HeuteNullUhr) / 86400000) == 0) {
setState(''+PFAD+'.naechstes_Ereignis', 'Heute ist Sonnenwende ', true);
setState(''+PFAD+'.Astronomische_Jahreszeiten', 'Heute ist Sommeranfang', true);
} else if (Math.floor((HerbstTagundnachtgleiche - HeuteNullUhr) / 86400000) > 1) {
setState(''+PFAD+'.naechstes_Ereignis', (['Die nächste Tag/Nacht Gleichheit ist in ',Math.floor((HerbstTagundnachtgleiche - HeuteNullUhr) / 86400000),' Tagen, am ',formatDate(getDateObject(HerbstTagundnachtgleiche), 'T.M.JJJJ')].join('')), true);
if (getState(''+PFAD+'.Astronomische_Jahreszeiten').val != 'Sommer') {
setState(''+PFAD+'.Astronomische_Jahreszeiten', 'Sommer', true);
}
} else if (Math.floor((HerbstTagundnachtgleiche - HeuteNullUhr) / 86400000) == 1) {
setState(''+PFAD+'.naechstes_Ereignis', 'Die nächste Tag/Nacht Gleichheit ist Morgen', true);
} else if (Math.floor((HerbstTagundnachtgleiche - HeuteNullUhr) / 86400000) == 0) {
setState(''+PFAD+'.naechstes_Ereignis', 'Heute ist Tag/Nacht Gleichheit', true);
setState(''+PFAD+'.Astronomische_Jahreszeiten', 'Heute ist Herbstanfang', true);
} else if (Math.floor((Wintersonnenwende - HeuteNullUhr) / 86400000) > 1) {
setState(''+PFAD+'.naechstes_Ereignis', (['Die nächste Sonnenwende ist in ',Math.floor((Wintersonnenwende - HeuteNullUhr) / 86400000),' Tagen, am ',formatDate(getDateObject(Wintersonnenwende), 'T.M.JJJJ')].join('')), true);
if (getState(''+PFAD+'.Astronomische_Jahreszeiten').val != 'Herbst') {
setState(''+PFAD+'.Astronomische_Jahreszeiten', 'Herbst', true);
}
} else if (Math.floor((Wintersonnenwende - HeuteNullUhr) / 86400000) == 1) {
setState(''+PFAD+'.naechstes_Ereignis', 'Die nächste Sonnenwende ist Morgen', true);
} else if (Math.floor((Wintersonnenwende - HeuteNullUhr) / 86400000) == 0) {
setState(''+PFAD+'.naechstes_Ereignis', 'Heute ist Sonnenwende ', true);
setState(''+PFAD+'.Astronomische_Jahreszeiten', 'Heute ist Winteranfang', true);
} else if (Math.floor((FruehlingsTagundnachtgleicheNextYear - HeuteNullUhr) / 86400000) > 1) {
setState(''+PFAD+'.naechstes_Ereignis', (['Die nächste Tag/Nacht Gleichheit ist in ',Math.floor((FruehlingsTagundnachtgleicheNextYear - HeuteNullUhr) / 86400000),' Tagen, am ',formatDate(getDateObject(FruehlingsTagundnachtgleicheNextYear), 'T.M.JJJJ')].join('')), true);
if (getState(''+PFAD+'.Astronomische_Jahreszeiten').val != 'Winter') {
setState(''+PFAD+'.Astronomische_Jahreszeiten', 'Winter', true);
}
} else if (Math.floor((FruehlingsTagundnachtgleicheNextYear - HeuteNullUhr) / 86400000) == 1) {
setState(''+PFAD+'.naechstes_Ereignis', 'Die nächste Tag/Nacht Gleichheit ist Morgen', true);
} else if (Math.floor((FruehlingsTagundnachtgleicheNextYear - HeuteNullUhr) / 86400000) == 0) {
setState(''+PFAD+'.naechstes_Ereignis', 'Heute ist Tag/Nacht Gleichheit', true);
}
if (3 <= parseFloat(formatDate(new Date(), 'M')) && parseFloat(formatDate(new Date(), 'M')) < 6) {
if (getState(''+PFAD+'.Kalendarische_Jahreszeiten').val != 'Frühling') {
setState(''+PFAD+'.Kalendarische_Jahreszeiten', 'Frühling', true);
}
} else if (6 <= parseFloat(formatDate(new Date(), 'M')) && parseFloat(formatDate(new Date(), 'M')) < 9) {
if (getState(''+PFAD+'.Kalendarische_Jahreszeiten').val != 'Sommer') {
setState(''+PFAD+'.Kalendarische_Jahreszeiten', 'Sommer', true);
}
} else if (9 <= parseFloat(formatDate(new Date(), 'M')) && parseFloat(formatDate(new Date(), 'M')) < 12) {
if (getState(''+PFAD+'.Kalendarische_Jahreszeiten').val != 'Herbst') {
setState(''+PFAD+'.Kalendarische_Jahreszeiten', 'Herbst', true);
}
} else {
if (getState(''+PFAD+'.Kalendarische_Jahreszeiten').val != 'Winter') {
setState(''+PFAD+'.Kalendarische_Jahreszeiten', 'Winter', true);
}
}
}