# Hoe kan ik tijd meten?

**URL:** <https://community.homey.app/t/hoe-kan-ik-tijd-meten/71948>\
**Category:** Vragen & hulp\
**Created:** [November 9, 2022, 2:37pm UTC](https://community.homey.app/t/hoe-kan-ik-tijd-meten/71948 "2022-11-09T14:37:41Z")\
**Posts on this page:** 14\
**Page:** 1

<div class="post-metadata">

**Author:** ![vavoem](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/vavoem/32/56536_2.png) [@vavoem](https://community.homey.app/u/vavoem)\
**Post date:** [November 9, 2022, 2:37pm UTC](https://community.homey.app/t/hoe-kan-ik-tijd-meten/71948/1 "2022-11-09T14:37:41Z")

</div>

Hi,

Misschien een hele domme vraag, maar weet iemand hoe ik makkelijk in een flow de tijd kan opslaan en dan als de flow klaar is, nog een keer en dan uitrekenen hoe lang het geduurd heeft? Kan iemand mij op weg helpen? Ik heb dus een douche flow lopen die mijn connectix watermeter uitleest, en dan blijft lopen totdat de waterflow stopt en er dus geen douche meer actief is. Ik wil dus ook graag weten, hoe lang de douchebeurt is geweest. Het lukt mij alleen niet om de tijd in een variabele te zetten, er kom alleen het uur in en niet de minuten. Daarna wil ik berekenen wat het verschil tussen start en stop is…

---

<div class="post-metadata">

**Author:** ![Satoer](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/satoer/32/38113_2.png) [@Satoer](https://community.homey.app/u/Satoer)\
**Post date:** [November 9, 2022, 3:31pm UTC](https://community.homey.app/t/hoe-kan-ik-tijd-meten/71948/2 "2022-11-09T15:31:22Z")

</div>

Je zou zo iets kunnen doen:

 ![afbeelding](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/6/9/69faa71d6f6bc81cde43a421a5c0116558264425.png)  
Waarbij je contactalarm dus de “doucheflow” sensor moet zijn.  
Loopt het water? Dan wordt er elke 10 seconde, 10 bij de douchetijd variable opgeteld.

Daarna zou je een flow kunnen maken die start als de “doucheflow” stopt, de waarde uitleest en een melding stuurt van de douchetijd, vervolgens deze waarde weer reset voor de volgende douchebeurt. Voeg bij het resetten van de variable ook een vertraging toe (na 5 seconde). Ik heb namelijk wel eens gehad dat iets wat eerder in een flow stond, later werd uitgevoerd. Waardoor de waarde al gereset was voordat het verwerkt was.

---

<div class="post-metadata">

**Author:** ![vavoem](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/vavoem/32/56536_2.png) [@vavoem](https://community.homey.app/u/vavoem)\
**Post date:** [November 9, 2022, 3:43pm UTC](https://community.homey.app/t/hoe-kan-ik-tijd-meten/71948/4 "2022-11-09T15:43:55Z")

</div>

Thanks, ik ga dit proberen

---

<div class="post-metadata">

**Author:** ![Satoer](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/satoer/32/38113_2.png) [@Satoer](https://community.homey.app/u/Satoer)\
**Post date:** [November 9, 2022, 3:45pm UTC](https://community.homey.app/t/hoe-kan-ik-tijd-meten/71948/5 "2022-11-09T15:45:56Z")

</div>

Je zou ook deze app kunnen installeren (Geen ervaring mee):

> **[Chronograph](https://homey.app/nl-nl/app/nl.fellownet.chronograph/Chronograph/)**
>
> Voegt accurate timer, stopwatch en transitie functionaliteit toe aan Homey.

Maar persoonlijk zou ik zoveel mogelijk zonder extra apps proberen op te lossen.

---

<div class="post-metadata">

**Author:** ![Sjoerd1](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/sjoerd1/32/33892_2.png) [@Sjoerd1](https://community.homey.app/u/Sjoerd1)\
**Post date:** [November 9, 2022, 4:00pm UTC](https://community.homey.app/t/hoe-kan-ik-tijd-meten/71948/6 "2022-11-09T16:00:00Z")

</div>

> [@vavoem](#):
>
> isschien een hele domme vraag, maar weet iemand hoe ik makkelijk in een flow de tijd kan opslaan en dan als de flow klaar is, nog een keer en dan uitrekenen hoe lang het geduurd heeft? Kan iemand mij op weg helpen? Ik heb dus een do

Deze optie is beter en duidelijker. Met de voorbeeldflow wordt er elke 10 seconden iets gecheckt heel de dag door, wat onnodige belasting is en Homey op lange termijn niet zo leuk vindt denk ik. Daarnaast kun je met Chonograph ook timers zetten, als iemand dan 10 minuten doucht dat de lamp knippert bijvoorbeeld.

---

<div class="post-metadata">

**Author:** ![Satoer](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/satoer/32/38113_2.png) [@Satoer](https://community.homey.app/u/Satoer)\
**Post date:** [November 9, 2022, 4:26pm UTC](https://community.homey.app/t/hoe-kan-ik-tijd-meten/71948/7 "2022-11-09T16:26:46Z")

</div>

Eens, het is niet zo netjes elke 10 seconde te pollen. Maar ik denk dat de impact wel heel erg meevalt gezien die alleen wat doet als de kraan open staat. En dan is het alsnog alleen een simpel optel sommetje.  
Elke extra geïnstalleerde app heeft ook impact op het algehele geheugen gebruik wat de boel ook trager maakt. En dit draait ook de hele tijd op de achtergrond mee.

Over apps gesproken, heb nog een app gevonden wat volgens mij exact het antwoord is op jouw probleem @vavoem :

> Always wanted to know how long your device is running or how much energy it used?

> **[Flow Utilities](https://homey.app/en-us/app/com.flow.utilities/Flow-Utilities/)**
>
> Get more out of data for in flows

---

<div class="post-metadata">

**Author:** ![Marcel\_Ubels](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/marcel_ubels/32/18860_2.png) [@Marcel\_Ubels](https://community.homey.app/u/Marcel_Ubels)\
**Post date:** [November 9, 2022, 7:14pm UTC](https://community.homey.app/t/hoe-kan-ik-tijd-meten/71948/8 "2022-11-09T19:14:32Z")

</div>

Ik ben bezig met een script hiervoor( connectix watermeter). Ben nu aan het kijken of het goed werkt. Het werkt automatisch. Iedere keer als het water loopt wordt dat opgeslagen. Uiteindelijk word om 0:00 uur doorgerekend of er gedoucht is. Per douchebeurt registreert hij dan de tijd, hoeveelheid water en de kosten.

 ![image](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/a/f/af3950cc3ce7a2342de24ea2375219184eb99619.jpeg)

In de nabije toekomst wil ik ditzelfde doen met de registratie van de slimme meter( connectix) en watermeter. Zodanig dat ik een overzicht heb. Hieronder dat voorbeeld, maar zoals je ziet is daar nog wel even wat werk te verrichten

 ![image](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/d/3/d3853ac2d3fb4c7bcd20f737a00ddc8e0f38c420.jpeg)

---

<div class="post-metadata">

**Author:** ![vavoem](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/vavoem/32/56536_2.png) [@vavoem](https://community.homey.app/u/vavoem)\
**Post date:** [November 9, 2022, 9:37pm UTC](https://community.homey.app/t/hoe-kan-ik-tijd-meten/71948/9 "2022-11-09T21:37:53Z")

</div>

wow, dat is tof… Mocht je het tzt willen delen dan houd ik mij aanbevolen 😉

---

<div class="post-metadata">

**Author:** ![Marcel\_Ubels](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/marcel_ubels/32/18860_2.png) [@Marcel\_Ubels](https://community.homey.app/u/Marcel_Ubels)\
**Post date:** [November 9, 2022, 9:55pm UTC](https://community.homey.app/t/hoe-kan-ik-tijd-meten/71948/10 "2022-11-09T21:55:46Z")

</div>

Ik zal hem zeker delen. Douche script zal in de loop van de volgende week af komen. Verwacht ik.

---

<div class="post-metadata">

**Author:** ![Peter\_Kawa](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/peter_kawa/32/173848_2.png) [@Peter\_Kawa](https://community.homey.app/u/Peter_Kawa)\
**Post date:** [November 10, 2022, 12:06am UTC](https://community.homey.app/t/hoe-kan-ik-tijd-meten/71948/11 "2022-11-10T00:06:10Z")

</div>

Hier is nog een leuke kant-en-klare Adv.flow, deze maakt wel gebruik van Chronograph:

> [@The Flow Exchange(r) - Exchange Your Flows with Others!](https://community.homey.app/t/the-flow-exchange-r-exchange-your-flows-with-others/68981/23):
>
> Device state Time logger (Fixed some logics issues) For how long was my device on or off today (or the last X hrs/days)? The example flow resets the stopwatch at midnight. By pausing the stopwatch, when the device status is changed back, the times get added automatically when the device status changed again, until one resets the stopwatch. The duration gets written into 2 variables, one with hh:mm:ss format and one with human time format.

---

<div class="post-metadata">

**Author:** ![Marcel\_Ubels](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/marcel_ubels/32/18860_2.png) [@Marcel\_Ubels](https://community.homey.app/u/Marcel_Ubels)\
**Post date:** [November 10, 2022, 10:21am UTC](https://community.homey.app/t/hoe-kan-ik-tijd-meten/71948/12 "2022-11-10T10:21:00Z")

</div>

Dit is momenteel het werkende Homeyscript. Ik ben nog bezig met fine-tunen, maar het lijkt ok te werken. Mijn grote dank gaat uit naar @Arie_J_Godschalk voor het maken van de zoekfunctie in de arrays.

Je moet 1 logic nummer variabele ‘Water Tarief’ aanmaken. Installeer Homeyscript. Maak een leeg script aan en kopieer onderstaande code erin, start het script en zoek het id nummer van je watermeter.

```auto
let devices = await Homey.devices.getDevices();
_.forEach(devices, device =>{
console.log(device.name, '',device.id);
})
return true

```

Het volgende script kopieren in een nieuw homey script en opslaan onder de naam Shower. Het id dat je hebt gevonden vul je in bij de regel 'var smartWaterMeterId = ‘6923a7e2-598e-4493-9973-64344dab3336’; Maak daarna 1 flow aan; Als watermeter update Dan Homeyscript run Shower. Tweede flow: Als het 0:00 is dan Homeyscript Run code. De volgende code kan je in het veld plakken  
// waterMeterShowerUpdate setting to false  
global.set(‘waterMeterShowerUpdate’, false)

En de laatste flow; Als het (bijv) 20:15 is Dan Send a text only mail, voor de inhoud zoek je de tag Shower Textblock. Suc6

Hieronder het Shower script

```auto
var varName = ['Water Tarief'];
var logicId = [];
var count = 0;

while(count <= varName.length -1)
{
var Logic = await Homey.logic.getVariables();
let idArr = Object.entries(Logic);
let filtered = idArr.filter(([key, value]) => value.name==varName[count]);
let [[ ,{ id: varNameId }]] = filtered;
logicId.splice(count, 1,varNameId);
count++;
}
//Logic variable radioUpdate
var waterRate = await Homey.logic.getVariable({ id: logicId[0]}) ;
waterRate = waterRate.value;
console.log('waterTarif is: '+waterRate);

var smartWaterMeterId = '6923a7e2-598e-4493-9973-64344dab3336';
var device = await Homey.devices.getDevice({ id: smartWaterMeterId });
var waterMeter = device.capabilitiesObj.meter_water.value;

const date = new Date();
var minutes = date.getMinutes();
var hours = date.getHours();
var totalMinutes = (60 * hours) + minutes;
console.log('totalMinutes is:'+totalMinutes);

waterMeterShowerUpdate = global.get('waterMeterShowerUpdate');
console.log('waterMeterShowerUpdate is: ' +waterMeterShowerUpdate);

if(waterMeterShowerUpdate === false)
{
global.set('waterMeterShowerUpdate', true);
var waterMeterShower = Array(1440).fill(0);
global.set('waterMeterShower', waterMeterShower );
}

var waterMeterShower = global.get('waterMeterShower');
waterMeterShower.splice(totalMinutes,1,waterMeter);
global.set('waterMeterShower', waterMeterShower);

let arr = waterMeterShower;
let time =4;

// Here we go, non-flat, or, double array
let ret = getShowerArray(arr, time, false);
console.log(ret);
// And flat array
let retFlat = getShowerArray(arr, time, true);
console.log(retFlat);

function getShowerArray (indices, showerTime, asFlatArray) {

  let objs = _.map(indices, a=>{return {amount:a}; });
  _.each(objs, (x,index)=> { 
    if(x.amount===0) return;// x.time=-1;
    let yi = _.findIndex(objs, (y,yIndex)=>yIndex>index && y.amount==0)
    x.time = yi-index;
  });

  let output = [], active=false;//, ret2 = _.filter(objs, x=>x.time);
  _.each(objs, (x, index)=> {
    if(!x.time) active=false;  
    else if(active) output[output.length-1].push(x.amount);
    else if(x.time>=showerTime) {
      output.push([x.amount]);
      active = true;
    }
  });
  return asFlatArray ? _.flatMap(output) :output;

}
tmp = ret[1];
console.log('tmp is: ' +ret.length)

var count = 0;
console.log('Aantal douchebeurten is: ' +ret.length)
console.log(ret[0])
//var tmp = (ret[0][ret[0].length -1]) - (ret[0][0])
//console.log(tmp)
var tmpTotalShower = 0;
var totalShower = [];
var minutesShower = [];
var tmpMinutesShower = [];

while(count <= ret.length -1)
{
var tmpTotalShower = ((ret[count][ret[count].length -1]) * 1000) - ((ret[count][0]) * 1000);
totalShower.splice(count,1,tmpTotalShower);
tmpMinutesShower = ret[count].length;
minutesShower.splice(count,1,tmpMinutesShower);
count++;
}
console.log('totalShower is: '+totalShower);
console.log('minutesShower is: '+minutesShower);

count = 0;
teller = 1;
var temporarily = [];
while(count < totalShower.length )
{
if(totalShower[count] > 20 && ((totalShower[count] / totalShower[count].length) > 3))
{
var showerTextBlock = 'Douchebeurt ' +((teller)) +' duurde ' +minutesShower[count] +' minuten en er werd ' +Math.round(totalShower[count]) +' liter water verbruikt' + '\r'+'\n' +'Kosten: ' +((totalShower[count] * (waterRate / 1000)) * 100).toFixed(2) +' eurocent' +'\r\n';
temporarily.splice(count,1,showerTextBlock);
teller++;
}
count++;
}
temporarily = temporarily.join("");
showerTextBlock = temporarily;

console.log(showerTextBlock)

await tag('Shower TextBlock', showerTextBlock);

```

---

<div class="post-metadata">

**Author:** ![HuisCHovens](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/huischovens/32/16973_2.png) [@HuisCHovens](https://community.homey.app/u/HuisCHovens)\
**Post date:** [November 10, 2022, 4:53pm UTC](https://community.homey.app/t/hoe-kan-ik-tijd-meten/71948/13 "2022-11-10T16:53:05Z")

</div>

Mooi script @Marcel_Ubels zou  
Dit ook kunnen werken op een Smartgateways watermeter?

---

<div class="post-metadata">

**Author:** ![Marcel\_Ubels](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/marcel_ubels/32/18860_2.png) [@Marcel\_Ubels](https://community.homey.app/u/Marcel_Ubels)\
**Post date:** [November 10, 2022, 5:02pm UTC](https://community.homey.app/t/hoe-kan-ik-tijd-meten/71948/14 "2022-11-10T17:02:52Z")

</div>

Zekers, want het is geschreven voor een smartgateway watermeter💪

---

<div class="post-metadata">

**Author:** ![HuisCHovens](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/huischovens/32/16973_2.png) [@HuisCHovens](https://community.homey.app/u/HuisCHovens)\
**Post date:** [November 10, 2022, 5:15pm UTC](https://community.homey.app/t/hoe-kan-ik-tijd-meten/71948/15 "2022-11-10T17:15:27Z")

</div>

Oke dat is nice ik wist even niet meer dat van Connectix was 😁
