Loops

Tijdens het maken van flows kan het soms makkelijk zijn als een flow zicht meerdere keren kan herhalen, vanuit homey zelf is het standaard beperkt om een loop te maken, zodra je een loop maakt in homey en je gemaakte flow wordt te vaak uitgevoerd in een korte tijd schakelt homey de flow automatisch uit, hiermee willen ze er voor zorgen dat je homey niet vastloopt en onbereikbaar wordt.

In deze blog wil ik met je gaan kijken hoe je toch loops kan maken met homey doormiddel van de Loops app.

Een loop in programmeercode, want daar heb ik het over in deze blog, is een stukje code wat zich keer op keer blijft herhalen, In homey zou dat bijvoorbeeld een ALS kaart kunnen zijn die een bepaalde flow keer op keer blijft activeren tot dat jij hem stopt of dat hij stopt na een voor gedefinieerd aantal keer.

Een loop kan bijvoorbeeld handig zijn als je verlichting wilt dimmen naar een bepaald percentage in meerdere stappen, met een loop kan je er dan voor zorgen dat het stukje flow meerdere keren wordt uitgevoerd zonder dat je de flow meerdere keren hoeft te kopiëren.

Voor homey is er nu in de homey app store de loops app te vinden. De loops app is gemaakt door Menno van hout, welke je ook kan kennen van Hdashboards. Met de loops app kan je op een makkelijke en gecontroleerde manier loops maken door de verschillende kaarten aan je flow toe te voegen.

Laten we eens naar de verschillende flow kaarten gaan kijken, beginnend bij de ALS kaarten.

Met deze kaart kan je een flow activeren als er een specifieke loop is gestart, dit kan bijvoorbeeld handig zijn om jezelf een berichtje te sturen of een ander deel van de flow laten starten als er een loop geactiveerd is.

Itereert is afgeleid van het franse woord itérer wat herhalen betekend, deze kaart zorgt er dus voor dat bij elke herhaal stap je flow wordt geactiveerd.

De loop kaart Loop name is afgelopen activeert de flow zodra er een specifieke loop is afgelopen, dit kan handig zijn om je flow verder te laten gaan zodra de loop is afgelopen.

Deze EN kaart kan in je flow controleren of er een specifieke loop bezig is waardoor je bijvoorbeeld een flow kan laten wachten totdat de loop is afgelopen.

Met deze kaart kan je een loop starten, in de kaart kan je de loop een naam geven, het aantal keer opgeven dat de loop herhaald moet worden en met welke tussen pauzes tussen elke stap moet zitten, welke in milliseconde, seconden en minuten kan worden opgegeven

Met de transitioneer kaart kan je bijvoorbeeld de verlichting van 100% naar 50% laten dimmen in een bepaald aantal stappen

Met de stop loop kaart kan je een lopende loop doen stoppen

Nu we weten wat welke kaart doet, kunnen we eens gaan kijken naar een paar flow met de loops kaarten.

In de bovenstaande flow zien we een flow die om 10:00 uur s ochtends de loop Verlichting start, welke vervolgens in 14 stappen de verlichting dimt van 0.81 naar 0.2% en elke stap heeft een tussenstap van 10 minuten. Zodra de flow itereert wordt de lamp naar de iteratie waarde gezet.

Goed om te weten is dat het percentage die je op geeft, in mijn geval 0.81 en 0.2 moet liggen tussen de 1 en 0.0 waarbij 1 gelijk staat aan 100% en 0.0 gelijk staat aan 0%. In mijn voorbeeld flow dim ik de verlichting dus van 81% naar 20%

De loop app kan ook handig zijn om de voorwaarde die een ALL kaart moeten activeren meerdere keren te controleren, standaard van uit Homey moeten de voorwaarde waar zijn op het moment dat de ALS kaart de flow start, maar het kan natuurlijk zijn dat de voorwaarde op dat moment niet allemaal waar zijn maar een minuut later wel, om er voor te zorgen dat de flow dan tocht uitgevoerd wordt binnen een bepaald tijds bestek kan je bovenstaande flow namaken of je voegt de loops flow kaarten toe aan je bestaande flow.

Wat bovenstaande voorbeeld flow doet is het volgende, zodra ik de wasmachine aanzet wordt er gecontroleerd of de deur van de wasmachine dicht is en of er een was in de machine zit, zijn allebei de voorwaarden waar dan zal de ALL kaart op de knop drukken van was programma 1, ook zal de ALL kaart controleren of de specifiek opgegeven loop bezig is, mocht het nou zo zijn dat ik de wasmachine aanzet maar een van de EN voorwaarde niet waar blijkt te zijn wordt er een ANY kaart geactiveerd, welke controleert of de specifiek opgegeven loop niet bezig is, is deze niet bezig dat wordt de loop gestart, in het geval van bovenstaande voorbeeld flow zal deze loop vervolgens in 10 minuten tijd 5 keer controleren of de voorwaarden in de tussen tijd niet waar zijn geworden met een tussentijd van 2 minuten tussen de controles, wordt in de controletijd van 10 minuten tijd allebei de voorwaarden waar dan zal de ALL kaart geactiveerd worden en zal de wasmachine als nog starten en de loop gestopt worden.

Veranderd er in de controle tijd van 10 minuten niks en blijft een van de voorwaarden niet waar, dan zal de loop aflopen en wordt er een berichtje gestuurd dat de wasmachine niet gestart kon worden.

Voor deze flow is het belangrijk dat je controleert of de loop niet aan het lopen is voordat je de loop laat starten, laat je homey dit niet controleren dan zal homey je flow uitschakelen, met als reden dat je flow te vaak wordt uitgevoerd, dit komt doordat als je een loop start meteen de itereer kaart wordt geactiveerd en de loop app dan een ongewenste loop creëert omdat je flow dan meteen weer gestart wordt.