Posts: 36
Threads: 10
Joined: Sep 2021
Reputation:
0
Hello
Is it possible to display the operation time of an object (lamp, air conditioner) in minutes on screen
. Thanks
Posts: 8071
Threads: 43
Joined: Jun 2015
Reputation:
470
Do you mean the time since the last ON command or the overall running time?
Posts: 36
Threads: 10
Joined: Sep 2021
Reputation:
0
(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
Posts: 8071
Threads: 43
Joined: Jun 2015
Reputation:
470
You will need two scripts for this.
1. Event script mapped to control or status object if the load:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
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).
Posts: 36
Threads: 10
Joined: Sep 2021
Reputation:
0
23.12.2021, 11:22
(This post was last modified: 23.12.2021, 11:39 by Nir70 .)
(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:
1 2 3 4 5 6 7 8 9 10 11 12 13
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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
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
Posts: 8071
Threads: 43
Joined: Jun 2015
Reputation:
470
Yes, set display mode to value or icon/value.
Posts: 36
Threads: 10
Joined: Sep 2021
Reputation:
0
(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?
Posts: 8071
Threads: 43
Joined: Jun 2015
Reputation:
470
The scheduled script should update the value each minute, check that it is set up correctly
Posts: 36
Threads: 10
Joined: Sep 2021
Reputation:
0
I checked does not update in real time, only I send a shutdown (0) it displays.
Posts: 8071
Threads: 43
Joined: Jun 2015
Reputation:
470
What is the data type of control object that is mapped to an event script?
Posts: 36
Threads: 10
Joined: Sep 2021
Reputation:
0
1 bit lamp, what do you mean?
Posts: 8071
Threads: 43
Joined: Jun 2015
Reputation:
470
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.
Posts: 167
Threads: 20
Joined: Apr 2017
Reputation:
2
24.12.2021, 15:49
(This post was last modified: 24.12.2021, 15:52 by Dré .)
(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' ?
Posts: 335
Threads: 74
Joined: Jan 2021
Reputation:
0
Thanks admin
The Script work fine for me and I add last run interval when value become false instead of nothing
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
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,
Posts: 167
Threads: 20
Joined: Apr 2017
Reputation:
2
(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:
1 2 3 4 5 6 7 8 9 10 11 12 13
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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
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:
1 2 3 4 5 6 7 8 9 10 11 12 13
Laptop_Table =
event.getvalue ()
ontime_Laptop_Table =
'ontime'
output_Laptop_Table =
'32/1/201'
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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
ontime_Laptop_Table =
'ontime'
output_Laptop_Table =
'32/1/201'
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:
1 2 3 4 5 6 7 8 9 10 11 12 13
Kitchen =
grp.getvalue (
'1/4/4' )
ontime_Kitchen =
'ontime'
output_Kitchen =
'32/1/202'
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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
ontime_Kitchen =
'ontime'
output_Kitchen =
'32/1/202'
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?
Posts: 36
Threads: 10
Joined: Sep 2021
Reputation:
0
Hello Thank you for the help It also works with the last time it was activated.
Posts: 8071
Threads: 43
Joined: Jun 2015
Reputation:
470
@Dré, you need to change the storage key ('ontime'), not the variable name:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
Kitchen =
grp.getvalue (
'1/4/4' )
ontime_Kitchen =
'ontime_kitchen'
output_Kitchen =
'32/1/202'
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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
ontime_Kitchen =
'ontime_kitchen'
output_Kitchen =
'32/1/202'
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.
Posts: 167
Threads: 20
Joined: Apr 2017
Reputation:
2
28.12.2021, 12:34
(This post was last modified: 28.12.2021, 12:38 by Dré .)
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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
ontime_Laptop_Table =
'ontime_Laptop_Table'
output_Laptop_Table =
'32/1/201'
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.
Posts: 36
Threads: 10
Joined: Sep 2021
Reputation:
0
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
Posts: 8071
Threads: 43
Joined: Jun 2015
Reputation:
470
Make sure you use a scheduled script that runs every minute not a resident script with low or 0 sleep time.