> 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-heating-and-cooling.md).

# Tutorial 6 — heating and cooling

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

***

## What you will build

A heated living room that follows a weekly schedule, with a wall button that overrides it.

Heating is the largest topic in iDM3, and it works differently from everything so far. Read §10.1 before you touch anything — it will save you an afternoon.

***

## 10.1 How heating is different

Lights are simple: a button acts on an output. Heating has a **regulator in between**.

You never wire a temperature sensor straight to a boiler. Instead you define a **Heat/Cool area** — a self-contained controller that owns the sensor, the valve, the boiler demand, and the schedule. It runs continuously inside the central unit, comparing the measured temperature against whatever the schedule currently asks for.

```
   ┌──────────────────────────────────────────────────────┐
   │  HEAT/COOL AREA  "Living room"                       │
   │                                                      │
   │   Time plan  ──▶ wanted temperature                  │
   │                        │                             │
   │   Thermosensor ──▶  compare  ──▶ Heating output      │
   │   (GRT3-50)            │         (valve)             │
   │                        └──────▶ Heating supply       │
   │                                  (boiler demand)     │
   └──────────────────────────────────────────────────────┘
            ▲
            │  wires only *nudge* the area:
            │  "switch to Favorite4", "stop the program"
         a button
```

So there are **three** things to build, in this order:

|   | What                                           | Where                            |
| - | ---------------------------------------------- | -------------------------------- |
| 1 | A **time plan** — the temperature schedule     | System manager → System programs |
| 2 | A **Heat/Cool area** — the regulator           | System manager → Heat/Cool areas |
| 3 | **Wires** — buttons that override the schedule | Wire manager                     |

Steps 1 and 2 involve no wires at all. Once they are right, the heating works on its own.

***

## 10.2 Step 1 — Add the hardware

1. **Project** → **Device manager** → select `Internal-Master/BUS1`.
2. **New unit** → **GRT3-50** (room thermostat with temperature sensor) → **OK**. Address it, describe it `Living room thermostat`.
3. **New unit** → **SA3-02M** if you do not have a spare relay output → address and describe it `Living room valve`.
4. Close and save.

You need at minimum: something that **measures** temperature, and something that **switches** the heat.

***

## 10.3 Step 2 — Build the time plan

The time plan says what temperature is wanted, hour by hour, across the week.

1. **Managers** ribbon tab → **System manager** → **System programs** tab.
2. Click **+**. The **Select program type** dialog appears.
3. Choose **Heating/Cooling - week** — a full weekly plan, plus a holiday variant. *(**Heating/Cooling day** defines a single-day plan, used for public holidays.)*
4. **OK**. The **Program details** panel becomes editable.

### Fill in the temperatures

| Field                                     | What it means                                                                     | Set it to             |
| ----------------------------------------- | --------------------------------------------------------------------------------- | --------------------- |
| **Program name**                          | how you will refer to it                                                          | `LIVING_ROOM_HEATING` |
| **Default**                               | the baseline temperature for the whole week, wherever you have not said otherwise | `18`                  |
| **Favorite1**                             | your four preset temperatures — reusable everywhere                               | `16`                  |
| **Favorite2**                             |                                                                                   | `18`                  |
| **Favorite3**                             |                                                                                   | `20`                  |
| **Favorite4**                             |                                                                                   | `22`                  |
| **Visible range Min view** / **Max view** | just the vertical scale of the graph                                              | `10` / `26`           |

All temperature fields accept **−40 °C to +200 °C in 0.1 °C steps**. The wide range is for industrial use; a house lives between 15 and 25.

> **Favorites are the vocabulary of your heating system.** Buttons, thermostats and the Monitor all switch between *Favorite1–4*, not between raw numbers. Decide what your four mean — night, away, normal, comfort — and keep them consistent across every area in the building.

### Draw the schedule

The yellow graph is one day, 00:00 to 24:00. You place **time stamps** — up to **16 per day** — and set the temperature between them.

1. Select a day.
2. Click **Mark** to add a single time stamp. Click **Mark** then **Window** to add a *pair*, which is what you want for "warm from 06:00 to 08:00".
3. Move a stamp either by dragging its line, or by clicking its time label and typing a new time.
4. Set the temperature for a stretch by dragging the horizontal line up or down — or right-click in the yellow area and pick **Default** or **Favorite1**–**Favorite4** from the list.

A typical weekday:

