> For the complete documentation index, see [llms.txt](https://wiki.inels.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://wiki.inels.com/inels-bus/inels-design-manager-idm3/tutorial-blinds-and-shutters.md).

# Tutorial 5 — blinds and shutters

*Part 2 — Tutorials. Continues the project from* [*Tutorial 4*](/inels-bus/inels-design-manager-idm3/tutorial-groups-and-scenes.md)*.*

***

## What you will build

Two buttons that drive a blind properly:

| Press                      | Result                      |
| -------------------------- | --------------------------- |
| Short press on ▲           | slats tilt up a step        |
| Long press on ▲            | blind runs all the way up   |
| Short press on ▼           | slats tilt down a step      |
| Long press on ▼            | blind runs all the way down |
| Either button while moving | stops it                    |

***

## How blinds work in iNELS3

A blind actuator such as the **JA3-02B/DC** gives you **two digital outputs** — one for up, one for down — and it is interlocked internally so both can never be driven at once.

There is no "blind" function type. You control a blind with the **digital** functions you already know. The only trick is *how long* you energise the output:

| Impulse time                       | Effect                         |
| ---------------------------------- | ------------------------------ |
| Short — under a second             | slats tilt a little            |
| Long — enough to cover full travel | the blind runs from end to end |

That is why the default project ships with exactly two shutter functions:

| Function               | Built on             | Impulse time |
| ---------------------- | -------------------- | ------------ |
| `SHUTTER_PULL_UP/DOWN` | `Digital_Impulse_ON` | 1 minute     |
| `SHUTTER_TILT_UP/DOWN` | `Digital_Impulse_ON` | 0.8 seconds  |

One name for both directions, because the *direction* comes from **which output you wire it to**, not from the function.

> **The one-minute impulse is a maximum, not a duration.** The actuator stops itself at the end stop; the impulse simply guarantees the output stays energised long enough to get there. If your blinds take longer than a minute of travel, make a longer version.

***

## Step 1 — Add the blind actuator

1. **Project** ribbon tab → **Device manager**.
2. Select `Internal-Master/BUS1` → **New unit** → **JA3-02BDC** → **OK**.
3. Set its **Address** to match the hardware and **Description** to `Living room blind`.
4. Close and save.

Then place and assign the outputs:

5. **Design** workspace tab → **Controls** ribbon tab → drag **two** output icons onto the plan.
6. Click the first → **Connect** → double-click the JA3-02B/DC **output 1** → name it `Blind up`.
7. Click the second → **Connect** → **output 2** → name it `Blind down`.
8. Drag two more button icons and connect them to two spare GSB3-40 buttons. Name them `Blind up button` and `Blind down button`.

Check for yellow dots, then save.

***

## Step 2 — Tilt on a short press

1. **Function** workspace tab → **Functions** ribbon tab → **Add connection**.
2. Drag from `Blind up button` → `Blind up`.
3. Drag from `Blind down button` → `Blind down`.
4. Switch **Add connection** off.
5. **Wire manager** → select the first wire → name it `Blind tilt up` → **+**:
   * **Action:** `Short down`
   * **User function:** `SHUTTER_TILT_UP/DOWN`
6. Select the second → name it `Blind tilt down` → **+**:
   * **Action:** `Short down`
   * **User function:** `SHUTTER_TILT_UP/DOWN`
7. Close, save, upload.

Short-press either button and the slats move a step. The **same function** on both wires moves the blind in opposite directions, because each wire drives a different output.

***

## Step 3 — Full travel on a long press

Add a second action to each of the same two wires:

1. **Wire manager** → `Blind tilt up` → **+**:
   * **Action:** `Long down`
   * **User function:** `SHUTTER_PULL_UP/DOWN`
2. `Blind tilt down` → **+**:
   * **Action:** `Long down`
   * **User function:** `SHUTTER_PULL_UP/DOWN`
3. Close, save, upload.

Hold a button and the blind runs to its end stop. Tap it and the slats tilt. Rename the wires to `Blind up` and `Blind down` — they do both jobs now.

***

## Step 4 — Stop while moving

Pressing a button mid-travel should stop the blind. This is where the impulse functions need help.

Recall from [Tutorial 2](/inels-bus/inels-design-manager-idm3/tutorial-toggles-impulses-and-delays.md) that **`Digital_Impulse_ON` does nothing if the output is already on.** So pressing the up button while the blind is already running up does not stop it — it is ignored.

Add an explicit stop:

1. **Wire manager** → `Blind up` → **+**:
   * **Action:** `Short up`
   * **User function:** `DIGITAL_OFF`
2. Do the same on `Blind down`.
3. Save, upload.

`Short up` fires on release, immediately after the `Short down` that started the tilt — so a tap gives you tilt-then-stop, and a press during travel cuts the output. Many installers wire the *opposite* button as the stop instead; both work.

***

## Step 5 — Custom travel times

One minute rarely matches your blinds. Measure the real full travel, add a couple of seconds, and build your own:

1. **Function manager** → **+**
   * **Name:** `SHUTTER_PULL_25S`
   * **Function type:** `Digital`
   * **Select function:** `Digital_Impulse_ON`
   * **Digital delay (s):** `00:00:00`
   * **Digital impulse time (s):** `00:00:25`
2. **✓**, then swap it onto both `Long down` actions.

Do the same for tilt if 0.8 s moves the slats too far — `00:00:00.4` is a common alternative.

> **Name by duration, not by room.** `SHUTTER_PULL_25S` works on every blind of that type in the building. `LIVING_ROOM_BLIND` works on exactly one, and tells you nothing.

***

## Step 6 — All blinds together

Same pattern as [Tutorial 4](/inels-bus/inels-design-manager-idm3/tutorial-groups-and-scenes.md):

1. **Managers** → **Group manager** → **Add**
   * **Unicate name:** `ALL_BLINDS_UP`, **Type** `Digital` → **✓**
2. Add a second: `ALL_BLINDS_DOWN`, `Digital` → **✓**
3. **Groups** workspace tab → drag out two group icons, assign them, then click each blue and add every blind's up output to the first, every down output to the second.
4. Wire a button to each group with **`GroupDigital_Impulse_ON`** and your travel time.

Two groups, not one — up and down are separate outputs and must stay separate.

> **Never put up and down outputs in the same group.** Energising both at once is exactly what the actuator's interlock exists to prevent, and a group function would try to do it on every command.

***

## Going further: astronomical control

For blinds that close at sunset by themselves, add the **Astronomical-Module** as a slave in the Device manager. It gives you sunrise and sunset as actors, calculated from the date and the site's location.

Wire sunset → `ALL_BLINDS_DOWN` group and the building shades itself, all year, with no schedule to maintain. Covered in [Tutorial 7](/inels-bus/inels-design-manager-idm3/tutorial-time-control-and-schedules.md).

***

## What you learned

* Blinds use **digital** functions — the impulse *time* is what distinguishes tilt from full travel
* Direction comes from **which output the wire drives**, not from the function
* `Digital_Impulse_ON` ignores a press while the output is already on — add an explicit stop
* Measure real travel time and build your own impulse functions
* Up and down groups stay separate, always

***

## Try this before moving on

1. Time your blinds and build `SHUTTER_PULL_<n>S` to match.
2. Add a "shade the house" long press to the hallway button using both blind groups.
3. Add the blinds to your `Evening` scene from [Tutorial 4](/inels-bus/inels-design-manager-idm3/tutorial-groups-and-scenes.md).

***

**Next:** [Chapter 10 — Tutorial 6: heating and cooling](/inels-bus/inels-design-manager-idm3/tutorial-heating-and-cooling.md).
