- batt1.JPG (197.65 KiB) Viewed 2695 times
- bat2.JPG (164.72 KiB) Viewed 2695 times
- batt3.JPG (116.12 KiB) Viewed 2695 times
- batt4.JPG (106.46 KiB) Viewed 2695 times
- batt5.JPG (91.26 KiB) Viewed 2695 times
- battgif.gif (1.26 MiB) Viewed 2695 times
Moderators: grovkillen, Stuntteam, TD-er
Code: Select all
On mcp* Do
Let,40,%eventpar% //for timer
Let,41,%eventpar%-1 //for gpio
Let,42,%eventpar%+16 //for blink
LedXX.gpio,[var#41],1
If %eventvalue1%=0
Let,60,1
TimerSet_ms,40,1500
Else
If [var#60]=1
TimerSet,40,0
Event,shortpress=%eventvalue1%,[var#40]
Endif
Endif
Endon
On shortpress Do
If %eventvalue1%=1 and [var#%eventvalue2%]=0 //start timer and blinking
Let,%eventvalue2%,1 //status
AsyncEvent,Timer=%eventvalue2%
AsyncEvent,WaitLed=[var#41]
Elseif %eventvalue1%=1 and [var#%eventvalue2%]=1 //if shortpressed again, turn off
Let,%eventvalue2%,0 //status
Let,40,%eventvalue2%+16
Let,45,%eventvalue2%-1
RelayXX.gpio,[var#45],0
LedXX.gpio,[var#45],0
TimerSet,%eventvalue2%,0
TimerSet,[var#40],0
Endif
Endon
On longpress Do
Let,[var#40],1 //status
RelayXX.gpio,[var#41],1
LedXX.gpio,[var#41],1
TimerSet,[var#40],0
TimerSet,[var#42],0
Let,48,[var#41]+50
TimerSet,[var#48],5
Endon
On Timer Do
TimerSet,%eventvalue%,120 //delayed on
Endon
On WaitLed Do
LedXX.pulse,%eventvalue%,1,500
TimerSet,[var#42],1
Endon
On rules#timer* Do
If %eventvalue1%<17 //after timer is finished turn led and relay on
Let,43,%eventvalue1%+16
TimerSet,[var#43],0
Let,[var#43],0
Let,44,%eventvalue1%-1
RelayXX.gpio,[var#44],1
LedXX.gpio,[var#44],1
Let,48,[var#44]+50
TimerSet,[var#48],120 //after that time turn relay and led off
Elseif %eventvalue1%<33 //blink
Let,44,%eventvalue1%-17
AsyncEvent,WaitLed=[var#44]
Elseif %eventvalue1%=40
Let,60,2
event,longpress
Elseif %eventvalue1%>49 And %eventvalue1%<67 //turn everything off after a while
Let,47,%eventvalue1%-50
RelayXX.gpio,[var#47],0
LedXX.gpio,[var#47],0
Let,49,[var#47]+1
Let,[var#49],0
Ther will be of course.... an the room the cabinet will be located is a hall that is relatively clean and floor as walls are concrete..
Code: Select all
On mcp* Do
Let,40,%eventpar% //for timer
Let,41,%eventpar%-1 //for gpio
Let,42,%eventpar%+16 //for blink
If %eventvalue1%=0
LedXX.gpio,[var#41],1
let,60,1
TimerSet_ms,40,1500
Else
If [var#60]=1
TimerSet,40,0
Event,shortpress=%eventvalue1%,[var#40]
Endif
Endif
Endon
On shortpress Do
If %eventvalue1%=1 and [var#%eventvalue2%]=0 //start timer and blinking
Let,%eventvalue2%,1 //status
TimerSet,%eventvalue2%,10
TimerSet,[var#42],1
Elseif %eventvalue1%=1 and [var#%eventvalue2%]=1 //if shortpressed again, turn off
Let,%eventvalue2%,0 //status
Let,40,%eventvalue2%+16
Let,45,%eventvalue2%-1
RelayXX.gpio,[var#45],0
LedXX.gpio,[var#45],0
TimerSet,%eventvalue2%,0
TimerSet,[var#40],0
Endif
Endon
On longpress Do
Let,[var#40],1 //status
RelayXX.gpio,[var#41],1
LedXX.gpio,[var#41],1
TimerSet,[var#40],0
TimerSet,[var#42],0
Let,48,[var#41]+50
TimerSet,[var#48],5
Endon
On WaitLed Do
TimerSet,%eventvalue%,1
Endon
On rules#timer* Do
If %eventvalue1%<17 //after timer is finished turn led and relay on
Let,43,%eventvalue1%+16
TimerSet,[var#43],0
Let,[var#43],0
Let,44,%eventvalue1%-1
RelayXX.gpio,[var#44],1
LedXX.gpio,[var#44],1
Let,48,[var#44]+50
TimerSet,[var#48],10 //after that time turn relay and led off
Elseif %eventvalue1%<33 //blink
Let,%eventvalue1%,![var#%eventvalue1%]
Let,46,%eventvalue%-17
LedXX.gpio,[var#46],[var#%eventvalue1%]
AsyncEvent,WaitLed=%eventvalue1%
Elseif %eventvalue1%=40
Let,60,2
event,longpress
Elseif %eventvalue1%>49 And %eventvalue1%<67 //turn everything off after a while
Let,47,%eventvalue1%-50
RelayXX.gpio,[var#47],0
LedXX.gpio,[var#47],0
Let,49,[var#47]+1
Let,[var#49],0
Code: Select all
If %eventvalue1%<17 //after timer is finished turn led and relay on
Let,43,%eventvalue1%+16
TimerSet,[var#43],0 <----THIS TIMER SHOULD GET CANCELED
Let,[var#43],0
Let,44,%eventvalue1%-1
RelayXX.gpio,[var#44],1
LedXX.gpio,[var#44],1
Let,48,[var#44]+50
TimerSet,[var#48],10 //after that time turn relay and led off
Ok..solved this by not calling the blink-timer with an asyncevent.
See here: viewtopic.php?p=59748#p59748
I do not understand what you mean..or better i somehow know what you mean but i don’t know how i can implement that in my code...
I wanted to simplify the code by letting things out. (it is less confusing if you use a colorhighligting and hinting script where you can easily see which variable is already in use )
Code: Select all
On System#Boot Do
RelayXX.gpio,all,0
LedXX.gpio,all,0
MCPModeRange,1,16,1
MonitorRange,MCP,1,16
GPIO,4,1
TimerSet,99,1
Endon
On mcp* Do
Let,40,%eventpar% //for timer
Let,41,%eventpar%-1 //for gpio
Let,42,%eventpar%+16 //for blink
If %eventvalue1%=0
LedXX.gpio,[var#41],1
Let,60,1
TimerSet_ms,40,1500
Else
If [var#60]=1
TimerSet,40,0
Event,shortpress=%eventvalue1%,[var#40]
Endif
Endif
Endon
On shortpress Do
If %eventvalue1%=1 and [var#%eventvalue2%]=0 //start timer and blinking
Let,%eventvalue2%,1 //status
If [var#70]=1
LedXX.gpio,[var#41],0
TimerSet,%eventvalue2%,20
LoopTimerSet,[var#42],2
Else
TimerSet_ms,%eventvalue2%,200
Endif
Elseif %eventvalue1%=1 and [var#%eventvalue2%]=1 //if shortpressed again, turn off
Let,%eventvalue2%,0 //status
Let,40,%eventvalue2%+16
Let,45,%eventvalue2%-1
RelayXX.gpio,[var#45],0
LedXX.pulse,[var#45],1,100
//LedXX.gpio,[var#45],0
TimerSet,%eventvalue2%,0
TimerSet,[var#40],0
Endif
Endon
On longpress Do
Let,[var#40],1 //status
RelayXX.gpio,[var#41],1
LedXX.gpio,[var#41],1
TimerSet,[var#40],0
TimerSet,[var#42],0
Let,48,[var#41]+50
TimerSet,[var#48],20
Endon
On rules#timer* Do
If %eventvalue1%<17 //after timer is finished turn led and relay on
Let,43,%eventvalue1%+16
TimerSet,[var#43],0
//Let,[var#43],0
Let,44,%eventvalue1%-1
RelayXX.gpio,[var#44],1
LedXX.gpio,[var#44],1
Let,48,[var#44]+50
TimerSet,[var#48],20 //after that time turn relay and led off
Elseif %eventvalue1%<33 //blink
Let,%eventvalue1%,![var#%eventvalue1%]
Let,46,%eventvalue%-17
LedXX.gpio,[var#46],[var#%eventvalue1%]
Elseif %eventvalue1%=40
Let,60,2
LedXX.gpio,[var#44],0
event,longpress
Elseif %eventvalue1%>49 And %eventvalue1%<67 //turn everything off after a while
Let,47,%eventvalue1%-50
RelayXX.gpio,[var#47],0
LedXX.gpio,[var#47],0
Let,49,[var#47]+1
Let,[var#49],0
//alarm------------------------
Elseif %eventvalue1%=70
If [var#70]=0
GPIO,33,1
Endif
Elseif %eventvalue1%=71
If [var#70]=0
AsyncEvent,LichtAus
Endif
Elseif %eventvalue1%=99
SendToHTTP api.thingspeak.com,80,/update?api_key=XXXXXXXXXXXXXXX&field1=[sensor#Temperature]&field2=[sensor#Temperature2]&field3=[sensor#Temperature3]
TimerSet,99,600
Endif
Endon
On AllRelaysevent Do
GPIOToggle,4
Endon
On WinterSwitch#btnstate Do
If %eventvalue% = 1
Let,70,1
If [DoorSwitch#btnstate]=1
AsyncEvent,LichtAn
7don
Endif
Else
Let,70,0
TimerSet,71,10
Endif
Endif
Endon
On DoorSwitch#btnstate Do
If [var#70] = 1
If %eventvalue% = 1
TimerSet,70,10
AsyncEvent,LichtAn
7don
Else
TimerSet,70,0
GPIO,33,0
AsyncEvent,LichtAus
7doff
Endif
Else
If %eventvalue% = 1
TimerSet,70,0
GPIO,33,0
Else
TimerSet,70,10
Endif
Endif
Endon
On RedBtn#state Do
GPIO,33,0
TimerSet,71,300
If [var#70]=0
AsyncEvent,LichtAn
TimerSet,71,10
Endif
Endon
On sensor#Temperature Do
7dtext,"[sensor#Temperature#F]#[sensor#Temperature2#F]#[sensor#Temperature3#F]"
Endon
On LichtAn Do
pwm,32,50,2000
Endon
On LichtAus Do
pwm,32,0,1000
Endon
//webbased switches------------
On lightevent Do
PWM,32,50,2000
Endon
On lightlong Do
PWM,32,0,2000
Endon
On heaterrelayevent Do
If [heaterrelay#btnState]=0
GPIO,13,1
Else
GPIO,13,0
Endif
Endon
https://espeasy.readthedocs.io/en/lates ... imer#timer
Yeah @Ath... that will teach you to ask me to read the docs first before I answer you via chat about the nr of timers.,,,
..
I use when all buttons are pressed and it is cold outside 32 timer at the same time... 16 for waiting and 16 for blinking leds
The problem with my setup is, that after the waiting time (leds are blinking ) is over the led is constantly on to visualize that the powersocket is switched on.
FIY @TD-er, by going through the datasheet of the PCA9685 i found out, that there is a pin for that : Unfortunately blinking individual leds with a PCA9685 seem to be only possible using timer in rules...
Users browsing this forum: No registered users and 0 guests