Gedeelde script van: Jeroen Huls
In dit script bepaal ik de tijd en datum over (ongeveer) 24 uur. In mijn geval gebruik ik flows om mijn alarm te laten weten dat ik hoogstwaarschijnlijk op vakantie ben en er een wat groter afschrikeffect mag zijn dan wanneer we ieder moment weer terug kunnen zijn, bijvoorbeeld van het boodschappen doen.
Dit script kan natuurlijk ook voor andere zaken worden gebruikt, zoals acties die in de toekomst moeten plaatsvinden na een bepaalde tijdsduur vanaf nu. Ik heb ervoor gekozen om mijn flow ieder uur te laten triggeren. Dit zou natuurlijk vaker kunnen, zodat er met een exactere tijd gewerkt kan worden, maar voor vakanties, die misschien 2x per jaar plaatsvinden, leek me dat wat te veel van het goede. In Homey kun je helaas niet in een tijd- of datumtrigger een variabele gebruiken, anders had dat een mooiere oplossing geweest zoals “ALS de tijd is…”. Daarom rond ik de tijd af op hele uren, zodat ik Homey ieder uur kan laten controleren of het de juiste tijd en datum is.
Ik start dit script op het moment dat het alarm wordt gezet. Wanneer het alarm weer uit gaat, zet ik de variabelen (met een simpele flow) op streepjes, zodat ik zeker weet dat die nooit getriggerd kunnen worden.
/* Datum en tijd van morgen */
// Huidige datum en tijd vast leggen
var Nu = new Date ();
// Eén dag toevoegen aan de huidige datum
Nu .setDate( Nu .getDate() + 1 );
// Alle elementen uit elkaar trekken
var Uur = Nu .getHours();
var Dag = Nu .getDate();
var Mnd = Nu .getMonth() + 1 ; // JavaScript maanden gaan van 0 tot 11 ipv
1 tot 12
var Jr = Nu .getFullYear();
// Mogelijke scenario's:
//-----------------------------------------
// Alles moet misschien nog een dag opschuiven ivm engelse tijd, 23-UK
is dus 00-NL, anders klopt datum niet
if ( Uur == 23 ) {
Nu .setDate( Nu .getDate() + 1 );
Uur = "00" ;
Dag = Nu .getDate();
Mnd = Nu .getMonth() + 1 ; // JavaScript maanden gaan van 0 tot 11 ipv 1
tot 12
Jr = Nu .getFullYear();
}
// Zorgen voor dubbele getallen bij uren, dagen en maanden
if (( Uur != "00" ) && ( Uur < 10 )) {
Uur = "0" + Uur ;
}
if ( Dag < 10 ) {
Dag = "0" + Dag ;
}
if ( Mnd < 10 ) {
Mnd = "0" + Mnd ;
}
// Tijd en datum in een variabele stoppen
var Tijd = Uur + ":00" ;
var Datum = Dag + "-" + Mnd + "-" + Jr ;
// Tijd en datum zijn niet te triggeren met een variabele, maar wel te
controleren met Logica, vandaar tijd op heel uur, flow triggeren op
"Elke 1 uren" en tijd en datum bij EN controleren
// Variabelen in Better Logic plaatsen
let BLApp = await Homey .apps.getApp({id: "net.i-dev.betterlogic" });
BLApp .apiPut( "Inschakel tijd/" + Tijd );
BLApp .apiPut( "Inschakel datum/" + Datum );
// Klaar
return ( true