ik heb een script geschreven om een aantal minuten om te rekenen naar uren en minuten
nu wil ik de waarde uit een nummer variabele op halen en vervolgens berekenen. en de uitkomst naar tekst variabele schrijven. Kan iemand mij hier bij helpen. ben nieuw in deze programmering. en ook nog niet echt ervaring met op forums werken.
hieronder mijn script:
//HomeyScript: minuten naar uren en minuten omzetten
let totaalMinuten = ‘130’; // 130 wil ik uit nummervariabele totaalminuten ophalen
let uren = Math.floor(totaalMinuten / 60);
let minuten = totaalMinuten % 60;
return `${uren}u ${minuten}m`; // Geeft “2u 10m” deze waarde wil ik in tekstvariabele tijd zetten
Je kan de “Voer script uit en return Tekst-tag” gebruiken, vervolgens plaats je een Logic card om het in de tekstvariabele op te slaan.
hallo,
maar hoe voeg ik dan een waarde uit een nummer variabele toe aan het script die waarde 130 vervangt.
ik ben een leek op dit gebied.
Hoi Marcel,
Je hebt hiervoor niet deze
maar deze HS kaart nodig:
In het ‘Argument’ veld plaats je de numerieke variabele (zie flow screenshot); de inhoud daarvan wordt iedere keer als de code wordt uitgevoerd opnieuw uitgelezen via (args[0])
Code:
//minuten naar uren en minuten omzetten
// this fetches the value of the variable used as argument:
let totaalMinuten = (args[0]);
// just to check on the argument value:
console.log(args[0]);
let uren = Math.floor(totaalMinuten / 60);
let minuten = totaalMinuten % 60;
return String(`${uren}u ${minuten}m`);
Resultaat:
1 Like
hallo,
dit werk top, alleen ik zou de uitkomst niet alleen in een notificatie willen hebben, maar ook in een nummer variabele . dit lukt me nu nog niet. moet hier dan een andere kaart voor gebruikt worden? of een ander script. de waarde in de nummer variabele zou dan bij bv 77 minuten 1.17 (1uur , 17 min) zijn
mvg
Ah, top!
Dan heb je de HS kaart “Voer code uit met Argument en return Numerieke-tag” nodig, de onderste HS kaart in de voorbeeld flow
Code:
//minuten naar uren en minuten omzetten (numeriek)
let totaalMinuten = (args[0]); // this is the value of the variable used as argument
// just to check the argument value
console.log(args[0]);
let uren = Math.floor(totaalMinuten / 60);
let minuten = totaalMinuten % 60;
return Number(`${uren}.${minuten}`); // Geeft de uren en minuten als numeriek getal terug, bijv "2.1", of "1.45"; voorwaarden: gebruik enkel getallen en max één decimaalpunt
Mocht je een tijdsweergave als 2.1 (voor 2u en 10 minuten) nu niet willen, dan ontkom je niet aan het gebruik van een tekst variabele, zie middelste flow;
de enige aanpassing met mijn vorige keer gedeelde script is dan het “return” gedeelte:
return `${uren}.${minuten}`;
Soms klaagt de code met “waarde is geen string”; forceer dan een string ( = tekst) waarde op deze manier:
return String(`${uren}.${minuten}`);
De [Result] tag die ik in het logica kaartje gebruik is de zg. lokale tag van de HS kaart waar hij aan vast zit. Verbind de twee kaarten wel vooraf om hem te kunnen selecteren;
Als je over de tag ‘hovert’ met de muisaanwijzer, dan zie je ook de link tussen de tag en het kaartje, plus een blauwe gloed ( → handig als er meerdere kaarten met een lokale tag in hetzelfde flow gedeelte zitten):
top
ik ben hier mee geholpen. super bedankt voor de hulp.
groet marcel
1 Like