| Time          | Temperature                       |
| ------------- | --------------------------------- |
| 00:00 – 06:00 | `Favorite1` (16 °C) — night       |
| 06:00 – 08:00 | `Favorite4` (22 °C) — morning     |
| 08:00 – 16:00 | `Favorite1` (16 °C) — empty house |
| 16:00 – 22:00 | `Favorite3` (20 °C) — evening     |
| 22:00 – 24:00 | `Favorite1` (16 °C)               |

### Copy it to the other days

Do not draw this seven times.

1. **Right-click the day label**. A copy dialog opens.
2. Tick the target days, or use **Working days**, **Weekend**, or **All week**.
3. Click **Copy actual program**.

Then adjust the weekend separately — that is usually the only day that differs.

5. Click **✓** to save the program.

> **Time plans can be edited live.** Once the project has been uploaded once, you can change a time plan and push just that change with **✓** — no full re-upload. Very handy when a client wants the morning warm-up half an hour earlier.

***

## 10.4 Step 3 — Define the Heat/Cool area

1. **System manager** → **Heat/Cool areas** tab.
2. Click **+** above the **Heat/Cool list**. A new controller appears.
3. Work through its three sub-tabs.

### Parameters

| Field            | Set it to                    |
| ---------------- | ---------------------------- |
| **Address**      | filled in by iDM3 — leave it |
| **Description**  | `Living room`                |
| **Control type** | see below                    |
| **Plan-Heating** | `LIVING_ROOM_HEATING`        |
| **Thermostat 1** | your GRT3-50                 |

**Control type** has three options and it decides how heating and cooling co-exist:

| Option                                       | Use when                                                                                           |
| -------------------------------------------- | -------------------------------------------------------------------------------------------------- |
| **User control heating / cooling**           | the user switches between heating and cooling from a controller input                              |
| **H/C automatic control - two temperatures** | heating and cooling each have their own target; the system picks based on the measured temperature |
| **H/C automatic control - one temperature**  | one target for both, switched by hysteresis                                                        |

**For heating only, pick any of them** — the cooling side simply stays unused. Start with **User control heating / cooling**.

The other plan slots — **Plan-Cooling**, **Holiday Plan-Heating**, **Holiday Plan-Cooling**, **Public holiday Plan-Heating**, **Public holiday Plan-Cooling** — take further programs you define the same way. Leave them empty for now.

You can attach up to **6 thermostats** per area with **Add** and **Remove**.

### Connections

This is where the area meets real hardware. Click the pencil icon to edit.

| Field                                           | What to attach                                                     |
| ----------------------------------------------- | ------------------------------------------------------------------ |
| **Thermosensor**                                | the temperature input that measures the room — your GRT3-50        |
| **Heating regulator**                           | filled in automatically if you added a regulator in Device manager |
| **Heating output**                              | the relay driving the valve or floor-heating actuator              |
| **Heating supply**                              | the relay that demands heat from the boiler                        |
| **Critical temperature sensor**                 | floor-heating temperature limit — optional                         |
| **Cooling regulator** / **output** / **supply** | the cooling equivalents                                            |

**The minimum set for heating only:** Heating time plan, Heating regulator, Heating output, and Heating supply.

For heating **and** cooling you need all eight: both time plans, both regulators, both outputs and both supplies.

> **Heating output vs Heating supply.** *Output* is this room's valve. *Supply* is the boiler, and it is shared — it fires when **any** area asks for heat. Wire every area's supply to the same relay.

### Online parameters

Safety limits and behaviour. Click the pencil to edit.

| Field                                      | What it does                                                 |
| ------------------------------------------ | ------------------------------------------------------------ |
| **Maximal temperature**                    | heating will never push above this                           |
| **Antifreeze temperature**                 | heating will never let the room fall below this              |
| **Restart regulator after closing window** | how long heating stays off after a window opens              |
| **Maximal close window time**              | after this, an open window is ignored and heating resumes    |
| **Manual mode on time**                    | how long a manual override lasts before the schedule resumes |
| **Public holiday**                         | dates that use the public-holiday plan                       |

> **Always set Antifreeze temperature.** It is the one setting that protects the building when everything else is wrong — a bad schedule, a failed sensor, a client who set 5 °C by mistake.

Click **✓** to save the area, and save the project.

***

## 10.5 Step 4 — A button that overrides the schedule

