> 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/idm3-dali-manager-reference/dali-2-sensors.md).

# DALI-2 sensors

How to add DALI-2 sensors (movement and light) to an iDM3 project, set them up, and read their values.

DALI-2 sensors, such as movement detectors and light sensors, connect to the DALI bus of the **CU3-09M**. This page explains how to add them to your project, which settings to use, and what the values in the monitor mean.

{% hint style="info" %}
**In short:** add the **Internal-DALI-2-Master**, give the sensors an address in the **DALI-2 manager**, add one **DALI-2-Unit** for each sensor with one device for each thing it measures (movement, light), then compile and upload the project.
{% endhint %}

***

## 1. How a sensor looks in the project

Each physical sensor is one **unit**. Most sensors measure more than one thing, for example movement **and** light. Each of these is called a **channel**, and each channel is a separate **device** inside the unit.

| In the project  | What it is                                                     |
| --------------- | -------------------------------------------------------------- |
| **DALI-2-Unit** | One physical sensor. Its address = the sensor's DALI address.  |
| **State-IN**    | The health of the sensor. It is always there and is read-only. |
| **Ocupanci-IN** | A movement channel.                                            |
| **Light-IN**    | A light channel.                                               |

**Example:** a sensor that detects movement and measures light looks like this:

```
DALI-2-Unit  (address 00)
 ├─ State-IN       ← always there
 ├─ Ocupanci-IN    ← movement channel
 └─ Light-IN       ← light channel
```

***

## 2. Add the DALI-2 master (only once)

DALI-2 sensors use their **own** DALI master, separate from the one for lights. Skip this step if **Internal-DALI-2-Master** is already in your project.

1. **Project** ribbon tab → **Device manager**.
2. Select the **central unit** → **New unit** → **Internal-DALI-2-Master** → **OK**.
3. Close the Device manager and **save**.

***

## 3. Address the sensors (DALI-2 manager)

New sensors come **without an address**, so give them one first. This is done in the **DALI-2 manager**, while connected to the central unit.

### Open the DALI-2 manager

1. **Connect** iDM3 to the central unit.
2. **Managers** ribbon tab → **Dali manager**.
3. Select **Internal-DALI-2-Master** (double-click it, or select it and click **✓ OK**).

Because you picked the DALI-2 master, the manager opens in its **DALI-2 view**, made for sensors.

### The buttons

| Button             | What it does                                                               |
| ------------------ | -------------------------------------------------------------------------- |
| **Add new**        | Addresses only **new** sensors. Sensors that already have an address stay. |
| **Search**         | Reads the sensors and their channels from the bus. Changes nothing.        |
| **New DALI**       | **Deletes all sensor addresses** and gives every sensor a new one.         |
| **Change address** | Gives the selected sensor the address you typed.                           |
| **Delete address** | Removes the address of the selected sensor.                                |
| **IDENTIFY**       | Makes the selected sensor show itself, so you can find it on the ceiling.  |
| **Read params**    | Reads the channels and settings of the selected sensor.                    |

### Give the sensors an address

| Situation                                     | Button to use |
| --------------------------------------------- | ------------- |
| **First time** – no sensor has an address yet | **New DALI**  |
| **Adding sensors** to a working installation  | **Add new**   |
| **Just checking** what is on the bus          | **Search**    |

{% hint style="danger" %}
**Never use New DALI on a working installation.** Every sensor gets a new address, and they will no longer match the DALI-2-Units in your project. To add sensors, use **Add new**.
{% endhint %}

### Find out which sensor is which

1. Press **Search**. The list shows every sensor it found (`Device__00`, `Device__01`, …).
2. Select a sensor and press **IDENTIFY**. The physical sensor shows itself.
3. Write down which address belongs to which sensor.

### Change an address (optional)

1. Select the sensor in the list.
2. Click its address number next to the name and type the new one.
3. Click **Change address**.
4. Press **Search** again to check.

{% hint style="info" %}
**The DALI-2 manager shows normal numbers** (`00`, `01`, … `63`) — no hexadecimal. Sensors have their **own** addresses 0 – 63, separate from the addresses of the lights.
{% endhint %}

