app-blind-controller
The app-blind-controller block is a software equivalent of a physical blind controller. It allows the blind position and louver position to be specified as percentages. After adding the app-blind-controller block to the project, the mobile application will create a related virtual device that allows blind control, monitoring of its state and position, and control from scenes and schedulers. From scenes and schedulers, it is possible to request a full upward or downward blind movement, stop the blind, set the target blind position as a percentage, and set the target louver position as a percentage.
Configuration parameters
| Parameter name | Value |
|---|---|
Full travel time up (full_travel_time_up) |
Numeric field specifying the full upward travel time of the blind in seconds. The minimum value is 1 second, and the maximum value is 1800 seconds (that is, 30 minutes). Step: 0.1 second. |
Full travel time down (full_travel_time_down) |
Numeric field specifying the full downward travel time of the blind in seconds. The minimum value is 1 second, and the maximum value is 1800 seconds (that is, 30 minutes). Step: 0.1 second. |
Full louver travel time up (full_louver_travel_time_up) |
Numeric field specifying the time required for a full upward louver rotation in seconds. The minimum value is 0 seconds, and the maximum value is 30 seconds. Step: 0.1 second. |
Full louver travel time down (full_louver_travel_time_down) |
Numeric field specifying the time required for a full downward louver rotation in seconds. The minimum value is 0 seconds, and the maximum value is 30 seconds. Step: 0.1 second. |
Delay time before movement starts after receiving a command (blind_start_delay_time) |
Numeric field specifying the actual start delay / inertia time of the blind movement in seconds after the up or down relay is activated. The minimum value is 0 seconds, and the maximum value is 10 seconds. Step: 0.1 second. |
Full-open blind calibration (full_open_calibration) |
If the blind position is unknown, a calibration procedure must be performed by fully opening or fully closing the blind. Checking this field means that calibration will fully open the blind. Clearing this field means that calibration will fully close the blind. Calibration is performed automatically when a percentage blind position is requested for the first time while the current blind position is unknown. After full opening, the blind position is 0%. After full closing, the blind position is 100%. |
Full close priority (full_close_priority) |
Optional flag selecting which procedure has priority when tag5 and tag6 are active at the same time. The value true gives priority to full closing. A missing parameter, false, or a value of another type means the default priority of full opening. |
Louver correction after full closing (allow_louver_correction_after_full_close) |
Optional flag selecting whether the block may apply the remembered louver correction after a percentage blind movement to full closing. The value true allows this correction if the blind and louver state permits it. A missing parameter, false, or a value of another type keeps the default behavior of skipping louver correction after full closing. |
To disable louver support, both full_louver_travel_time_up and full_louver_travel_time_down must be set to 0. To enable louver support, both parameters must be greater than 0 and within the allowed range. Setting one of these parameters to 0 and the other to a positive value is a block configuration error.
The block also supports the persistent_state flag, which determines whether the last persisted blind and louver positions should be restored after restart. The state is not persisted immediately, but about 10 minutes after the last position change. If a restart or power loss happens earlier, an older position may be restored. If this option is disabled, the positions are not restored after restart and the block starts with its default state. The active state of the full open and full close procedures from tag5 and tag6 is not persisted after a project restart.
Input handling
Providing a percentage blind position value (from 0 to 100) on the main input causes the blind to move to the requested level. The value 0 means the blind is fully open, and the value 100 means the blind is fully closed. Values outside the 0-100 range are ignored. This control method applies to values that are not provided through a tag block. If the current blind position is unknown, a calibration procedure will be performed before the movement by fully opening or fully closing the blind, depending on the block configuration.
Sending the up command from a command block to the main input starts a full upward blind movement for 104% of the full calibration time. After such a movement finishes, the block treats the blind as fully open. Sending the down command works analogously, but starts a full downward blind movement and after it finishes the block treats the blind as fully closed. If the blind is already moving, the up or down command stops the current movement. Sending the reset command stops blind movement. If an internal safety pause after an earlier stop is still active before the next movement, the reset command also cancels the pending action.
If a percentage blind movement finishes with the blind fully closed, by default the block will not perform a deferred louver correction after stopping. This also applies when the blind was already closed before and the next percentage command does not require any actual movement. Any previously remembered expected louver position remains stored and may be applied only during a later percentage blind movement to a partially open position. Setting allow_louver_correction_after_full_close to true allows the block to apply the remembered louver correction also after such full closing, unless other conditions prevent it. During an active tag5 or tag6 procedure, louver movement is still deferred until the procedure ends.
The block can also operate without any input connections. In such a configuration it still remains available as a virtual device in the mobile application and the web interface, but logic control through the main input and the tag1-tag6 lines is naturally not used.
If an internal safety pause is still active after movement stops, before the motor may be switched on again in the opposite direction, another percentage blind position command does not restart that pause. After the pause expires, the block will execute the last pending percentage blind setting, and if the blind position is unknown it will start the required calibration.
When a full open or full close procedure from tag5 or tag6 is active, the block prevents movement from other sources: the main input, the tag1 and tag2 buttons, the mobile application, the web interface, scenes, and schedulers. Percentage blind and louver position commands are still stored as requested targets, but their execution is deferred until the procedure ends. An active procedure, or a procedure waiting because movement is locked, is indicated in the block description.
Additionally, the block supports the following values from input lines marked with the tag block. Multiple tag blocks with the same number may be connected to one tag1-tag6 line. Each event from such a block is treated as an event from the same input line. Values provided by tag blocks with numbers other than tag1-tag6 are ignored.
| Input number and name | Description |
|---|---|
| tag1: Blind up movement button. | Sending the value true to the input on the tag1 line causes the blind to move up. Releasing the button (sending false) stops the movement only if the button is released within 2 seconds of being pressed. |
| tag2: Blind down movement button. | Sending the value true to the input on the tag2 line causes the blind to move down. Releasing the button (sending false) stops the movement only if the button is released within 2 seconds of being pressed. |
| tag3: Percentage louver position level. | Sending a percentage value (from 0 to 100) to the input on the tag3 line stores the requested louver position and, if possible, immediately starts moving the louvers to that position. The value 0 means the louvers are directed upward, the value 50 means they are perpendicular to the glass, and the value 100 means they are directed downward. Values outside the 0-100 range are ignored. If louver support is disabled, this value is ignored. If the current blind or louver position is unknown, if the blind is fully or almost fully open, or if the blind is currently moving, the value from tag3 is not lost but remains stored as the expected louver position and will be executed later when the blind state allows louver control. If the current blind movement results from setting a percentage blind position, the block will try to apply the stored louver position after that movement finishes. By default, full blind closing is an exception: in that case the louver position remains only stored. Setting allow_louver_correction_after_full_close to true allows the block to try this correction also after full closing. If a full blind movement triggered by the movement button or an up/down command is in progress, the expected louver position remains only stored and will be used later during percentage blind position control. During an active tag5 or tag6 procedure, the value from tag3 is stored, but louver movement is deferred until the procedure ends. Sending the value null to the tag3 input clears the remembered expected louver position, so later blind movements will no longer try to restore the previously remembered louver position. The value null does not change the current louver position and does not stop a movement that is already in progress. When the blind is fully or almost fully open and the louvers are stacked together, the block reports the louver value as 100%. |
| tag4: Blind movement lock. | Sending the value true to the input on the tag4 line blocks blind movement. If the blind is currently moving, activating the lock stops it immediately. The value false unlocks blind movement. These values may come from external sources such as a window opening sensor or an alarm system. The movement lock has higher priority than the tag5 and tag6 procedures: a procedure may remain logically active, but it will not start the motor until the lock is removed. Removing the lock resumes the procedure only if the corresponding input is still active. |
| tag5: Full open procedure. | The value true activates the full open procedure to position 0%. The value false deactivates this procedure. The input is level-based: the procedure remains active as long as the tag5 request is active. During the active procedure, the block prevents movement from other sources but stores new requested blind and louver positions. After the procedure is deactivated, the blind returns to the last known target if such a target is known. |
| tag6: Full close procedure. | The value true activates the full close procedure to position 100%. The value false deactivates this procedure. The input is level-based: the procedure remains active as long as the tag6 request is active. During the active procedure, the block prevents movement from other sources but stores new requested blind and louver positions. After the procedure is deactivated, the blind returns to the last known target if such a target is known. When tag5 and tag6 are active at the same time, full opening from tag5 has priority by default; setting full_close_priority to true changes the priority to full closing from tag6. |
Block outputs
| Output number and name | Output description |
|---|---|
| 1. Blind control output. | This output is intended to be connected directly to a blind device (for example, an output block controlling an E16 blind). It returns the value up while the blind is moving up, the value down while the blind is moving down, and the value reset when the blind is stopped. |
| 2. Percentage blind position level. | Returns the current percentage blind position. The value 0 means the blind is fully open, and the value 100 means the blind is fully closed. If the current blind position is unknown, the returned value is null. |
| 3. Percentage louver position level. | Returns the current percentage louver position. The value 0 means the louvers are directed upward, the value 50 means they are perpendicular to the glass, and the value 100 means they are directed downward. If the current louver position is unknown, the returned value is null. When the blind is fully or almost fully open and the louvers are stacked together, the returned value is 100. |
| 4. Blind movement lock state. | Returns true if blind movement is locked. Otherwise it returns false. |
| 5. Blind upward movement state. | Returns true if the blind is currently moving upward. Otherwise it returns false. |
| 6. Blind downward movement state. | Returns true if the blind is currently moving downward. Otherwise it returns false. |