27.12.2021, 15:03
(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: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: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:
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:
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:
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:
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?