{% hint style="warning" %}
**A red exclamation mark (!)** next to a sensor means the master reported a problem with that address — for example, two sensors with the same address. Select it, click **Delete address**, then use **Add new** to address it again.
{% endhint %}

***

## 4. Find the numbers you need

After addressing, press **Search** once more. Each sensor is shown with its channels underneath:

```
Device__00
    #0  Occupancy sensor
    #1  Light sensor
```

Write down two things:

| What to copy                           | Where it goes                                      |
| -------------------------------------- | -------------------------------------------------- |
| The **device number** (`00`, `01`, …)  | The **address** of the DALI-2-Unit in your project |
| The **channel number** (`#0`, `#1`, …) | The **Instance number** of the matching device     |

{% hint style="warning" %}
**The Instance number must match.** If it doesn't, the central unit ignores that channel and it never reports anything.
{% endhint %}

***

## 5. Add the sensor to the project

1. **Project** ribbon tab → **Device manager**.
2. Select **Internal-DALI-2-Master** → **New unit** → **DALI-2-Unit** → **OK**.
3. Set the unit's **Address** to the **device number** from the DALI-2 manager (for `Device__00`, enter `0`).
4. Give it a **Description**, for example `Office sensor`.
5. A new DALI-2-Unit already contains one **Light-IN** device. Select the unit and click **New unit** to add more devices, so that there is one for **each channel** of the sensor — **Ocupanci-IN** for movement, **Light-IN** for light.
6. For each device, set **Instance number** to the `#` number of that channel, and set up the other parameters (see the next two sections).
7. Close the Device manager and **save**.

{% hint style="warning" %}
**New channels start switched off.** Every new device starts with **Instance flags = 0** and **Event filter = 0**, so it reports nothing. Set **Instance flags = 1** and the Event filter you need (usually **3** for movement, **1** for light).
{% endhint %}

***

## 6. Set up a movement channel (Ocupanci-IN)

In most installations you only need to set the first three parameters and **Time hold**. The others are for fine-tuning.

