Homey Community Forum

HomeyScript seconden naar uren, minuten en seconden

Echt super nuttig is dit niet, maar wel leuk voor de mensen die graag dingen bijhouden. Ik heb dit HomeyScript gemaakt om de uitkomst van een stopwatch leesbaarder te maken.
Ik heb deze apps daarvoor in gebruik:

Met chronograph kun je een stopwatch starten en stoppen. De tijd daartussen wordt opgeslagen in de tag: looptijd (s)
Dit is dan opgeslagen in seconden, bijvoorbeeld 42123 seconden. Maar dan weet je nog niet bijster veel. Dus… als je dan het volgende invult bij Als dan zie je de uitkomst in de volgende screen

eventueel kun je de waarde overzetten naar een local tag en met Google TTS laten uitspreken op google speakers.

Je zou op deze manier dingen kunnen bijhouden zoals:
hoe lang je met een taak bezig bent.
hoe lang je pauze hebt genomen van je werk.
hoe lang je van huis bent geweest.
etc

Wellicht zijn er verbeteringen mogelijk, het is mijn 2e script dus ik hoor ze graag.

Dit is het HomeyScript:

let seconds = args[0];
let setAll = 0;

if (args[0] == '' || args[0] == undefined) {
    console.log ('Missing argument');
    return false;
} else {
  if (seconds <= 59) {
    setAll = seconds + " seconde";
  } else {
    let setMin = Math.floor(seconds / 60);
    if (setMin <= 59) {
      let setSec = Math.floor(seconds - (setMin * 60));

      if (setMin = 1) {
        minText = "minuut";
      } else {
        minText = "minuten";
      }

  setAll = setMin + " " + minText + " en " + setSec + " seconde";
} else {
  let setMin = Math.floor(seconds / 60);
  let setSec = Math.floor(seconds - (setMin * 60));
  let setHours = Math.floor(setMin / 60);
  setMin = setMin - (setHours * 60);

  if (setMin == 1) {
    minText = "minuut";
  } else {
    minText = "minuten";
  }

  setAll = setHours + " uur " + setMin + " " + minText + " en " + setSec + " seconde";
}
  }
  await setTagValue("totaleTijd", {type: "string", title: "totaleTijd"}, setAll);
}

console.log(setAll);
return(true);
3 Likes

Leuk! Breng je me weer mee op ideetjes👌
<mierenn**kmodus>
Ik zou ook voor de woordkeuze ‘seconde’ of ‘seconden’ dit ff wijzigen/toevoegen:
Wijzigen:

setAll = setMin + " " + minText + " en " + setSec + " seconde";

naar:

setAll = setMin + " " + minText + " en " + setSec + secText;

Toevoegen:

if (setSec == 1) {
    secText = "seconde";
  } else {
    secText = "seconden";
  }

</mierenn**kmodus>

1 Like

Om nog meer te mierenn**ken dan ook gelijk maar uur naar hoursText veranderen :rofl: :crazy_face:

if (setHours == 1) {
hoursText = "uur";
} else {
hoursText = "uren";
}

Oeps… Het blijft toch uur zie ik net uur / uren

1 Like

tnx guys… nou… zo dacht ik eerst ook. ook bij seconde zeg je gewoon seconde volgens mij. want ik zat zelf ook te bedenken dat je wel zegt 30 seconden maar niet 30 minuut en wel weer 30 meter, 30 gram etc.
maar dat blijkt dus ook zo te zijn maar bij seconde niet :smiley:
seconde wordt dus wel seconden… dus ik ga de toevoeging van @Peter_Kawa eraan toevoegen :slight_smile:

@Peter_Kawa wil je je ideetjes ook delen? :wink:

1 Like

hey hele script is nu:

let seconds = args[0];
let setAll = 0;

if (args[0] == '' || args[0] == undefined) {
    console.log ('Missing argument');
    return false;
} else {
  if (seconds <= 59) {

if (seconds == 1) {
  secText = "seconde";
} else {
  secText = "seconden";
}

setAll = seconds + " " + secText;
  } else {
    let setMin = Math.floor(seconds / 60);
    if (setMin <= 59) {
      let setSec = Math.floor(seconds - (setMin * 60));

if (setSec == 1) {
  secText = "seconde";
} else {
  secText = "seconden";
}

  if (setMin == 1) {
    minText = "minuut";
  } else {
    minText = "minuten";
  }

  setAll = setMin + " " + minText + " en " + setSec + " " + secText;
} else {
  let setMin = Math.floor(seconds / 60);
  let setSec = Math.floor(seconds - (setMin * 60));
  let setHours = Math.floor(setMin / 60);
  setMin = setMin - (setHours * 60);

  if (setSec == 1) {
    secText = "seconde";
  } else {
    secText = "seconden";
  }

  if (setMin == 1) {
    minText = "minuut";
  } else {
    minText == "minuten";
  }

  setAll = setHours + " uur " + setMin + " " + minText + " en " + setSec + " " + secText;
}
  }
  await setTagValue("totaleTijd", {type: "string", title: "totaleTijd"}, setAll);
}

