I'm using Busch-Jaeger Waveline Window switches that send the position of the Windows on the Bus. When I open a Windows it should open the Blinds and lock them. As soon as I close the Window, the blinds should go back in the old position (could be full open or full close).
One of the challenges
The window controls delivers a value from 0 to 255 depending on the position:
255 means window open
76 means window flip open
If you flip open the window you'll move the handel over the open position, so there will be the position 255 send on the bus once. For handling the real open condition, I would need a "delay condition":
If position = 255 for at least 2 seconds, then condition will become true.
For the blinds itself, I need to define a variable in LinKNX which stores the old value. Once the condition becomes true, I can simply send to a group address the the actor that will open and lock the blinds (this is supported).
If the condition becomes false again, I need to unlock the blinds (writing 0 to the "open and lock" address) and then either do nothing or shut the blinds if they where closed before.
Would be great if someone can help me with this logic. I'm pretty sure that there are people out having a similar logic.
Thanks, Netsrac
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
This will set window_open to "on" after 3 seconds of Waveline_position=255 and "reset" it immediately after it becomes <> 255
Not tested, but should work…Hope that helps, best Regards, jens
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
thanks…this is amazing…and it works. I already experimented with this time-counter, but I never thought about the idea to set the reset-delay to "0".
To continue in my project:
Is there any way to add a read command in the "window_open" = "on" rule that will read the current position of the blinds and store it in a variable for going back to the old position once "window_open" becomes "off".
Or do I simply need to capture all changes to the blinds in advance?
Thanks, Netsrac
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hey Guys,
I need some more help from you:
I'm using Busch-Jaeger Waveline Window switches that send the position of the Windows on the Bus. When I open a Windows it should open the Blinds and lock them. As soon as I close the Window, the blinds should go back in the old position (could be full open or full close).
One of the challenges
The window controls delivers a value from 0 to 255 depending on the position:
255 means window open
76 means window flip open
If you flip open the window you'll move the handel over the open position, so there will be the position 255 send on the bus once. For handling the real open condition, I would need a "delay condition":
If position = 255 for at least 2 seconds, then condition will become true.
For the blinds itself, I need to define a variable in LinKNX which stores the old value. Once the condition becomes true, I can simply send to a group address the the actor that will open and lock the blinds (this is supported).
If the condition becomes false again, I need to unlock the blinds (writing 0 to the "open and lock" address) and then either do nothing or shut the blinds if they where closed before.
Would be great if someone can help me with this logic. I'm pretty sure that there are people out having a similar logic.
Thanks, Netsrac
Hey Netsrac,
you could use the following script with the latest(!) version of linknx (in CVS)
<rule id="Window_opened">
<condition type="time-counter" threshold="3" reset-delay="0">
<condition type="object" id="Waveline_position" value="255" trigger="true" />
</condition>
<actionlist >
<action type="set-value" id="window_open" value="on" />
</actionlist>
<actionlist type="on-false">
<action type="set-value" id="window_open" value="off" />
</actionlist>
</rule>
This will set window_open to "on" after 3 seconds of Waveline_position=255 and "reset" it immediately after it becomes <> 255
Not tested, but should work…Hope that helps, best Regards, jens
Jens,
thanks…this is amazing…and it works. I already experimented with this time-counter, but I never thought about the idea to set the reset-delay to "0".
To continue in my project:
Is there any way to add a read command in the "window_open" = "on" rule that will read the current position of the blinds and store it in a variable for going back to the old position once "window_open" becomes "off".
Or do I simply need to capture all changes to the blinds in advance?
Thanks, Netsrac