Ik wil eem flow maken die rond 11:30 uur op een zaterdag start als deze zaterdag NIET de eerste en de laatste van de maand is. Dus wel de 2e & 3e zaterdag van de maand en als er toevallig een 5e in die maand is ook op de 4e zaterdag van die maand.
Graag wat hulp aub.
Bedankt.
Hoe kom ik in het algemeen aan een of andere bijvoorbeeld 1e of 2e zaterdag of maandag of etc. van een maand ?
Je zou verwachten dat dit vrij simpel te maken zou moeten zijn, op het eerste gezicht, maar is toch best lastig met Homey. Heb een vergelijkbare case ook nog niet voorbij zien komen.
Ik vond het een leuke uitdaging, en heb dit bedacht, misschien heb je er iets aan:
(Edited1, met dank aan Henk’s scherpe oog)
(Edited2 incl. het idee van TS om mod 4 te gebruiken om schrikkeljaar te bepalen):
let ditJaar = Number(args[0]);
//console.log("[ditJaar % 4] is 0 als het jaar een product is van 4 (schrikkeljaar): ", ditJaar % 4);
if (ditJaar % 4 === 0) {
return true
}
else {
return false
};
Zou het ook als volgt kunnen, om het jaar onafhankelijk te maken: ALS het vandaag zaterdag is, EN 7 dagen geleden was het ook zaterdag EN dezelfde maand, DAN is het vandaag de 2e zaterdag, ANDERS de 1e.
En dat dan in een lus, of 4 keer uitgeschreven met 14, 21 en 28 dagen geleden.
Om met de datum te kunnen rekenen deze omrekenen naar epoch datum?
Ik heb geen computer bij de hand, dus kan ik het pas over een paar dagen proberen om te zetten in een flow.
En het schrikkeljaar is toch een voudig met ern mathjs expression (Better logic app) te evalueren of niet ?
div en of mod 4. (Ik jen deze nog van mijn tijd van turbo pasca of C++).
En het moeten dus alle zaterdagen behalve de eerste en de laatse zaterdag van de maand zijn. Het is een reminder via Goole TTS en push message dat er die dag wel een extra uurtje banenzwemmen mogelijk is in mijn lokaal zwembad. Op de eerste en de laatste zaterdag dus niet want dan wordt er afgezwommen(=examen zwemles).
Dat is voor mij een extra zetje of misschien wel ook ern stokje achter de deur om toch nog wat actiever te worden en op tijd uit bed te gaan op de zaterdag.
Ik heb dan een uurtje (na11:30 uur) de tijd om mijn zwemspullen in te pakken en naar het zwembad te lopen.
Je vergeet dat het ook niet de laatste zaterdag van de maand mag zijn in mijn specifiek geval.
Ik vraag me trouwens af of er niet ooit/soms wel zelfs een 5e zaterdag in de maand kan zijn. Ik twijfel
Yes. Nog niet gezien/gekeken naar de calender en zoooo toevallig dat het juist deze maand 5 zaterdagen zijn waardoor ook dus de 4e zaterdag een zwemdag is/wordt.
Dus meestal alleen de 2e en 3e zaterdag van de maand en soms ook de 4e zaterdag van de maand als er een 5e zaterdag in die maand is.
Bedankt allemaal voor de hulp/suggeties.
Ik zit er aan te denken dat ik behalve een Google TTS bericht er ook nog een alarm(sirene) aan koppel om mij zeker wakker te maken op de zwem-zaterdagen.
Trouwens heeft iemand een idee hoe ik aan ALLEEN het huidige jaar(tal) van het datum voor een mathjs expressie kom ?
En werken div of mod in mathjs ??
Daardoor makkelijker het schrikkeljaar te detecteren, toch ? (Jaartal mod 4 = 0) gelijk aan ja) en dus schrikkeljaar.
Je kunt bv met een Homeyscript EN kaartje “run [code] with [argument]” gebruiken, waarbij het argument de resultaat tag is van de Better logic kaart, om vervolgens op schrikkeljaar te checken, waarbij ik jouw idee om mod 4 te gebruiken heb uitgezocht en op remainder (%) operator uitkwam (daar kom je deze eeuw mee weg):
let ditJaar = Number(args[0]);
console.log("[ditJaar % 4] = 0 als het jaar een product is van 4 (schrikkeljaar): ", ditJaar % 4);
if (ditJaar % 4 === 0) {
return true
}
else {
return false
};
Ik zie het zo niet voor me, is me te abstract denk ik. Ik ben benieuwd naar je flow voorbeeld t.z.t.! Altijd leuk om verschillende benaderingen te zien.
He kunt heel eenvoudig de “formatted result indien get nog is omgevormd in een integer getal in een mathjs expressie gebruiken als (yy mod 4 ==0) in een conditie/en “mathjs expressie is een ja” om zo te weten te komen of het een schrikkeljaar is of niet.
Dus zonder Homey script dan denk ik.
Alles de omzetting van yy naar een integer getal onbreekt nog.
Waar als het een schrikkeljaar is en onwaar als niet.
Ter volledigheid zou je nog het moeten katen delen door 100 om het jaar 2100 enz. Eruit te halen maar ik sxhst dat we san allemaal al in de kist liggen en/if de Homey Pro (2023) verouderd is.
Iemand een idee hoe ik dit elke 1e (en misschien als backup ook de 2e )van de maand kan triggered/starten zodat een boollean variabele genaamd “Schrikkerjaar” die ik aangemaskt heb wordt aangepast.
Suggetie : zullen we proberen om 3 algemene flows te maken die breed(er)/algemener inzetbaar zijn.
A) Een flow met een argument van tekst die de dag binnen krijgt en aangeeft hoeveel aantal “dinsdag”en of “zaterdag”en of etc. in de huidige maar is.
B) Een flow die checkt of het de eerste “dinsdag” of “zaterdag” van de huidige maand is. Dus weer input tekst en output een bool (ja of nee).
C) Een flow die checkt of het de laatste “dinsdag” of “zaterdag” van de huidige maand is. Dus weer input tekst en output een bool (ja of nee).
D) Een flow die checkt de hoeveelste“dinsdag” of “zaterdag” van de huidige maand is. Dus weer input tekst en output een number/integer. Bij voorbeeld 2e zaterdag dan output 2 etc.
Denk dat dit zeer interessant en gewaardeerd wordt als dit dan ook hier wordt gedeeld.
In een aparte flow maar ik dan om 11:30 uur gebruik van de variabele “Zwemzaterdag” als condition en stuur dan de Google TTS en push berichten uit (en start de tuya wifi sirene).
Zou dit misschien een snellere weg/manier zijn om te evalueren of er een 5e zaterdag in de maand is :
Of ontbreekt er nog misschien een 27 dagen en 26 dagen voorwarde ??(zie februari 2025)
En Alle moeten “True” zijn voor geen 5e zaterdag.
Mis ik trouwens de 29 dagen (die ik niet jan kiezen wsnt max 28 dagen) ? (Zie maart 2025)
Ik weet even niet hoe te tellen.
Bij de maanden met bijvoorbeeld 5 zaterdagen moet de eerste of tweede of derde dag van de maand een zaterdag zijn. (Als ik op de kalender kijk)