About Shutters
Tracing the position of shutters is a quite difficult matter since there is no way to retrieve it directly.
There are two types of eib telegrams: start moving the shutter and move it for a defined time (or stop it, just as you set the programmed time).
You can for example open the shutter by sending the move command with "up"
direction. Nothing on the bus will indicate that the shutter has
finished movement. Normally when you send the "move up" telegram, the
actor will close its move-up
contact for one minute. This time is
sufficient for the shutter to complete action. If you press any
direction button for a short time, the shutter will either
stop movement if it is the opposite direction or will stop after the
programmed time interval if it is the same direction. You can also
press the opposite direction, the shutter will stop, wait for a
programmed time and start moving in the opposite direction.
The only way to get the position is to measure the times the shutter is moving. I hope I did not forget a possible situation.
The strategy is as follows:
- we sample the time of a
move
-command. If the shutter is currently moving, we calculate its position at this point and keep it moving. - if
you request the position during a movement, we also calculate the
current position and reset the move start time to the actual time. So
you can watch the shutters
life
as they are moving. - currently, we ignore the move time after a
stop
-command. I recommend to program this time to 0 (stop only
) in your system. - even if the stop-time is not 0 the shutter position will synchronize if you open or close it completely by sending the move telegram and do not stop it manually. But you will get a deviation if you consecutively move the shutter up and down and stop it without reaching a terminal position. I think this can be handled better than it is now but i am convinced that it cannot be completely avoided. (I am also convinced that in 50 years from now people will laugh about problems like this...)
The actions
of a shutter is defined as the number of
movements (unlike other types where it is defined as the number of
cycles, on/off and thelike)
So moving the shutter up and down counts as two actions.
Currently, there is nothing like a mile-counter indicating the total mileage of your shutters...
Shutters in rleibd
Since shutters are controlled by two groups (start and stop) we have to
decide for one to track the position of the shutter. This is defined to
be the startgroup. Specify the stops
-element for the stopgroup. To
request the position of the shutter, use the startgroup only. In fact,
the pos
-variable also exists for the stopgroup but will not produce
meaningful results.
Retrieving the current position
You can get the position of a shutter just like the value of a window or a lamp by requests like
the response is the current value in % (0=up, 100=down)
The position may be requested in real time, even during shutter
movements.
Setting the position
rleibd can not only open or close a shutter or stop its movement as you
would do via your shutter switch. You can also move the shutter to a
predefined value by adding a simple ?val=x after the request.
x
hereby is the desired value in %. So with 50% your shutters are
half open. 85% will render the shutter opaque for most
shutters. You have to try for the exact value:
rleibd calculates the time and direction necessary for the movement and executes it. More exactly, it starts the movement and stops it after the calculated time. The stopcommand will always be executed, even if you send other commands to the shutter before.
rleibd will not execute movements of less than a second. Command processing on the EIB-bus is too slow to reliably perform things like this.
With this feature you can easily move the shutter to a
sun-protect-position
without having to bother about the initial
position.
Have a look at the perlscript sunjob
in the samples directory.
I use it to open my shutters at sunrise and to close them again
at sunset.