Astro-Tageszeit in Datenpunkte schreiben

Mit dem folgenden Script werden die Astro-Tageszeiten aufgrund der übergebenen GPS-Position ermittelt und in Datenpunkte geschrieben.

function createAstroData() {
    var suncalc = require('suncalc');
    var d = new Date();

    var times = suncalc.getTimes(d,48.802332199999995,9.0593212);
    
    for (var t in times) {
        var time = times[t];
 
        var Hour = times[t].getHours();
        var Minute = times[t].getMinutes();
        
        if ( Hour < 10 ) { Hour = "0"+Hour; }
        if ( Minute < 10 ) { Minute = "0"+Minute; }
        
        var TimeString = Hour + ':' + Minute;
        var objectName = 'Astrozeiten.'+t;

        createState(objectName,TimeString,{name: "Astrozeit",  type: 'string', role: 'value'}, function () {}); 
    }
}

createAstroData();

Nach dem Ausführen des Scripts werden in den Objekten folgende Datenpunkte mit den Astro-Tageszeiten angelegt:

Mit dem folgenden Script werden die Datenpunkte täglich um 0:05 aktualisiert. Ich habe hierfür das Script angepasst und erweitert:

schedule({hour: 0, minute: 5}, createAstroData );

function createAstroData() {
    var suncalc = require('suncalc');
    var d = new Date();

    var times = suncalc.getTimes(d,48.802332199999995,9.0593212);
    
    for (var t in times) {
        var time = times[t];
 
        var Hour = times[t].getHours();
        var Minute = times[t].getMinutes();
        
        if ( Hour < 10 ) { Hour = "0"+Hour; }
        if ( Minute < 10 ) { Minute = "0"+Minute; }
        
        var TimeString = Hour + ':' + Minute;
        var objectName = 'Astrozeiten.'+t;

        if ( !existsState(objectName )) {
            createState(objectName,TimeString,{name: "Astrozeit",  type: 'string', role: 'value'}, function () {}); 
        } else {
            setState(objectName,TimeString);
        }
    }
}

createAstroData();