---
title: "Interpolation und Schwellenwerte"
description: "TapHome-Funktion LINEAR für lineare Interpolation (Abbildung von Werten, Dimmen, Modi BOUNDS, INFINITE, STRICT) und HYSTERESIS zum Schalten einer Heizung über Schwellenwerte in smart rules und Skripten."
url: "https://taphome.com/de/docs/script/interpolation-and-thresholds/"
language: de
lastmod: 2026-10-13
generator: hugo
ai:
  topics: ["linear-interpolation","hysteresis","value-mapping","thresholds","smart-rules"]
  questions: ["Wie verwende ich die Funktion LINEAR zur Interpolation von Werten in TapHome?","Wie bilde ich mit LINEAR einen Sensorwert auf einen Ausgangsbereich ab?","Was bewirken die Parameter BOUNDS, INFINITE und STRICT in LINEAR?","Wie verhält sich die Funktion LINEAR, wenn die Eingabe außerhalb des Bereichs liegt?","Wie verwende ich HYSTERESIS, um in TapHome eine Heizung zu steuern?","Was ist der Unterschied zwischen LINEAR und HYSTERESIS?","Wie filtere ich ein Signal mit einem Hysteresebereich?","Wie funktioniert die Funktion LINEAR und wofür wird sie in einem TapHome-Skript verwendet?","Wie verwende ich LINEAR zum Dimmen — Abbildung eines Werts auf die Helligkeit des Lichts?"]
---

# Interpolation und Schwellenwerte

Lineare Interpolation mit LINEAR und Schalten mit Schwellenwerten mit HYSTERESIS zum Abbilden von Werten, Dimmen von Licht und Steuern der Heizung in TapHome-Skripten.

Zuletzt aktualisiert: 2026-10-13

`LINEAR` wandelt einen Wert entlang einer Geraden von einem Bereich in einen anderen um. `HYSTERESIS` schaltet mit einer Totzone zwischen zwei Ausgangswerten, sodass der Ausgang nicht um einen einzelnen Schwellenwert herum hin und her springt.

## LINEAR

`LINEAR` bildet einen Wert aus einem Eingangsbereich auf einen Ausgangsbereich ab, entlang der Geraden durch zwei Punkte, `in1` → `out1` und `in2` → `out2` — zum Beispiel einen rohen Registerwert auf Prozent oder das Tageslicht auf die Helligkeit des Lichts.

```text
LINEAR(value, in1, out1, in2, out2)
LINEAR(value, in1, out1, in2, out2, LinearType)
```

**Parameter**

| Name | Typ | Beschreibung |
|---|---|---|
| `value` | Zahl | Eingangswert. |
| `in1`, `out1` | Zahl | Erster Punkt: Eingang `in1` ergibt Ausgang `out1`. |
| `in2`, `out2` | Zahl | Zweiter Punkt: Eingang `in2` ergibt Ausgang `out2`. |
| `LinearType` | enum, optional | Was passiert, wenn `value` außerhalb des Bereichs `in1` – `in2` liegt. |

| `LinearType` | Ergebnis außerhalb des Eingangsbereichs |
|---|---|
| `DEFAULT` (oder weggelassen) | Wie `BOUNDS`. Bei Core-Versionen vor 2022.2 extrapoliert es wie `INFINITE`. |
| `BOUNDS` | Der Wert wird auf den Bereich begrenzt, das Ergebnis bleibt also zwischen `out1` und `out2`. |
| `STRICT` | `NaN`. |
| `INFINITE` | Die Gerade wird fortgesetzt (Extrapolation). |

![Graph der Funktion LINEAR](https://taphome.com/documentation/script/linear-function.svg)

**Rückgabewert** — `double`. Eine Eingabe `NaN` ergibt `NaN`. Wenn `in1` gleich `in2` ist, lässt sich die Steigung nicht berechnen, und stattdessen wird `1` verwendet.

**Beispiel — einen Rohwert umrechnen**

```taphome
# Rohwert des Registers 0 ... 1000 -> 0 ... 100 %
LINEAR(MODBUSR(H, 10, Uint16), 0, 0, 1000, 100);
VAR raw := 250;
LINEAR(raw, 0, 0, 500, 50);
# Result: 25
```

Die Wirkung von `LinearType` für die Eingabe 11 mit den Punkten 0 → 400 und 10 → 2000:

```taphome
# auf den Bereich begrenzt
LINEAR(11, 0, 400, 10, 2000, BOUNDS);
# Result: 2000
# Gerade setzt sich außerhalb fort
LINEAR(11, 0, 400, 10, 2000, INFINITE);
# Result: 2160
# außerhalb des Bereichs ergibt NaN
LINEAR(11, 0, 400, 10, 2000, STRICT);
# Result: NaN
```

**Beispiel — Dimmen: einen Wert auf die Helligkeit des Lichts abbilden**

Ein Dimmerwert läuft in TapHome von 0 bis 1 (0 – 100 %). Diese Formel dimmt ein Licht von voller Helligkeit bei Dunkelheit bis aus bei 300 lx Tageslicht; `BOUNDS` hält den Wert bei helleren oder dunkleren Messwerten zwischen 0 und 1:

```taphome
# Va ist der Tageslichtsensor in lx, das Ergebnis ist der Dimmerwert
LINEAR(Va, 0, 1, 300, 0, BOUNDS);
# Result: 0.5 at 150 lx, 0 at 300 lx and more
```

Eine Dimmkurve, die nie unter 10 % fällt — ein Schiebereglerwert `x` von 0 bis 1 wird auf 0.1 – 1 abgebildet:

```taphome
LINEAR(x, 0, 0.1, 1, 1);
```

Dasselbe funktioniert für die Lüftung: `LINEAR(co2, 400, 0, 1200, 1)` ergibt 0 bei 400 ppm, 0.5 (50 %) bei 800 ppm und 1 bei 1 200 ppm.

**Siehe auch** — [HYSTERESIS](https://taphome.com/de/docs/script/interpolation-and-thresholds/#hysteresis), [Runden und Zufallszahlen](https://taphome.com/de/docs/script/rounding-and-random/).

## HYSTERESIS

`HYSTERESIS` gibt `lowerState` zurück, wenn ein Wert auf `lowerThreshold` fällt, `upperState`, wenn er auf `upperThreshold` steigt, und `previousState`, solange er dazwischen bleibt.

```text
HYSTERESIS(value, upperThreshold, lowerThreshold, upperState, lowerState, previousState)
```

Eine Hysterese filtert ein Signal so, dass der Ausgang langsamer reagiert als der Eingang: Ein Thermostat schaltet eine Heizung ein, wenn die Temperatur unter einen Wert fällt, aber erst wieder aus, wenn sie über einen anderen steigt.

**Parameter**

| Name | Typ | Beschreibung |
|---|---|---|
| `value` | Zahl | Gemessener Wert, zum Beispiel eine Temperatur. |
| `upperThreshold` | Zahl | Wert, ab dem `upperState` zurückgegeben wird. Muss höher sein als `lowerThreshold`. |
| `lowerThreshold` | Zahl | Wert, bei dem oder unter dem `lowerState` zurückgegeben wird. |
| `upperState`, `lowerState` | Zahl | Ergebnisse für die beiden Schwellenwerte — beliebige Zahlen, nicht nur 0 und 1. |
| `previousState` | Zahl | Ergebnis, solange der Wert zwischen den Schwellenwerten liegt, meist der vorherige Ausgang. Darf nicht `Null` sein. |

**Rückgabewert** — `double`: `upperState`, `lowerState` oder `previousState`. Ein Wert, der höchstens 0.005 von einem Schwellenwert entfernt ist, gilt als erreicht. Ein Wert `NaN` gibt `previousState` zurück.

**Beispiel — Heizung**

Halten Sie einen Raum mit einer Hysterese von ±2 °C auf 20 °C: Die Heizung schaltet ein, wenn die Temperatur auf 18 °C fällt, und aus, wenn sie auf 22 °C steigt. In einer smart rule Skript wird der Schalter der Heizung sowohl gelesen als auch geschrieben:

```taphome
# Te ist die Raumtemperatur, Sw der Schalter der Heizung
Sw := HYSTERESIS(Te, 22, 18, 0, 1, Sw);
```

In einer smart rule Formel ist das vorherige Ergebnis `LastState`, das beim ersten Durchlauf und nach einem Skriptfehler `Null` ist:

```taphome
HYSTERESIS(Te, 22, 18, 0, 1, IF(ISNULL(LastState), 0, LastState));
```

**Fehler**

- *Upper threshold must be higher than lower threshold* — wenn Sie ein Skript speichern, dessen Schwellenwerte feste Zahlen sind.
- *Upper threshold (X) must be higher than lower threshold (Y)* — zur Laufzeit, wenn die Schwellenwerte aus Variablen stammen.

**Siehe auch** — [Skripte in smart rules](https://taphome.com/de/docs/script/smart-rules/), [Füllstandsregelung eines Behälters mit Hysterese](https://taphome.com/de/docs/configuration/hysteresis-equation/).
