This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm that you accept these cookies being set.

Display time of object
#1
Hello

Is it possible to display the operation time of an object (lamp, air conditioner) in minutes on screen  Cry . Thanks
Reply
#2
Do you mean the time since the last ON command or the overall running time?
Reply
#3
(23.12.2021, 08:41)admin Wrote: Do you mean the time since the last ON command or the overall running time?

Hello

yes, the time since the last ON command . Thanks
Reply
#4
You will need two scripts for this.
1. Event script mapped to control or status object if the load:
Code:
12345678910111213
value = event.getvalue() key = 'ontime' out = '32/1/5' if value then   if not storage.get(key) then     storage.set(key, os.time())     grp.update(out, '0m')   end else   storage.delete(key)   grp.update(out, '') end

2. Scheduled script that runs every minute:
Code:
1234567891011121314151617181920
key = 'ontime' out = '32/1/5' time = storage.get(key) if time then   delta = os.time() - time   minutes = math.floor(delta / 60)      hours = math.floor(minutes / 60)   minutes = minutes % 60   if hours > 0 then     res = hours .. 'h '   else     res = ''   end      res = res .. minutes .. 'm'   grp.update(out, res) end

32/1/5 is the object that shows the load ON time, set data type to 250 byte string. If you need multiple status outputs then use a unique storage key for each load (ontime in this example).
Reply
#5
(23.12.2021, 09:32)admin Wrote: You will need two scripts for this.
1. Event script mapped to control or status object if the load:
Code:
12345678910111213
value = event.getvalue() key = 'ontime' out = '32/1/5' if value then   if not storage.get(key) then     storage.set(key, os.time())     grp.update(out, '0m')   end else   storage.delete(key)   grp.update(out, '') end

2. Scheduled script that runs every minute:
Code:
1234567891011121314151617181920
key = 'ontime' out = '32/1/5' time = storage.get(key) if time then   delta = os.time() - time   minutes = math.floor(delta / 60)     hours = math.floor(minutes / 60)   minutes = minutes % 60   if hours > 0 then     res = hours .. 'h '   else     res = ''   end     res = res .. minutes .. 'm'   grp.update(out, res) end

32/1/5 is the object that shows the load ON time, set data type to 250 byte string. If you need multiple status outputs then use a unique storage key for each load (ontime in this example).

Small request Can I display seconds? Thanks
Reply
#6
Yes, set display mode to value or icon/value.
Reply
#7
(23.12.2021, 11:46)admin Wrote: Yes, set display mode to value or icon/value.

Hello

It works, but it shows me the time only after shutdown ( send 0) , is it possible to view the time in real time?
Reply
#8
The scheduled script should update the value each minute, check that it is set up correctly
Reply
#9
I checked does not update in real time, only I send a shutdown (0) it displays.
Reply
#10
What is the data type of control object that is mapped to an event script?
Reply
#11
1 bit lamp, what do you mean?
Reply
#12
1 bit is ok because it won't work correctly for non-Boolean values. Are you sure the value is not inverted because sending Off should put an empty string as the run-time value. Check if you have modified the scripts in any way.
Reply
#13
(23.12.2021, 12:30)admin Wrote: The scheduled script should update the value each minute, check that it is set up correctly

I tried this scipt too and use it now for 28 minutes and it is counting.

did you post the seconds script in a 'scheduled script' ?
Reply
#14
Thanks admin
The Script work fine for me and I add last run interval when value become false instead of nothing 
Code:
123456789101112131415
value = event.getvalue() key = 'ontime' out = '40/1/7' if value then   if not storage.get(key) then     storage.set(key, os.time())     grp.update(out, '0m')   end else   Last_Run = grp.getvalue(out)   time = os.date(' %a, %d/%m',time)   grp.update(out, 'Last Run: '..Last_Run..' In'..time)   storage.delete(key) end
Best Regards,
Reply
#15
(23.12.2021, 09:32)admin Wrote: You will need two scripts for this.
1. Event script mapped to control or status object if the load:
Code:
12345678910111213
value = event.getvalue() key = 'ontime' out = '32/1/5' if value then   if not storage.get(key) then     storage.set(key, os.time())     grp.update(out, '0m')   end else   storage.delete(key)   grp.update(out, '') end

2. Scheduled script that runs every minute:
Code:
1234567891011121314151617181920
key = 'ontime' out = '32/1/5' time = storage.get(key) if time then   delta = os.time() - time   minutes = math.floor(delta / 60)     hours = math.floor(minutes / 60)   minutes = minutes % 60   if hours > 0 then     res = hours .. 'h '   else     res = ''   end     res = res .. minutes .. 'm'   grp.update(out, res) end

32/1/5 is the object that shows the load ON time, set data type to 250 byte string. If you need multiple status outputs then use a unique storage key for each load (ontime in this example).

I have a question, i try to use this script more times
i change the names value, key and out on both of the script on all places.
so both scripts use different names.