The heating now runs by itself. A wire's job is only to *nudge* it.

1. **Design** workspace tab → place a button icon, **Connect** it to a spare GSB3-40 button, name it `Heating boost`.
2. **Function** workspace tab → **Add connection** → drag from `Heating boost` to the **Heat/Cool area** object.
3. **Wire manager** → name the wire `Heating boost` → **+**:
   * **Action:** `Short down`
   * **User function:** `HEATING_COOLING_SWITCH_TO_FAVORITE4`
4. Add a second: **Action** `Long down`, **User function** `HEATING_COOLING_SWITCH_TO_FAVORITE1`.
5. Close, save, upload.

Short press → 22 °C. Long press → 16 °C. The schedule takes over again when the manual period expires.

### The heating functions

The default project provides these ready to use:

| Function                              | Effect                                                      |
| ------------------------------------- | ----------------------------------------------------------- |
| `HEATING_COOLING_SWITCH_TO_FAVORITE1` | set the area to Favorite1 (`Heat cool set program minimum`) |
| `HEATING_COOLING_SWITCH_TO_FAVORITE2` | Favorite2 (`…set program attenuate`)                        |
| `HEATING_COOLING_SWITCH_TO_FAVORITE3` | Favorite3 (`…set program normal`)                           |
| `HEATING_COOLING_SWITCH_TO_FAVORITE4` | Favorite4 (`…set program comfort`)                          |
| `HEATING_COOLING_START`               | start the time program                                      |
| `HEATING_COOLING_STOP`                | stop it — the area holds its current setting                |
| `HEATING_COOLING_NORMAL_PLAN`         | switch to the ordinary weekly plan                          |
| `HEATING_COOLING_HOLIDAY_PLAN`        | switch to the holiday plan                                  |
| `HEATING_COOLING_PUBLIC_HOLIDAY_PLAN` | switch to the public-holiday plan                           |
| `HEATING_COOLING_SWITCH_TO_HEATING`   | force heating                                               |
| `HEATING_COOLING_SWITCH_TO_COOLING`   | force cooling                                               |
| `HEATING_COOLING_CANCEL_MANUAL`       | drop any override and return to the schedule                |

> **Favorite1 is "minimum" and Favorite4 is "comfort" internally.** The names come from an older version of the system where the four presets were called minimum, attenuate, normal and comfort. The numbering is what you will see on screen; the old names appear in the underlying function names. They are the same four settings.

There are many more heating functions than these — setting an explicit temperature, holding one until a given time, changing the antifreeze limit. See [Appendix B](/inels-bus/inels-design-manager-idm3/idm3-function-reference.md).

***

## 10.6 A holiday plan

1. Build a second week program — `LIVING_ROOM_HOLIDAY`, everything at `Favorite1`.
2. In the Heat/Cool area, set **Holiday Plan-Heating** to it.
3. Wire a button to `HEATING_COOLING_HOLIDAY_PLAN`, and another to `HEATING_COOLING_NORMAL_PLAN`.

One press before leaving drops the whole house to its minimum; one press on return restores the schedule.

***

## 10.7 Checking it works

Heating is slow, so do not judge it by watching a radiator.

Use **Managers → Monitor → Heat/Cool areas**. It shows, live from the central unit: the measured temperature, the wanted temperature, which favorite is active, and whether the outputs are on. That tells you in seconds whether your area is configured correctly.

[Chapter 26](/inels-bus/inels-design-manager-idm3/idm3-simulation-and-monitor.md) covers the Monitor properly.

***

## What you learned

* Heating is a **regulator**, not a wire — the Heat/Cool area runs continuously in the CU
* Build it in order: **time plan** → **area** → **wires**
* **Favorite1–4** are the shared vocabulary of the whole heating system
* Up to **16 time stamps** per day; copy days rather than redrawing them
* **Output** is this room's valve; **supply** is the shared boiler demand
* Always set the **antifreeze temperature**
* Time plans can be edited live, without a full re-upload

***

## Try this before moving on

1. Add a second area for the bedroom with its own plan but the same **Heating supply**.
2. Give the weekend a later morning warm-up.
3. Watch **Monitor → Heat/Cool areas** while you press your boost button and see the wanted temperature change.

***

**Next:** [Chapter 11 — Tutorial 7: time control](/inels-bus/inels-design-manager-idm3/tutorial-time-control-and-schedules.md) — schedules for everything that is not heating.
