Ik heb een ventilatietoestel met een externe sturing aangesloten op een relais van Velbus.
Als de relais sluit gaat de ventilatie gedurende 30 minuten in een hogere stand.
Ik heb een drukknop aangesloten op een 7-kanaalsingang module.
Ik wil het volgende gedrag. Als ik vijf keer druk op de drukknop, na elkaar, wil ik dat:
de relais sluit nu efkes (bv. 1 sec)
en binnen een half uur nog een keer kort (bv. 1 sec)
en binnen een half uur nog een keer kort (bv. 1 sec)
en binnen een half uur nog een keer kort (bv. 1 sec)
en binnen een half uur nog een keer kort (bv. 1 sec)
Een relais die elke half uur een keertje sluit dat kan ik wil programmeren.
Maar ik wil dus dat het aantal keer dat het gebeurt afhangt van het aantal presses.
Ik moet dus een functie vinden waarbij de “tijd” telkens maar aangroeit telkens je een keer extra drukt.
Dus als ik 3 keer press op de drukknop → dan zal de ventilatie 90 minuten aan zijn.
you define a global variable (timeSeconds) and then in a rule you increase it when required…
var int timer = 0
rule IncreaseTimer
when
channel velbus:buttonX
then
timer=timer + 60
fanchannel.sendCommand(ON)
while (timer >0) {
Thread::sleep(10000) // 10 seconds
timer = timer - 10
}
if (timer <0) {
fanchannel.sendCommand(OFF)
timer = 0
}
end
This essentially sets a global variable - and everytime you press the button it adds 60 seconds to it… then when you pressed the button it sends the ON command to the fan and starts a timer. every 10 seconds the script checks if the timer is below 0 seconds… if so, it will send the OFF command and set the timer back to 0 (as it could be negative)
(didnt test - but should look something like this)
Jammer dat niets mogelijk is met het hoofdprogramma.
Het zou wel een goede verbetering zijn als de multi-press functionaliteit of de 7-kanaals ingangsmodule ook zou werken op alle andere modules, bv. de glazen paneeltjes. Deze hebben heel wat kanalen wat veel mogelijkheden geeft.
Iets doen afhankelijk van hoeveel na elkaar je drukt, lijkt me een nuttig algemeen principe.