console.log(setAll);
return(true);
1 Like

Had ik aan gedacht idd, maar ik zeg “hij heeft 1 uur, of 3 uur gelopen”. Vlgs mij zeg je niet “hij heeft 3 uren gelopen”. Dat is alleen met machines die draaiuren maken i.p.v. met kilometers meten.

Het moet dan weer wel als het script geen aantal opgeeft: “hij heeft uren gelopen” :sweat_smile:

Lekker hè, dat gemierenn**k haha

Het forum staat er vol mee, velen ergeren zich er aan :rofl:
edit Ik heb wat gevonden, ik had een poosje geleden het script van Jan P geleend en er wat aan verbouwd. Het geeft de naam van morgen terug, en maakt een variabele en vult deze met dezelfde naam.

Hey @Edgar leuk script, ik had zelf al hele rekentruucjes in een flow zitten implementeren, maar dit is veel netter en gebruik ik vanaf nu.

Ik heb ook net HomeyScript ontdekt, naar aanleiding van hun video op YouTube.

Jouw script geeft weer wat inspiratie! Thanks.

1 Like

dat script heb ik zelf ook al een tijdje draaien en elders gepost… en uitgebreider :slight_smile:
Maar… mijn nieuw geposte script bracht je op nieuwe ideeen en toch staan die verspreid over het forum waar anderen zich aan ergeren? die snap ik niet helemaal.

Oh haha, op die fiets. Ik heb nog geen duidelijke ideetjes, maar ik bedoelde dat ik in het algemeen veel tips en ideetjes heb gegeven op het forum. En dat anderen zich daaraan zouden ergeren is n beetje een geintje.

Deze al gezien? Developer Web API Playground - Notes of geeky oneliners

jah, hij had mij gister een dm gestuurd. thnx!

oh ja, het was niet tegen mij :smiley:

Yep, daar heb ik wel eens flink mee zitten rommelen, ook echt leuke dingen mee te doen!

1 Like

Ik ben zeer geïnteresseerd in een oplossing om tijd te registreren en dit lijkt en mooie oplossing.
Alleen heb ik het probleem dat ik nergens een tag de looptijd kan vinden. De stopwatch(van de app chronograph) is aangemaakt en heeft een tijdje gelopen. Ik zie geen tag in logica of via better logica.
Zoek ik op de verkeerde plek? Zijn er meer mensen die dit hebben?
Groeten Ramon

1 Like

Continuing the discussion from HomeyScript seconden naar uren, minuten en seconden:



Bedankt voor de reply
Ik zie keurig de uitkomst van het script als ik een ander argument kies. Echter kan ik van de chronograph kan ik niet de looptijd(s) vinden.
Er zal bij mij wel een foutje zitten in de chronograph app. Ik heb ook een apparaat aangemaakt van de stopwatch
Misschien hebben jullie nog een optie?
Alvast bedankt

en je flow?

en een apparaat? nee, ik heb eerst een flow die de stopwatch start of hervat, een flow die hem stopt en dan pas bovenstaande flow

Bedankt voor de moeite, maar ik loop hier vast:
Dit argument kan ik nergens vinden.
Gr Ramon

De looptijd is een lokale tag die alleen te vinden is in de flow die getriggerd wordt door de stopwatch. Die zie je dan bovenaan in de lijst. In andere flows is die tag er dus inderdaad niet. Dus als je hem ook in een andere flow wilt gebruiken, zul je hem zelf in een variabele moeten bewaren.

De Chronograph app heeft wel ook een mogelijkheid een stopwatch of timer als apparaat toe te voegen. Waarschijnlijk kan je er dan wel altijd bij.

Ik zou zweren dat die Looptijd(s) gewoon in de app Chronograph zit, bij het kaartje Stopwatch is gestopt.
ik gebruikt hem dan dus in HomeyScript met arguments en die stuurt de uitgeschreven tijd terug in variabele: totaleTijd