hier mein ansatz, vielleicht hilft es ja jemand:
Code
let globalVars = {
time: '0:00'
};
function getLocalTime(){
Shelly.call("Shelly.GetStatus", {},
function (res, error_code, error_msg, gv) {
if(typeof error_code === 'number' && error_code !== 0) return;
if(typeof res === 'undefined') return;
if(typeof res.sys !== 'undefined' && typeof res.sys.time === 'string' && res.sys.time.length > 4 && chr(res.sys.time.at(2)) === ':'){
globalVars.time = res.sys.time;
//print("Lokale Zeit: " , globalVars.time);
}
},
globalVars
);
}
//ein timer holt die zeit aus dem shelly status
let tmrTmpLoader = Timer.set(5000, false, function(){
getLocalTime();
});
//die zeit ist dann also in der globalen variable 'globalVars.time' und wird alle 5s aktualisiert
//die folgenden routinen (getHour und getMinute) benutze ich dann für weitere abläufe (im code stehen die routinen eher weit oben)
function replace(origin, substr, replace) {
return origin.slice(0, origin.indexOf(substr)) + replace + origin.slice(origin.indexOf(substr) + substr.length, origin.length)
}
function getHour(timeString){
return JSON.parse(timeString.slice(0, timeString.indexOf(':')));
}
function getMinute(timeString){
return JSON.parse(timeString.slice(timeString.indexOf(':')+1));
}
Alles anzeigen
Dabei verlasse ich mich darauf, dass der Shelly seine lokale Zeit sauber führt und behalte so alles lokal.
Ein Zugriff auf externe Webseiten, um die Zeit zu holen, ist für meinen Zweck wiederum zu aufwendig und ggf. anfällig. Aber das kommt ganz auf den Einsatzzweck an.
Schöner wäre es natürlich, wenn man die Zeit einfach in irgendeiner globalen Variable hätte, ohne dass man sich dafür verrenken muss.