---
title: "Setup Status & Alarm Page"
url: "https://help.aedifion.io/en/article/setup-status-alarm-page"
language: "en"
last_updated: "2026-06-17T06:27:08.797Z"
---

# Setup Status & Alarm Page

The **Status & Alarms** page provides a central overview of the current operating status of selected building equipment. To ensure that faults, warnings, and operating states are reliably detected and visually displayed, system component must be created, relevant data points defined, and the desired messages correctly assigned. Once configured, the page automatically displays a summarized, color-coded assessment of the system status.

![](https://cdn-assets.productfruits.com/87420ec9-2565-4bb2-a9d0-ee500aa43f5d)

Figure 1: Overview of all configured statuses and alarms

A system is by default displayed in **green**. Warnings will appear in **yellow** and faults in **red**. To derive these signal colors clearly and automatically from measurement values, Virtual Data Points (VDPs) are used.

## Status Codes and VDP Creation

The signal color of a status on the Status & Alarms page is based on fixed numerical values aligned with common API status codes. A Virtual Data Point (VDP) processes the measurement data from one or more input data points and translates them into a standardized status value, which is then displayed as the corresponding color on the status page.The following table shows which VDP value corresponds to which color and status:

| VDP Value | Interpretation | Color |
| --- | --- | --- |
| 100 | Normal operation | Green |
| 301 | Low-priority fault message | Yellow |
| 300 | High-priority fault message | Red |
| 0 | No data available or faulty configuration | Gray |

**What Is a VDP?**

A **Virtual Data Point** generates new information from existing measurement values which **cannot be measured directly**. Examples include:  
• combining multiple sensor values  
• converting units  
• defining thresholds (e.g., green/yellow/red)  
• logically linking alarm states

### Creating a VDP

VDPs can **only be created via the aedifion API**. **Important**: Please note that there is a limit of **20 input pins per VDP.** If more than 20 pins need to be combined in one VDP, one or more sub‑VDPs must first be created. These sub‑VDPs can then be combined into a higher‑level aggregation VDP (for aggregation, see the section “Aggregating Multiple Binary Alarms”). In general, it is recommended to work with sub‑VDPs when dealing with large numbers of input pins, as this makes it easier to identify and locate potential errors. A comprehensive technical description of VDP creation and the formulas used can be found in the [official documentation.](https://docs.aedifion.io/en/developers/http-api/guides-and-tutorials/virtual-datapoints/)

The following sections describes the necessary steps and settings to create a VDP specifically for use on the Status & Alarms page. The creation is carried out via the following API endpoint:  
`POST v2/project/{project_id}/virtual_datapoint`

**Required parameters:**

| Parameter | Data Type | Description |
| --- | --- | --- |
| **project\_id** | integer | Numeric project ID |
| **dataPointID** | string | Name of the VDP (e.g., RLT\_alert-VDP) |
| **type** | string | Drop-down menu with alvailable VDP types. Always select “formula” |
| **config** | json | VDP configuration (formula + pins) |
| **description** | string | Short description |

**Tip:** To create the config, copy one of the templates provided at the end and edit it in a JSON editor to avoid errors.

**What Needs to Be Adjusted in the Templates?**

In each template, only the following fields must be replaced:

-   **Formula** → The calculation logic, depending on the use case
-   **dataPointID** → The name of the actual input data point

Other parameters in the template, such as `aggregate`, `data_range`, or `trigger`, can remain unchanged. Information on how to modify them can be found in the technical documentation – however for the use cases described here, no changes are required.

## Formula selection based on typical use cases

A detailed explanation of how to create calculation formulas can be found in the documentation under the section “[Operators & Expressions.](https://docs.aedifion.io/en/developers/http-api/guides-and-tutorials/virtual-datapoints/#formulas)”  
The following section focuses exclusively on how to create specific calculation rules for the **Status & Alarms** page. It is important to understand that different formulas are required depending on the type of input data point.

In general, three typical cases can be distinguished:

-   **Binary alarm values** (0 = OK, 1 = Alarm or vice versa)
-   **Aggregated alarms**, when several binary data points are combined into a collective status
-   **Non-binary measurement** values with defined thresholds (e.g. temperature, CO₂, pressure)

### Binary alarm values

Many systems provide binary signals, for example 0 = normal operation and 1 = alarm.  
To translate this information into a status value that can then be displayed as a color on the **Status & Alarms** page, a simple formula is used:

`r = 100.0; r = if(P1 == 1, 300.0, r);`  
Or, reversed, if 0 = Alarm and 1 = Normal operation:

`r = 100.0; r = if(P1 == 0, 300.0, r);`  

**Interpretation:**  
This formula defines a default value of **100 (green)** and changes it to **300 (red)** as soon as an alarm is present at the input pin (P1).

**Note:**  
For purely binary alarm values, only the colors green and red are possible, since an intermediate step such as “yellow” does not exist technically.

### Aggregating multiple binary alarms

If several sensors are to be combined into a common alarm status, an additional separate aggregation VDP can be created that logically combines multiple input pins.  
In this case, it is important to ensure that the meaning of the alarm message is consistent across all inputs.

**Case A: Alarm value = 1 for all inputs**  
If all data points to be aggregated operate according to the scheme **1 = Alarm,** the **max()** function can be used:

`max(P1, P2, P3);`

**Interpretation:**  
As soon as **one** sensor reports the value 1, the aggregation value is also 1 → the system is in an alarm state.

**Case B: Alarm value = 0 for all inputs**  
Some signals operate according to the opposite principle:  
**0 = Alarm, 1 = OK**  
(e.g. some fault messages from fire detectors, pumps, or valves).  
In this case, the **min()** function is used and the formula is slightly extended:

`a = min(P1, P2, P3); r = if(a == 0, 1, 0); r;`

**Interpretation:**

-   If **at least one value is 0** → aggregate = 1 (alarm)
-   If all **values are 1** → aggregate = 0 (no alarm)

This creates a unified binary aggregation VDP that returns 1 = alarm state and 0 = OK.  
This aggregation VDP is then used as P1 in the actual status VDP as an input datapoint.

### Thresholds for non-binary data points

Some measured variables do not only have “alarm/no alarm” states but **continuous value ranges**. Typical examples include CO₂ concentration, temperature, pressure, or power. In such cases, the three-level traffic light system can be used, which defines threshold values and generates status codes accordingly.

Example formula for a CO₂ concentration:

`r = if(P1 >= 1500, 300, if(P1 >= 550, 301, 100)); r;`

**Interpretation:**  
If the value of data point P1 is:

-   ≥ 1500 ppm → 300 (red, critical range)
-   ≥ 550 ppm → 301 (yellow, warning range)
-   below → 100 (green, normal operation)

## Activating a VDP

After creation, the VDP must be **started manually** so that the values are calculated automatically and continuously. The start is triggered via the following POST endpoint:

`POST /v2/project/{project_id}/virtual_datapoint/run`  
**Required parameters:**

| Parameter | Data type | Description |
| --- | --- | --- |
| project\_id | integer | Numeric project ID |
| dataPointID | integer | ID of the VDP to be started |
| run | boolean | true = start VDP, false = stop VDP |

To stop a VDP, use the same endpoint and simply set the run parameter to false.

## Creating a status on the “Status & Alarms” page

After the Virtual Data Point (VDP) has been created and started, it can be used as a system status on the Status & Alarms page.  
To do this, a **system component** must first be created and linked to the VDP.

### Step 1: Create a system component

1.  In the left navigation bar, open **Optimization → Components.**
2.  Click **New** in the upper left corner.
3.  In the window that opens, select the **System** tile.
4.  Assign a suitable name to the new component, close the window, and reload the page.
5.  The component now appears as a tile on the **Status & Alarms** page – initially without an icon and with a gray signal color.

![](https://cdn-assets.productfruits.com/f557cb63-7cc9-4ae8-b940-13c5fbc4b36f)

Figure 2: creating a new component

* * *

### Step 2: Assign the VDP as operating status

1.  Open **Optimization → Components** again.
2.  Find the previously created system component in the overview.
3.  Open the component’s three-dot menu.
4.  Select **Edit data points** (Figure 3)**.**
5.  A view opens with:
6.  -   a data point list and
    -   a field “Operating status” for the component.
7.  Find the previously created VDP in the data point list.
8.  **Drag and drop** the VDP into the **Operating status** field.
9.  Close the window in the lower right corner.

![](https://cdn-assets.productfruits.com/6752f662-e22e-4eb8-8a3e-989116bc93cd)

Figure 3: Editing data points via the component menu

Further information on mapping data points can be found via the info icon (i) in the Help Center at the bottom right or in the guide “Create and map a component.”

* * *

### Step 3: Add an icon for the component

1.  Open the three-dot menu of the system component again.
2.  Select **Edit properties.**
3.  Choose a suitable icon and enter its name in the corresponding field.

Typical icons for HVAC systems, pumps, heat generators, etc. can be found in the table at the end.

## VDP configuration templates

Below are three different templates for VDP configurations for the three discussed cases. Copy the desired template and edit it in a JSON editor. All templates create a VDP that automatically calculates a new value whenever the value of an input datapoint changes.  
In each template, replace all example placeholders including the angle brackets (<>).

These are:

-   the **formula**, matching the use case described above
-   the **dataPointID** of the input data point

```
{
  "parameters": {
    "formula": "<r = 100.0; r = if(P1 == 1, 300.0, r);>"
  },
  "pins": {
    "P1": {
      "aggregate": "max",
      "dataPointID": "<AHU_alert_01>,
      "data_range": {
        "count": 1
      },
      "trigger": "every_value"
    }
  }
}
```

Template of a VDP config for a binary alarm datapoint.

```
{
  "parameters": {
    "formula": "<a = min(P1, P2, P3); r = if(a == 0, 1, 0); r;>"
  },
  "pins": {
    "P1": {
      "aggregate": "max",
      "dataPointID": "<Alarm_1>",
      "data_range": {
        "count": 1
      },
      "trigger": "every_value"
    },
    "P2": {
      "aggregate": "max",
      "dataPointID": "<Alarm_2>",
      "data_range": {
        "count": 1
      },
      "trigger": "every_value"
    },
    "P3": {
      "aggregate": "max",
      "dataPointID": "<Alarm_3>",
      "data_range": {
        "count": 1
      },
      "trigger": "every_value"
    }
  }
}
```

Template of a VDP config for the aggregation of three alarm data points in a single VDP

```
{
  "parameters": {
    "formula": "<r = if(P1 >= 1500, 300, if(P1 >= 550, 301, 100)); r;>"
  },
  "pins": {
    "P1": {
      "aggregate": "max",
      "dataPointID": "<CO2_measurement>",
      "data_range": {
        "count": 1
      },
      "trigger": "every_value"
    }
  }
}
```

Template of a VDP config for a status with threshold values.

## Table with typical icons

| System component | Icon |
| --- | --- |
| HVAC | `fal fa-fan` |
| Radiant floors | `fal fa-heat` |
| Heating/Cooling circuit | `fal fa-heat` |
| Chiller | `fal fa-temperature-frigid` |
| Cooling system | `fal fa-temperature-frigid` |
| Fire alarm system | `fal fa-fire` |
| Power supply | `fal fa-plug` |
| Ventilation | `fal fa-fan` |
| Intrusion alarm | `far fa-mask` |
| Server | `far fa-server` |
| Wi-Fi | `far fa-wifi` |
| Battery | `far fa-battery-slash` |
| Disabled emergency call | `far fa-wheelchair` |
| Conference | `far fa-users` |
| Elevators | `fal fa-elevator` |
| Diesel pump | `fal fa-gas-pump` |
| Water softening | `fal fa-water` |
| Lighting | `fal fa-lightbulb` |
| Gas warning system | `fal fa-sensor-alert` |
| Main doors | `fal fa-door-closed` |
