Korrekt brug af delay og timere

Det er ikke altid, at alle dele af et flow skal udføres så hurtigt som muligt. Der kan være brug for at indbygge kortere eller længere pauser.

Der er indbygget en delay funktion på alle kort, som lægges i THEN delen af et flow. Det er nem at gribe til for at forsinke udførelsen af en kommando i få sekunder eller flere minutter – men det bruges desværre ofte forkert.

I denne guide vil jeg beskrive korrekt brug af delay funktionen og hvornår man skal benytte en timer i stedet (spioler: Du skal næsten altid vælge timeren!).

Delay er en bindende aftale

Når du indfører et delay i dit flow, så skal du være 100% sikker på, at det er dét du vil. Kommandoen bliver udført efter den ønsket forsinkelse – og der er intet du kan gøre for at fortryde eller ændre på det. Og du kan faktisk heller ikke aflæse nogle steder, hvilke kommandoer der ligger i kø.

Lad os kigge på eksemplet på ovenstående billede og fokusere på det første flow. Ønsket er at tænde en lampe ved tryk på en knap, og slukke den igen 360 sekunder senere. Det kræver kun ét flow, når vi bruger delay funktionen. Og det fungerer også – så længe der kun er det ene tryk på knappen inden for de 360 sekunder.

Vi har bestilt slukningen af lampen 360 sekunder efter trykket. Det kan ikke ændres af andre flows – og det kan faktisk heller ikke engang ændres af dette flow. Sluk kommandoen bliver sendt afsted når tiden er gået, uanset hvad der sker.
Faktisk så sker der det, at hvis nogen trykker på tænd knappen igen og aktiverer samme flow efter f.eks. 120 sekuder, så kommer der endnu en “sluk lampe” kommando i kø. Så bliver lampen slukket efter de 240 sekunder, som der er tilbage af det første delay – og sørme også efter 360 sekunder, som vi har bedt om 2. gang.

Forestil dig eksemplet med en motion sensor i stedet, som melder om bevægelse flere gange inden for de 360 sekunder. Forestil dig så, at der stadigvæk er bevægelse efter de første 360 sekunder. Så bliver det et uoverskueligt mix af tænd kommandoer, som bliver slukket “tilfældigt” af sluk kommandoer, der har ligget i kø.

Jeg vil anbefale, at du kun benytter delay funktionen til korte delays på få sekunder, hvor der ikke er nogen risiko for, at flowet bliver kørt flere gange, eller at der skal ændres på delay’et.
Det kan f.eks. være, at du skal have tændt en forstærker 5 sekunder før end TV’et bliver tændt. Eller at du har udregnet en logic variable og skal aflæse den igen. Der kræver der en kort forsinkelse i flowet, ellers ender du med at aflæse den gamle værdi, som variablen havde før udregningen.

Timeren er den fleksible aftale

Der er ikke indbygget en timer funktion i Homey. Det kræver at du installerer en app, for at få den ekstra funktion. Jeg bruger CountDown app’en til det. Vær opmærksom på, at der også er en, der hedder CountDown Timers, og det er IKKE den!

Læs evt. GRUNDLÆGGENDE: INSTALLER EN APP for hjælp til at installere en app.

Hvis vi kigger på eksemplet på ovenstående billede igen, så kan vi se at der skal bruges 2 flows til at opnå samme funktionalitet, som vi lavede med delay funktionen.

Men fordelen ved at bruge timeren er, at hvis nogen trykker på tænd knappen flere gange, så nulstiller timeren bare og begynder forfra fra 360 sekunder – der kommer ikke flere sluk kommandoer i kø.

Og vi har muligheden for at annullere timeren eller ændre sekunderne der er tilbage i den fra andre flows.

Timeren vil næsten altid være det rigtige valg over delay funktionen – undtagen i de få eksempler, der er beskrevet i delay afsnittet.

For eksempel på hvordan du laver samme eksempel med en motion sensor, se evt. KONTROLLER LYSET MED MOTION SENSOR