but if i trigger the seconds action, the first timer start for 0 again, some know what i do wrong?

my first event script for Laptop Table
Code:
12345678910111213
Laptop_Table = event.getvalue()        --'0 WCD Woonkamer - laptoplader eettafel (tm)' ontime_Laptop_Table = 'ontime' output_Laptop_Table = '32/1/201'    --'Laptop eettafel [timer on]'         if Laptop_Table then   if not storage.get(ontime_Laptop_Table) then     storage.set(ontime_Laptop_Table, os.time())     grp.update(output_Laptop_Table, '0 m')   end else   storage.delete(ontime_Laptop_Table)   grp.update(output_Laptop_Table, '') end


my first Resident script for Laptop Table
Code:
1234567891011121314151617181920
ontime_Laptop_Table = 'ontime' output_Laptop_Table = '32/1/201'            --'Laptop eettafel [timer on]'     time = storage.get(ontime_Laptop_Table) if time then   delta = os.time() - time   minutes = math.floor(delta / 60)      hours = math.floor(minutes / 60)   minutes = minutes % 60   if hours > 0 then     res = hours .. 'h '   else     res = ''   end      res = res .. minutes .. ' minuten'   grp.update(output_Laptop_Table, res) end

my second event script for Kitchen
Code:
12345678910111213
Kitchen = grp.getvalue('1/4/4')            --'0 Verl. Kitchen (tm)' ontime_Kitchen = 'ontime' output_Kitchen = '32/1/202'            --'Kitchen [timer on]'     if Kitchen then   if not storage.get(ontime_Kitchen) then     storage.set(ontime_Kitchen, os.time())     grp.update(output_Kitchen, '0 m')   end else   storage.delete(ontime_Kitchen)   grp.update(output_Kitchen, '') end

my first Resident script for Kitchen
Code:
1234567891011121314151617181920
ontime_Kitchen = 'ontime' output_Kitchen = '32/1/202'            --'Kitchen [timer on]' time = storage.get(ontime_Kitchen) if time then   delta = os.time() - time   minutes = math.floor(delta / 60)      hours = math.floor(minutes / 60)   minutes = minutes % 60   if hours > 0 then     res = hours .. 'h '   else     res = ''   end      res = res .. minutes2 .. ' minuten'   grp.update(output_Kitchen, res) end


another thing,
for me it looks like line 1 and line 4 of the Resident script look like do the same thing, or m i wrong?
Reply
#16
Hello Thank you for the help It also works with the last time it was activated. Heart
Reply
#17
@Dré, you need to change the storage key ('ontime'), not the variable name:
Code:
12345678910111213
Kitchen = grp.getvalue('1/4/4')            --'0 Verl. Kitchen (tm)' ontime_Kitchen = 'ontime_kitchen' output_Kitchen = '32/1/202'            --'Kitchen [timer on]'     if Kitchen then   if not storage.get(ontime_Kitchen) then     storage.set(ontime_Kitchen, os.time())     grp.update(output_Kitchen, '0 m')   end else   storage.delete(ontime_Kitchen)   grp.update(output_Kitchen, '') end

Code:
1234567891011121314151617181920
ontime_Kitchen = 'ontime_kitchen' output_Kitchen = '32/1/202'            --'Kitchen [timer on]' time = storage.get(ontime_Kitchen) if time then   delta = os.time() - time   minutes = math.floor(delta / 60)      hours = math.floor(minutes / 60)   minutes = minutes % 60   if hours > 0 then     res = hours .. 'h '   else     res = ''   end      res = res .. minutes2 .. ' minuten'   grp.update(output_Kitchen, res) end

If using multiple timers you can combine the scheduled/resident scripts into one.
Reply
#18
Thanks Admin & khalil.

i update the script so i have now a time like '00:05' and i also use the last time actived, what Khalil added.


My updated Resident script, thanks for both of you, without i could't make it.
Code:
12345678910111213141516171819202122
ontime_Laptop_Table = 'ontime_Laptop_Table' output_Laptop_Table = '32/1/201'            --'Laptop tafel [timer on]'     time = storage.get(ontime_Laptop_Table) if time then   delta = os.time() - time   minutes = math.floor(delta / 60)     hours = math.floor(minutes / 60)   minutes = minutes % 60   minutes = string.format("%02d", minutes)           if hours > 0 then     res = hours -- .. ': '   else     res = '00:'   end   hours = string.format("%02d", hours)   time_online = hours ..':'..minutes          grp.update(output_Laptop_Table, time_online) end

Yes and i also can use now more timers of this.
Reply
#19
Hello

I noticed whan  scrap is working. The processor is working hard, and the heat in the processor is rising a lot, is this a normal condition? Why is this happening? Best regards
Reply
#20
Make sure you use a scheduled script that runs every minute not a resident script with low or 0 sleep time.
Reply


Forum Jump: