# Tag Config

This section explains how to configure tags for the **Emulator Module** so it generates emulated measurements for development, demos, and testing. It follows the same overall tag structure used across modules and focuses on the parts relevant to the emulator’s data generation:

### Tag configuration properties used by the Emulator Module

* **ModuleId**\
  Set to `EmulatorModule`.
* **Input.Source**\
  Defines *what pattern* to generate and its parameters. This is the core of the emulator configuration (see syntax below).
* **Input.SamplingRate**\
  How often the emulator produces a measurement for the tag. The default sampling rate is 10 seconds.
* **Input.MeasurementType**\
  Desired output data type. Possible data types are "String", "Analog" or "Digital".

> **Not used/ignored:** `Input.Endpoint` (no external endpoint is needed for the emulator).

### Input.Source syntax

The emulator uses a simple, semicolon-separated syntax:

```
<pattern>[optional_modifiers];param1;param2;...
```

#### Supported patterns

**Sine curve**

Generate a value that oscillates between `min` and `max` over a fixed period (seconds).

```
sinus;<min>;<max>;<periodSeconds>
```

**Example**

```
sinus;0;10;30
```

Generates a sine wave that varies from 0 to 10 with a 30-second period.

***

**Step**

Alternate between a series of numbers for specific durations (seconds), then repeat from the original number again (A).&#x20;

```
step;<A>;<durationA>;<B>;<durationB>;...
```

**Example**

```
step;-10;5;10;15
```

Holds -10 for 5 seconds, then 10 for 15 seconds, and repeats.

***

**Sequence**

Loop through a fixed list of values in order, repeating when the end is reached.

```
sequence;<v1>;<v2>;<v3>;...;<vn>
```

**Example**

```
sequence;1;2;3;4;5
```

Emits 1, 2, 3, 4, 5, then starts over.

***

**Random**

Emit random numbers within a range.

```
random;<max>
random;<min>;<max>
```

**Examples**

```
random;1000         (range 0..1000)
random;100;200      (range 100..200)
```

***

#### Modifiers

Attach modifiers in square brackets to the pattern name. Currently supported: **variance**.

Adds noise by randomly adding or subtracting a random value each sample:

```
<pattern>[variance=v];...
```

* `v` is an absolute value (same unit as the measurement).
* Final output per sample: `output = base_value ± v` (random positive or negative value, with minimum -v and maximum v).

**Example**

```
sinus[variance=0.3];0;10;30
```

Generates a 0–10 sine wave over 30 s, then adds or subtracts a value between 0 and **0.3** to each produced measurement.
