# Status configurator

:::tip
Menu → System settings → Status configurator

:::

**Status configurator** is the central module where you assign **signals (statuses)** from devices to machines in the plant structure and define the rules for interpreting them. It is the foundation of OmniMES analytical logic - it is responsible for transforming raw MQTT signals into understandable production data, which is then used in Monitoring, the Planogram, reports and analyses.

The whole module fits on a single screen with tabs in two groups:

* **Statuses** - *Statuses* (list and adding), *Status profiles*, *Automatic detection*, *Import statuses via CSV*,
* **Other** - *Parameters*, *Aliases*, *Units*.

 ![](https://docs.omnimes.com/api/files.get?sig=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJrZXkiOiJ1cGxvYWRzLzRlMDdmZmNhLThmZjAtNDYxYy1iYjEyLTA2OTEyZGRiOGQzNi84MWViOGMyZi02MDFlLTQ0MGQtYWJiNS0wZGJkODkxZDNjNWMvMDFfZ2xvd25hX3N0YXR1c3kucG5nIiwidHlwZSI6ImF0dGFjaG1lbnQiLCJpYXQiOjE3OTQ0OTU2MDAsImV4cCI6MTc5NDU4MjAwMH0.2E38eeL6hU6-nPsCqaEjcyuJ2YhUsQLVrjTGWLD67Pg " =1680x1000")


:::info
Changes to status profiles and to the status list are confirmed with the **Save** button. The context of connecting devices (the MQTT broker, the Weintek/EasyBuilder gateway example) is described in the chapter [**Signal configuration and connection**](https://docs.omnimes.com/doc/signal-configuration-and-connection-6PIZSjQMBF).

:::

## Helper dictionaries (the "Other" group)

Before assigning signals, it is worth defining the dictionary elements:

* **Units** - e.g. pieces (pcs), kilowatt-hours (kWh), cubic metres (m³),

 ![](https://docs.omnimes.com/api/files.get?sig=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJrZXkiOiJ1cGxvYWRzLzRlMDdmZmNhLThmZjAtNDYxYy1iYjEyLTA2OTEyZGRiOGQzNi83MDIzMTQyMC1mYjQ3LTRhZjEtYWIyYi1jNmFjYjE0OGM3NzYvMDhfamVkbm9zdGtpLnBuZyIsInR5cGUiOiJhdHRhY2htZW50IiwiaWF0IjoxNzk0NDk1NjAwLCJleHAiOjE3OTQ1ODIwMDB9.OK9Q_d4VZfFvQ7Oiy2UIc7C5lK63MeS0ewHUcojKhx4 " =1680x1000")

* **Aliases** - friendly tag names, used in further configuration,

 ![](https://docs.omnimes.com/api/files.get?sig=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJrZXkiOiJ1cGxvYWRzLzRlMDdmZmNhLThmZjAtNDYxYy1iYjEyLTA2OTEyZGRiOGQzNi9mZDliMWNiZi0xZTc5LTQ5OGUtYWNhYS1hYzFmM2QyNGM2YzQvMDdfYWxpYXN5LnBuZyIsInR5cGUiOiJhdHRhY2htZW50IiwiaWF0IjoxNzk0NDk1NjAwLCJleHAiOjE3OTQ1ODIwMDB9.owvk0rBoblsWlJKiljOG5wVEiRA_kmDuqRB1kpSyg2o " =1680x1000")

* **Parameters** - definitions of the **Event** type (e.g. failures, downtime, production - assigned to specific values) or the **Measurement** type (e.g. temperature, speed, power consumption - variable values).

 ![](https://docs.omnimes.com/api/files.get?sig=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJrZXkiOiJ1cGxvYWRzLzRlMDdmZmNhLThmZjAtNDYxYy1iYjEyLTA2OTEyZGRiOGQzNi8zYmFlOWNiOS1hZDY2LTQ5NTAtYmYxMC0xN2QzMWZhMzA1OWQvMDZfcGFyYW1ldHJ5LnBuZyIsInR5cGUiOiJhdHRhY2htZW50IiwiaWF0IjoxNzk0NDk1NjAwLCJleHAiOjE3OTQ1ODIwMDB9.QPVNEDzKTXOGC9TbRDN-ME2bJ4UDjCy0Cmea8dF-EUc " =1680x1000")

## Status profiles

For parameters you create **profiles** that determine how a status is presented and behaves in the system:

* profile type: event / measurement,
* visual form: text, gauge, colours, icons, font size,
* hierarchy: a main status and sub-statuses (e.g. "Production" > "Number of pieces").

 ![](https://docs.omnimes.com/api/files.get?sig=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJrZXkiOiJ1cGxvYWRzLzRlMDdmZmNhLThmZjAtNDYxYy1iYjEyLTA2OTEyZGRiOGQzNi8yYzU5NGI0NS00NjI1LTQ0ZTItOGE0NC1kYTBiZGM1N2NmMWUvMDNfcHJvZmlsZS5wbmciLCJ0eXBlIjoiYXR0YWNobWVudCIsImlhdCI6MTc5NDQ5NTYwMCwiZXhwIjoxNzk0NTgyMDAwfQ.1ZCPQHBtkyLzKy-AlW35KBjZ6ZWz4D7Hn0UGqcXXNhI " =1680x1000")

## Adding statuses (signals)

In the **Statuses** tab three methods of entering signals are available:

**1. Manual adding** - the **Add** button opens a form with the fields: **Topic** (the MQTT path), **Tag** and **Tag value**, **Display name on monitoring** (optional), **Data type** (measurement / event), **Profile**, and the **Park / Line / Machine** assignment. Statuses can also be **duplicated** and edited in bulk (the **Preview / Edit Multiple** toggle).

 ![](https://docs.omnimes.com/api/files.get?sig=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJrZXkiOiJ1cGxvYWRzLzRlMDdmZmNhLThmZjAtNDYxYy1iYjEyLTA2OTEyZGRiOGQzNi8wY2I5ZDIyZi1kNTM2LTQxMTUtYWZkMS1mZDYyOTdlYjYyY2MvMDJfZG9kYWpfc3RhdHVzLnBuZyIsInR5cGUiOiJhdHRhY2htZW50IiwiaWF0IjoxNzk0NDk1NjAwLCJleHAiOjE3OTQ1ODIwMDB9.c0H7t0rnUKzNhBmrZQgJAkdZ0wvxOTD6vteZJhEic1Q " =1680x1000")

**2. Automatic detection** - scans the signals broadcast by devices and lets you assign them to the structure in bulk.

 ![](https://docs.omnimes.com/api/files.get?sig=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJrZXkiOiJ1cGxvYWRzLzRlMDdmZmNhLThmZjAtNDYxYy1iYjEyLTA2OTEyZGRiOGQzNi8wZTQzMWFiMS1mOGJhLTRlODUtYmZmNS02NGQxYWFiNzNjZmEvMDRfYXV0by5wbmciLCJ0eXBlIjoiYXR0YWNobWVudCIsImlhdCI6MTc5NDQ5NTYwMCwiZXhwIjoxNzk0NTgyMDAwfQ.lsGDsQfiUEoQdqBW7_9hcnvpsjSdICNcYG5gEtN6hJI " =1680x1000")

**3. Bulk import from a CSV file** - ideal for large deployments; after the import you assign a profile to each status.

 ![](https://docs.omnimes.com/api/files.get?sig=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJrZXkiOiJ1cGxvYWRzLzRlMDdmZmNhLThmZjAtNDYxYy1iYjEyLTA2OTEyZGRiOGQzNi8wMGI1NmM3MC05MWYyLTRmMzUtOGY3Zi00YmVkOTk5YzZhMmMvMDVfY3N2LnBuZyIsInR5cGUiOiJhdHRhY2htZW50IiwiaWF0IjoxNzk0NDk1NjAwLCJleHAiOjE3OTQ1ODIwMDB9.Tnz6R9S8eKVBefNXcR134tpC5mODyn5PQ9IccZKKVW0 " =1680x1000")

## Preview, editing and the result on monitoring

The status list can be filtered (machine park, profile, tag name, date), **exported** and edited, duplicated and deleted. Every correctly configured status (e.g. a failure with the "Failure" profile) is immediately presented in real time on the [**Monitoring**](https://docs.omnimes.com/doc/monitoring-Ua8w5mIV2t) and on the [**Planogram**](https://docs.omnimes.com/doc/planogram-e11Ez7z7sg).


---

## Work-state classification from measurements (ranges)

For **Event**-type statuses you can derive the machine work state **from a continuous measurement** (e.g. power, temperature, current) - without a separate event signal. Instead of a single value you provide a **range** in which the given state applies.

The add/edit form for an event provides the fields:

* **Range from (≥)** - lower bound **inclusive** (value ≥ "from"),
* **Range to (<)** - upper bound **exclusive** (value < "to").

The interval is **half-open** `**\[from, to)**`: a value belongs to the state when it is **greater than or equal to** "from" **and less than** "to". An empty field means **no bound** (infinity) - e.g. "from = 30" alone means "30 and above".

**Example - three disjoint temperature states:**

| Profile (state) | Range from (≥) | Range to (<) |
|-----------------|----------------|--------------|
| Idle            | *(empty)*      | 10           |
| Warm-up         | 10             | 30           |
| Production      | 30             | *(empty)*    |

As a result: temperature below 10 → *Idle*, from 10 to below 30 → *Warm-up*, 30 and above → *Production*.


:::info
**A boundary always belongs to the higher state.** A value exactly equal to a boundary (e.g. 30) falls into the interval for which it is the "from" - so the bands **meet at the same number** and cover the whole range **with no gaps and no overlap**.

:::

**Range or exact value.** The range (from/to) and the **Tag value** field are mutually exclusive: when you enter a range, the "Tag value" field is disabled (and vice versa). "Tag value" is for **discrete** events - exact code matching (e.g. status = 3). For states derived from a measurement you use the range.

States derived from a range are immediately visible in real time on the [**Monitoring**](https://docs.omnimes.com/doc/monitoring-Ua8w5mIV2t), and in the **Event history** they are saved as **merged state intervals** (e.g. "Production 13:20-13:45"), ready for analyses and OEE calculations.


:::info
A measurement signal used by a range status is **automatically saved to history** (it is needed to compute the states), even if the measurement itself is set to "Live only". In the list such a status is then labelled **Saved (via another status)**. When you try to turn off archiving or delete a status whose signal is also used by other statuses, the system **warns** you and lets you apply the operation to one or all of the related statuses.

:::

## Signal archiving (saving to history)

Each status (signal) has an **Archiving** toggle that decides whether the data from that signal is **saved to the database history** or only **viewed live**:

* **Archiving on** (default) - the signal is saved to history and available in the **Event history**, reports, charts and analyses.
* **Archiving off** ("Live only") - the signal is visible **live only** (its current value on Monitoring), but is **not saved to history**.

The feature works for **all signals** - both events (e.g. production, failure) and measurements (e.g. power, temperature). This lets you limit the database size: signals you only want to observe live can be excluded from archiving, while full history is kept only for the statuses that matter.

You can set archiving in three ways:

* **Individually** - with the **Archiving** toggle on each status in the list and in the add/edit form; the status is labelled **Archived** or **Live only**.
* **In bulk** - select the statuses and use the **Archive selected only** button, which lets you **enable** or **disable** archiving for all the selected ones at once.
* **Filter** - the **Archiving** drop-down filter (All / Archived / Live only) quickly shows which statuses are archived and which are not.


:::info
By default all signals are archived. The change applies from the moment it is saved - it affects new data, not the history already collected.

:::

<!-- v4.4.0 -->

## Saving changes with the "Save" button

The status configurator saves changes **only after you confirm them**. Previously, every time you left a field the change was sent immediately - an accidental click in a drop-down list could overwrite a correct configuration, and undoing it meant fixing things by hand. Now you are in control: you can correct several things at once, check the result in the preview and save with a single click, or back out without leaving a trace.

### Status profiles

After you click **Edit** next to a profile, the settings window works on a working copy - everything you change (name, parameter, colours, icons, speedometer, sub-statuses) is shown immediately in the **Preview**, but nothing reaches the system yet.


1. Make your changes in the profile window.
2. When the **You have unsaved changes** warning appears, you know the working copy differs from the saved version.
3. Click **Save** to confirm, or **Cancel** to abandon the whole edit.

If you try to close the window with unsaved changes, the system asks: *"You have unsaved changes. Close without saving?"* - you can then go back to editing (**Cancel**) or deliberately abandon it (**Discard changes**).

### Status list

In **Edit Many** mode (the *Preview / Edit Many* toggle) you can correct many statuses at once - topic, tag, ranges, value, display name, profile and the assignment to park, line and machine.

* Every modified status is **highlighted with a frame**, so you can see at once what you have touched.
* A bar with a counter appears above the list: **Unsaved changes in N statuses**, together with the **Save** and **Discard changes** buttons.
* **Save** sends all the changed rows at once and refreshes the list. **Discard changes** restores the values from before the edit.


:::info
If a row cannot be saved, it **stays marked as changed** - so you can see straight away which status needs fixing, instead of silently losing the data you entered.

:::


:::warning
The **Archiving** toggle works as before - it changes the setting immediately and does not require clicking "Save". Do not leave the screen while the unsaved-changes bar is active, because those changes will be discarded.

:::

## Automatic detection - narrowing and limits

### Topic filter

In large installations the broker broadcasts signals from many devices at the same time, so the list of finds can grow to hundreds of items. To collect signals **from a single device or group only**, use the **Topic filter (name fragment)** field:


1. In the **Automatic detection** tab click **Show filtering**.
2. In the **Topic filter (name fragment)** field enter a fragment of the topic name, e.g. `Local HMI`. Case does not matter.
3. Run **Start discovery** - only signals from topics containing the given fragment will be collected.

The topic filter works **independently of the tag rules**, so you can combine both mechanisms: first narrow the listening down to one device, then use the rules to pick specific tags from it. An empty field means listening to all topics from the subscription.


:::info
Set the topic filter, the limit and the rules **before** you start discovery - once the first signals have been found the fields are locked, so that the rules cannot be changed while collecting is in progress.

:::

### When discovery stops by itself

Two independent stop conditions are available - you can use one or both at the same time:

| Field | When it stops discovery | When it is worth using |
|-------|-------------------------|------------------------|
| **Limit of tags to be detected** | Once the given number of **new** signals has been found (already assigned ones do not count) | When you know how many signals you are looking for, or want to avoid pulling in hundreds of tags at once |
| **Auto-stop after no new signals (minutes)** | When not a single new signal appears for the given number of minutes | When you do not know how many signals the device sends - you wait until the stream "dries up" |

An empty field means the condition is not used. Once the limit is reached, discovery stops and the message *"Discovery stopped automatically. Reached the limit of N signals."* is shown, while the collected signals stay on the list ready to be assigned.

### Filter rules

A rule with an empty **Tag** field is **ignored** during filtering - previously a single empty row could let through or block all signals and invalidate the remaining, correctly filled rules. In addition, the **Add** button will not create another row until the previous one has its tag filled in - instead a hint tells you what to complete.

## Conveniences in status profiles

### Unit suggested from the parameter

When you select an item in the **Parameter** field, the system automatically sets the **Indicator unit** in the profile - the same one assigned to that parameter in the **Parameters** tab. You no longer have to enter the same information in two places, and the unit on Monitoring is consistent with the parameter definition.

You can **change the unit manually** at any time - the suggestion works only when the parameter is changed and never overwrites a setting saved earlier in the profile.


:::info
If a parameter has a unit that is not yet on the unit list, the system will tell you. Add it with the **+** button next to the unit field, then select the parameter again.

:::

### Fractional speedometer values

The **Minimum speedometer value** and **Maximum speedometer value** fields now accept fractional values (e.g. `1.5` or `63.5`). Previously the maximum was silently rounded to a whole number, so the speedometer scale did not match the real measurement range.

---

**Documents**

- [OmniPlatform](https://docs.omnimes.com/s/cb8b19e0-ec6d-4e1a-8690-b0ddd67ad1cd/doc/omniplatform-7z9SIECi68)
- [Omnienergy](https://docs.omnimes.com/s/cb8b19e0-ec6d-4e1a-8690-b0ddd67ad1cd/doc/omnienergy-56aRDgnYFZ)
- [Omnimes](https://docs.omnimes.com/s/cb8b19e0-ec6d-4e1a-8690-b0ddd67ad1cd/doc/omnimes-eGDa0U5cyr)
- [FAQ](https://docs.omnimes.com/s/cb8b19e0-ec6d-4e1a-8690-b0ddd67ad1cd/doc/faq-IFQjCNYt1Q)
- [Cybersecurity & Compliance (CRA)](https://docs.omnimes.com/s/cb8b19e0-ec6d-4e1a-8690-b0ddd67ad1cd/doc/cybersecurity-compliance-cra-pPJBcC6sBf)