(25.06.2017, 07:48)XSPA2474KW Wrote:(08.06.2017, 10:28)mlaudren Wrote: Hi,
You could use couple of counter and timer to define time since last push like:
Code:local pushcount = storage.get('pushcount', 0)
local timepush = os.time()
local timepushinit = storage.get('lastpush', 0)
delta = timepush - timepushinit
if delta > 60 then
pushcount = 0
storage.set('lastpush', timepush)
end
if pushcount == 0 then
-- do something
elseif pushcount == 1 and delta > 20 then
--do something
elseif pushcount == 2 and delta > 30 then
-- ...
else
-- do something
end
pushcount = pushcount+1
storage.set('pushcount', pushcount)
Hi mlaudren
thanks for your reply. I have written the code below but it is not working right. The code is working right at first time once, but when I change the temperature '5/3/0' manually, the Temp is not updated. Can you help?
local pushcount = storage.get('pushcount', 0)
local timepush = os.time()
local timepushinit = storage.get('lastpush', 0)
--Temp=grp.getvalue('5/3/0')
--storage.set('Temp',Temp)
local Temp = storage.get('Temp',0)
delta = timepush - timepushinit
grp.write('11/4/1',delta)
--grp.write('11/4/4',ActualTemp)
if delta > 15 then
pushcount = 0
storage.set('lastpush', timepush)
end
if pushcount == 0 then
ActualTemp=grp.getvalue('5/3/0')
storage.set('Temp', ActualTemp)
Temp=Temp+0.5
storage.set('Temp', Temp)
grp.write('11/4/3',Temp)
else
ActualTemp=grp.getvalue('5/3/0')
storage.set('Temp', ActualTemp)
Temp=Temp
storage.set('Temp', Temp)
grp.write('11/4/3',Temp)
end
pushcount = pushcount+1
storage.set('pushcount', pushcount)
--storage.set('Temp', Temp)
grp.write('11/4/2',pushcount)
--grp.write('11/4/3',Temp)
Hi,
I think you have a mistake in your code.
You read the address 5/3/0 and save the value in 'Temp'
but you never use this value after. so you only increase a value by 0.5 every time you press your button.
Look at the text I put in red.
What do you want to do?
if the user press 1 time, increase the setpoint to current+0.5?
Here is what the code do actually:
Code:
Get Temp, delta, pushcount;
if delta > 15
reset pushcount;
end
if pushcount == 0
Get actualtemp from (5/...)
Save actualtemp to 'Temp'
Temp +0.5 <-- it's the variable temp not the same as 'Temp' first time is equal to 0
Save Temp to 'Temp' <-- you override actualtemp you set just before
Write Temp to Addr(11/...)
else
Get actualtemp from (5/...)
Save actualtemp to 'Temp'
Temp=Temp <-- What the point to do this?
Save Temp to 'Temp' <-- same as above, you override actualtemp you set just before
Write Temp to Addr(11/....)
end
increase pushcount
Save pushcount in 'pushcount'
Is it the same subject this question: https://forum.logicmachine.net/showthread.php?tid=866 ?