Weeknummer als number variable

Hallo allemaal,

ik heb al diverse keren zitten zoeken, maar kan niet vinden wat ik precies zoek.

Wellicht voor jullie heel makkelijk, maar ik kom er niet uit.

Ik wil graag de waarde van het weeknummer opslaan als number variable. Het is de bedoeling dat hierdoor met een flow iedere week het weeknummer met 1 opgehoogd word.

Hier wil ik vervolgens verschillende rolluikflows op koppelen.

Ik heb er nu een aantal, maar voor iedere week heb ik een aparte flow die het weeknummer zet, dat moet makkelijker kunnen lijkt me, maar ik weet niet hoe.

Hoop dat iemand een idee heeft.

Alvast bedankt!

Grtz, Chris

Het weeknummer staat al ergens in je Homey. Ik weet niet precies hoe je flow er uit komt te zien maar in de EN kolom kan je datum/tijd kiezen en dan “het weeknummer =“
Je kan ook een nummer variable maken , die op het goeie weeknummer zetten en iedere zondagavond een flow laten draaien die “(tag van je weeknummer) + 1” doet.

1 Like

Ik kwam zover tot aan de +1 :upside_down_face:

Bedankt, zo gaat het lukken denk ik.

1 Like

Een oude thread, maar toch leuk om hier nog even op in te gaan:

Als je zelf weknummers telt dan is het wel lastig dat je elk jaar het juiste moment het weeknummer moet resetten. Als het weeknummer niet precies hoeft te kloppen is dat makkelijk, maar als het wel moet kloppen is dat best lastig.
Met Homeyscript kan het ‘echt’ goed, maar ook dat valt niet mee omdat Javascript bij mijn weten geen kant en klare functie heeft voor het weeknummer, en er staan veel half goede versies online.

Maar goed: mocht je het nodig hebben, zorg dat je Homeyscript geinstalleerd hebt, en maak een script Weeknummer.js met de volgende inhoud:

var today = new Date();
var dowOffset = 1; // week starts monday
var fullYear = today.getFullYear();
var newYear = new Date(fullYear,0,1);
var day = newYear.getDay() - dowOffset; // the day of week the year begins on
day = (day >= 0 ? day : day + 7);
var daynum = Math.floor((today.getTime() - newYear.getTime() - (today.getTimezoneOffset()-newYear.getTimezoneOffset())*60000)/86400000) + 1;
var weeknum;  
if(day >= 4)  // if the year starts on or after the middle of a week
	weeknum = Math.floor((daynum+day-1)/7);
else { // if the year starts before the middle of a week
	weeknum = Math.floor((daynum+day-1)/7) + 1;
	if(weeknum > 52) {
		nYear = new Date(fullyear + 1,0,1);
		nday = nYear.getDay() - dowOffset;
		nday = nday >= 0 ? nday : nday + 7;
		weeknum = nday < 4 ? 1 : 53; // if the next year starts before the middle of the week, it is week #1 of that year
	}
}
await tag('Weeknumber', weeknum);	
return true;

Vervolgens kun je met deze flow dan het weeknummer opvragen (voor Nederland):

Helaas toont de gredeelde flow de tag niet goed. Het gaat om tag “Weeknumber” die bij Homeyscript staat. Je hoeft dan dus geen variabele an te maken, zolang je als je het weeknummer nodig hebt de homeyscript uitvoert in de als.

1 Like

Met het gedoe van missende timezones in Homey verwacht ik dat dit in een aantal edge cases niet goed zal werken, bv in het eerste uur (of eerste twee uur als het zomertijd is) van elke maandag.

Dit lijkt tegenwoordig weer te werken:

const now1 = new Date().toLocaleString("nl-NL", {hour12: true, timeZone: "Europe/Amsterdam"});
log('new-date now1  : ', now1);

Result: new-date now1 : 12/20/2021, 5:38:51 PM

Ja klopt, maar daar heb je nog niet zo veel aan als je wilt rekenen aan datums/tijden.

Simpel gedacht: het script dan in ieder geval na 2 uur 's nachts starten?
(Als tijdstip “exact na middernacht” voor gerelateerde “weeknummer-flows” niet van belang is natuurlijk)