Rekenen met tijd

Ik wil kunnen berekenen hoelang de avond duurt. Dan kan ik in deze tijdsduur 9 scenes afspelen op mijn Nanoleaf. De luxmeter geeft aan wanneer het donker is. Om 01 uur gaat alles uit.
In de winter is het donker van 16u tot 01u = 9 uren. Elke scene kan nu 60 minuten duren.
In de zomer is het donker van 22u tot 01u = 3 uren. Elke scene kan nu 20 minuten duren.
Ik heb 3 num variabelen aangemaakt. Var1 moet de tijd worden wanneer het donker wordt.
Var2 moet de tijdsduur worden: 01u-Var1. Var3 moet Var2/9 worden (in minuten).
Var3 kan ik dan verder in mijn flow gebruiken.

Wie heeft de oplossing voor dit vraagstuk ?

Ik weet niet in hoeverre de app zonnestanden al hulp biedt, en met Homeyscript kun je naar hartlust Javascript programmeren. Als dat een brug te ver is dan zou ik in deze richting denken:

De Chronograph - Adds precise timer, stopwatch and transition functionality to Homey app heeft functionaliteit om timers, stopwatches e.d. te gebruiken.

Omdat rekenen met tijd lastig is kun je als het donker wordt een transitie starten die b.v. elke x minuten een trigger geeft. Die kun je gebruiken om die triggers te tellen en in een variabele te zetten. Als het licht wordt stop je de transitie en kopieer je de waarde van de teller naar een andere variabele. Dan heb je daar de duur van de vorige nacht in het aantal stappen van je transitie.

Van daaruit kun je verder werken met timers, transities of andere zaken die de nachtduur gebruiken. Het rekenwerk kun je doen met Logica kaartjes. Met een “Bereken” kaartje kun je rekenen. Zet de berekening daar volgens het voorbeeld tussen {{ en }}.

Een voorbeeldje van hoe ik de duur van de wasdroger tel:

Gecombineerd met deze flow:

Mogelijkerwijs kun je gelijk ook de transitie die telt de volgende dag gebruiken voor je toepassing, door in de transitiestappen ook andere dingen te doen bij bepaalde transitiewaarden.

Edwin,
Dank voor deze workaround.
Het is echter niet zo precies als ik zou willen.
Gisteravond was het zwaar bewolkt en was het om 19u donker.
Vandaag is het helder en wordt het om 20u donker.
Dat levert een flink verschil op in de ‘avondlengte’ die tot 01u duurt.

Is er niet ergens een overzicht van de formules die in Logica zijn toe te passen ?

Ik heb nog geen overzicht gevonden van logica formules, ik weet alleen dat round(…) werkt.

Als je geavanceerde formules wilt dan is BetterLogic mogelijk een beter alternatief, die is beter gedocumenteerd voor berekeningen en ondersteunt meer, namelijk een subset van math.js - maar als je dan toch al richting javascript gaat dan zou ik gelojk doorgaan naar Homey Script.

Als je niet op licht en donker wil schakelen dan zou ik de zon opkomst en ondergang gebruiken als start en stoppunt, die zijn niet afhankelijk van het weer. Het principe blijft hetzelfde. Homey heeft zelf de basis, en als de zonnestanden app niet genoeg aanknopingspunten biedt dan weet ik het ook even niet meer.

Ik heb een Homeyscript gemaakt waarbij ik met een api call de tijdsduur ophaal hoe lang de zon schijnt op een dag. In mijn script haal ik ineens een gehele maand op om op die manier de prognose voor mijn zonnepanelen te kunnen voorspellen. Je kunt natuurlijk ook per dag het aantal minuten ophalen dat de zon schijnt en nog wat andere gegevens zoals zon op en zon onder. Is dat iets wat jou kan helpen?

Hoi Marcel,
Het gaat mij om het aantal minuten tussen donker worden (lux meter) en 01u. Of tot 23:59u als dat makkelijker rekent; dan kan ik er gewoon 61 min bij optellen.
Het moment van donker worden is elke dag anders, maar schuift gemiddeld van 16u in de winter naar 22u in de zomer.
Als jouw api call dit kan berekenen ben ik er zeker mee geholpen.

Wil je dus de tijd hebben op het moment dat je lux meter 0 aangeeft tot 1 uur

Of de tijd dat de zon onder gaat tot 1 uur?

In homeyscript is dit wel te berekenen

In het laatste geval kun je dit ook uitrekenen voor de komende dagen en die in variabelen zetten

Marcel,
Ik houd me aan de luxmeter vast. Het scheelt nogal of het bewolkt of helder is. Dus alleen een berekening voor de huidige dag.

Ben je bekent met Homeyscript en better logic. Deze zijn nodig om de berekening te maken.

Beide zeggen me niets.

Ik heb Homey 6 weken en ben nog steeds op ontdekkingsreis…….

image001.jpg

Ok, laat maar weten wanneer je er aan toe bent. Wil je best wel helpen met het script.

Marcel,
Het blijkt dat ik voor de tijdsduur in Nanoleaf geen variabelen kan invoeren; alleen harde minuten. De diverse apps zijn dus nog voor verbetering vatbaar…

Ok, en het starten van een timer zou dat kunnen werken?

Gebruik mijn bovengenoemde transitie, maar start die op een vast tijdstip als het nog licht is. Zodra het donker wordt, neem je de stand van de transitie, en trek je dat af van de constante duur tussen het startmoment en een uur ‘s nachts. Dan heb je je duur in minuten. De apps zijn prima, maar soms moet je er wat creatief mee om gaan.

Of nog makkelijker, begin de transitie op het aantal minuten tot 1:00 en laat hem per minuut naar beneden aftellen. Dan is de transitiewaarde altijd de duur in minuten tot aan 1:00.

Erwin,
Als ik een transitie laat starten om 15:00 u zijn er 600 stappen mogelijk. Wanneer het om 21:00u donker is, is de Transitiewaarde 360. Met 600-360 levert dit 240 minuten op aan ‘avondlengte’.
Dat wordt dan (240/9=) 27 minuten per effect.
Hoe start ik dan elke 27 minuten het volgende effect ?

Hoi Burdie,

Ik kan me voorstellen dat je niet wil dat de nanoleafs om 15:00 uur aan gaan in de zomer als het bewolkt wordt.
Ik zou de app “zonnestanden” gebruiken en wanneer de luxmeter onder een bepaalde waarde komt dan start een flow om te controleren of het b.v. “golden hour” is. Zo ja: start een flow die kijkt hoe laat het is en berekend aantal minuten tot 1 uur. Zo heb je elke dag het juiste aantal minuten.
Wil je niet dat de flow van de luxmeter ook overdag steeds wordt gestart als het bewolkt wordt dan kan je ook een flow maken die zegt: ALS het b.v. “golden hour” is THEN schakel flow (die controleerd of luxmeter onder een bepaalde waarde komt en aantal minuten berekend) in en na de berekening moet je deze wel weer uitzetten! Anders blijft Homey aan het rekenen. bij elke verandering van lichtsterkte.
Handig is om een variabele bv nanoleafminuten te gebruiken als controle en die geeft tevens aantal minuten aan tot 1 uur.
Wat ik hier mee bedoel is, als nanoleafminuten <>0 dan weet je dat je geen berekening meer moet maken. Handig is om dan bij zonsondergang te zeggen: ALS zonsondergang EN nanoleafminuten=0 THEN start flow om aantal minuten te berekenen tot 1 uur zodat ook bij een mooie zonsondergang de berekening wordt gestart. Om 1 uur zeg je “nanoleafminuten=0”.
Is dit een optie? Succes.

Edwin,
Ik heb een transitie aangemaakt die om 15:00u begint.
Daarin start ik de transitie ‘tijdsduur’ van 600 naar 1 in 600 stappen gedurende 600 minuten.
Hoe maak ik nu bij donker (zonsondergang) het aantal minuten zichtbaar dat is verstreken ? Is dit de transitiewaarde ?
Graag een uitgewerkt voorbeeld.