| Parameter                 | Values    | What it does                                                                                                                                                     |
| ------------------------- | --------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Instance number**       | 0 – 31    | Which channel of the sensor this is. Copy it from the DALI-2 manager.                                                                                            |
| **Instance flags**        | 0 or 1    | **1** = channel on. **0** = channel off. Don't use any other value.                                                                                              |
| **Event filter**          | 0 – 31    | Which events the sensor sends. **3** is the normal setting. Use **7** if you also want a regular status update. See [Event filter values](#event-filter-values). |
| **Time hold**             | 0 – 254   | How long the room stays "occupied" after the last movement. **0** = 1 s, otherwise *value × 10 s*.                                                               |
| **Time report**           | 0 – 255 s | How often the current state is repeated (only if the Event filter includes *Repeat*). **0** = never.                                                             |
| **Time deadtime**         | 0 – 255   | Minimum quiet time after an event. **0** = off, otherwise *value × 50 ms*. Reports can't come faster than this.                                                  |
| **Detection range**       | 0 – 100 % | How far the sensor reaches. **100** = maximum. Ignored by sensors that don't support it.                                                                         |
| **Detection sensitivity** | 0 – 100 % | How easily movement triggers the sensor. **100** = most sensitive. Ignored by sensors that don't support it.                                                     |

**Time hold examples**

| Value | Hold time   |
| ----- | ----------- |
| 0     | 1 s         |
| 6     | 1 min       |
| 30    | 5 min       |
| 90    | 15 min      |
| 254   | 42 min 20 s |

**Time deadtime example:** 15 = 15 × 50 ms = 750 ms.

***

## 7. Set up a light channel (Light-IN)

| Parameter              | Values    | What it does                                                                                                                                  |
| ---------------------- | --------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
| **Instance number**    | 0 – 31    | Which channel of the sensor this is. Copy it from the DALI-2 manager.                                                                         |
| **Instance flags**     | 0 or 1    | **1** = channel on. **0** = channel off. Don't use any other value.                                                                           |
| **Event filter**       | 0 or 1    | **1** = send the light level (normal setting). **0** = send nothing.                                                                          |
| **Hysteresis**         | 0 – 25 %  | How much the light must change (in %) before a new value is sent. For example, **5** = 5 %. **0** = only send on *Time report*.               |
| **Hysteresis minimal** | 0 – 255   | The smallest change (in raw units) that is always sent. Useful in the dark, where a percentage is too small. **0** = use only the percentage. |
| **Time report**        | 0 – 255 s | Send the light level at a regular interval, even if it hasn't changed. **0** = never. **20** = every 20 s.                                    |
| **Time deadtime**      | 0 – 255   | Minimum quiet time between light reports. **0** = off, otherwise *value × 50 ms*.                                                             |

{% hint style="warning" %}
**Keep Hysteresis between 0 and 25.** The Device manager accepts values up to 100, but values from 26 to 100 must not be used.
{% endhint %}

***

## 8. Event filter values

### Movement channel

The Event filter tells the sensor which events to send. Each event has a number. **Add up the numbers** of the events you want.

| Event           | Number | When it is sent                                          |
| --------------- | ------ | -------------------------------------------------------- |
| **Occupied**    | 1      | The room has just become occupied.                       |
| **Vacant**      | 2      | The room has just become empty (Time hold has run out).  |
| **Repeat**      | 4      | The current state, repeated every *Time report* seconds. |
| **Movement**    | 8      | Every single movement detected.                          |
| **No movement** | 16     | Every time movement stops.                               |

**Example:** Occupied (1) + Vacant (2) + Repeat (4) = **7**.

**Values you will normally use:**

| Value | Events                     | When to use it                              |
| ----- | -------------------------- | ------------------------------------------- |
| **3** | Occupied + Vacant          | **Recommended default.**                    |
| **7** | Occupied + Vacant + Repeat | When you also want a regular status update. |
| 0     | None                       | The channel stays silent.                   |

{% hint style="danger" %}
**Don't use 31 (all events) on a live installation.** It sends every single movement and can flood the DALI bus. Use it only for troubleshooting. Values from 32 to 255 are reserved and must not be used.
{% endhint %}

<details>

<summary>Full list of values (0 – 31)</summary>

| Value | Events enabled                                           |
| ----- | -------------------------------------------------------- |
| 0     | None – the channel stays silent                          |
| 1     | Occupied                                                 |
| 2     | Vacant                                                   |
| 3     | Occupied + Vacant (**normal default**)                   |
| 4     | Repeat                                                   |
| 5     | Occupied + Repeat                                        |
| 6     | Vacant + Repeat                                          |
| 7     | Occupied + Vacant + Repeat (**with regular update**)     |
| 8     | Movement                                                 |
| 9     | Occupied + Movement                                      |
| 10    | Vacant + Movement                                        |
| 11    | Occupied + Vacant + Movement                             |
| 12    | Repeat + Movement                                        |
| 13    | Occupied + Repeat + Movement                             |
| 14    | Vacant + Repeat + Movement                               |
| 15    | Occupied + Vacant + Repeat + Movement                    |
| 16    | No movement                                              |
| 17    | Occupied + No movement                                   |
| 18    | Vacant + No movement                                     |
| 19    | Occupied + Vacant + No movement                          |
| 20    | Repeat + No movement                                     |
| 21    | Occupied + Repeat + No movement                          |
| 22    | Vacant + Repeat + No movement                            |
| 23    | Occupied + Vacant + Repeat + No movement                 |
| 24    | Movement + No movement                                   |
| 25    | Occupied + Movement + No movement                        |
| 26    | Vacant + Movement + No movement                          |
| 27    | Occupied + Vacant + Movement + No movement               |
| 28    | Repeat + Movement + No movement                          |
| 29    | Occupied + Repeat + Movement + No movement               |
| 30    | Vacant + Repeat + Movement + No movement                 |
| 31    | All events – **troubleshooting only**, heavy bus traffic |

</details>

### Light channel

| Value | What happens                                |
| ----- | ------------------------------------------- |
| 0     | The channel sends nothing.                  |
| **1** | Sends the light level. **Always use this.** |

{% hint style="info" %}
**Event filter = 0** only stops the events; the channel is still on. To switch a channel off completely, set **Instance flags = 0**.
{% endhint %}

***

## 9. Reading the values in the monitor

### Movement channel (Ocupanci-IN)

The channel shows one number that describes the whole state. The quick way to read it:

| You see            | Meaning                                              |
| ------------------ | ---------------------------------------------------- |
| **10, 11, 14, 15** | **Occupied**                                         |
| **8, 12**          | **Vacant**                                           |
| **0**              | No event received yet since the central unit started |

<details>

<summary>What each value means in detail</summary>

| Value | Meaning                                                             |
| ----- | ------------------------------------------------------------------- |
| 0     | No event received yet since the central unit started.               |
| 8     | Vacant, no movement.                                                |
| 9     | Vacant with movement (should not normally happen).                  |
| 10    | Occupied, no movement right now.                                    |
| 11    | Occupied, movement right now.                                       |
| 12    | Vacant, no movement – regular repeat of the state.                  |
| 13    | Vacant with movement – regular repeat (should not normally happen). |
| 14    | Occupied, no movement – regular repeat.                             |
| 15    | Occupied with movement – regular repeat.                            |

**Why do the values start at 8?** The sensors report themselves as *movement sensors*, which adds 8 to every value.

**Repeat values (12 – 15)** are just a reminder of the current state, not a change. They don't change occupancy, so your lights should not flicker when a repeat arrives.

**Presence sensors** (which detect occupancy directly instead of from movement) use the same values **without the 8**, so they show **0 – 7**. For a presence sensor, 0 can also mean "vacant".

</details>

### Light channel (Light-IN)

The monitor shows the brightness as a number from **0.00** (dark) to **655.35** (the sensor's raw value 0 – 65535, divided by 100).

{% hint style="warning" %}
**This value is not in lux.** A higher number simply means more light *on that sensor*. Find the switching thresholds you need by testing on site, and don't copy them to a different sensor model.
{% endhint %}

### Sensor health (State-IN)

**0 means everything is fine.** If there is a problem, the value tells you what it is. If several problems are active at the same time, their numbers are added together.

| Value | Meaning                                             |
| ----- | --------------------------------------------------- |
| **0** | **Everything is fine.**                             |
| 1     | Error inside the sensor.                            |
| 2     | Quiescent mode – the sensor is deliberately silent. |
| 4     | The sensor has no address.                          |
| 8     | The sensor's own application controller is on.      |
| 16    | Error in the sensor's application controller.       |
| 32    | The sensor was powered off and on again.            |
| 64    | The sensor is in its reset state.                   |

**Example:** 33 = 1 (sensor error) + 32 (power cycle).

***

## 10. Good to know

{% hint style="info" %}
**Settings are sent when the project starts.** The central unit writes the parameters to the sensors at startup, not from the DALI-2 manager. After you change a parameter, **compile and upload** the project.
{% endhint %}

**The sensor's own application controller is switched off.** Many DALI-2 sensors can switch lights by themselves. The central unit turns this off so that iNELS stays in control. If you need it, switch it back on in the DALI-2 manager with the **Application controller** checkbox in the device details.

***

## 11. Troubleshooting

| Problem                              | What to check                                                                                                                                  |
| ------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| A channel always shows **0**         | In the DALI-2 manager, select the device and press **Read params**. **Event scheme** must be **2**, and **Event filter** must be what you set. |
| **Event scheme** is **0**            | The sensor refused the setting, so its events can't be matched to it.                                                                          |
| A channel never reports anything     | Check that **Instance number** matches the `#` number in the DALI-2 manager, and **Instance flags** = 1.                                       |
| The sensor doesn't respond at all    | Check that the **DALI-2-Unit address** matches the device number in the DALI-2 manager.                                                        |
| The sensor isn't found by **Search** | It has no address yet. Use **Add new** (or **New DALI** on a first installation).                                                              |
| A red **!** next to a sensor         | Address problem, for example two sensors with the same address. **Delete address**, then **Add new**.                                          |
| Lights switch without iNELS          | The sensor's application controller is on. Check **State-IN** (value 8) and turn it off in the DALI-2 manager.                                 |
| The DALI bus is slow or overloaded   | Check that no sensor uses **Event filter 31**, and that **Time report** isn't set too short.                                                   |
| Changes have no effect               | Compile and upload the project – parameters are applied only at startup.                                                                       |
