---
title: "Interpolácia a prahy"
description: "Funkcia LINEAR v TapHome na lineárnu interpoláciu (mapovanie hodnôt, stmievanie, režimy BOUNDS, INFINITE, STRICT) a HYSTERESIS na prahové spínanie kúrenia v smart rules a skriptoch."
url: "https://taphome.com/sk/docs/script/interpolation-and-thresholds/"
language: sk
lastmod: 2026-10-13
generator: hugo
ai:
  topics: ["linear-interpolation","hysteresis","value-mapping","thresholds","smart-rules"]
  questions: ["Ako použiť funkciu LINEAR na interpoláciu hodnôt v TapHome?","Ako namapujem hodnotu senzora na výstupný rozsah pomocou LINEAR?","Čo robia parametre BOUNDS, INFINITE a STRICT vo funkcii LINEAR?","Ako sa funkcia LINEAR správa, keď je vstup mimo rozsahu?","Ako použiť HYSTERESIS na riadenie kúrenia v TapHome?","Aký je rozdiel medzi LINEAR a HYSTERESIS?","Ako filtrujem signál pomocou hysterézneho rozsahu?","Ako funguje funkcia LINEAR a na čo sa používa v TapHome skripte?","Ako použijem LINEAR na stmievanie — namapovanie hodnoty na jas svetla?","Na čo slúži funkcia LINEAR a ako ju správne nakonfigurujem v TapHome skripte?"]
---

# Interpolácia a prahy

Lineárna interpolácia LINEAR a prahové spínanie HYSTERESIS na mapovanie hodnôt, stmievanie svetiel a riadenie kúrenia v skriptoch TapHome.

Posledná aktualizácia: 2026-10-13

`LINEAR` prevedie hodnotu z jedného rozsahu do druhého po priamke. `HYSTERESIS` prepína medzi dvoma výstupnými hodnotami s pásmom necitlivosti, takže výstup okolo jedného prahu nepreskakuje sem a tam.

## LINEAR

`LINEAR` mapuje hodnotu zo vstupného rozsahu do výstupného rozsahu po priamke prechádzajúcej dvoma bodmi, `in1` → `out1` a `in2` → `out2` — napríklad surovú hodnotu registra na percentá alebo denné svetlo na jas svietidla.

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

**Parametre**

| Názov | Typ | Popis |
|---|---|---|
| `value` | číslo | Vstupná hodnota. |
| `in1`, `out1` | číslo | Prvý bod: vstup `in1` dá výstup `out1`. |
| `in2`, `out2` | číslo | Druhý bod: vstup `in2` dá výstup `out2`. |
| `LinearType` | enum, voliteľný | Čo sa stane, keď je `value` mimo rozsahu `in1` – `in2`. |

| `LinearType` | Výsledok mimo vstupného rozsahu |
|---|---|
| `DEFAULT` (alebo vynechaný) | Rovnaké ako `BOUNDS`. Pri Core staršom ako 2022.2 extrapoluje ako `INFINITE`. |
| `BOUNDS` | Hodnota sa obmedzí na rozsah, takže výsledok ostane medzi `out1` a `out2`. |
| `STRICT` | `NaN`. |
| `INFINITE` | Priamka pokračuje ďalej (extrapolácia). |

![Graf funkcie LINEAR](https://taphome.com/documentation/script/linear-function.svg)

**Návratová hodnota** — `double`. Vstup `NaN` dá `NaN`. Keď sa `in1` rovná `in2`, sklon sa nedá vypočítať a namiesto neho sa použije `1`.

**Príklad — prepočet surovej hodnoty**

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

Vplyv `LinearType` pre vstup 11 s bodmi 0 → 400 a 10 → 2000:

```taphome
# obmedzené na rozsah
LINEAR(11, 0, 400, 10, 2000, BOUNDS);
# Result: 2000
# priamka pokračuje mimo rozsahu
LINEAR(11, 0, 400, 10, 2000, INFINITE);
# Result: 2160
# mimo rozsahu vznikne NaN
LINEAR(11, 0, 400, 10, 2000, STRICT);
# Result: NaN
```

**Príklad — stmievanie: mapovanie hodnoty na jas svietidla**

Úroveň stmievača je v TapHome od 0 do 1 (0 – 100 %). Tento vzorec stmieva svetlo z plného jasu za tmy až po vypnutie pri 300 lx denného svetla; `BOUNDS` drží úroveň medzi 0 a 1 aj pri jasnejších či tmavších hodnotách senzora:

```taphome
# Va je senzor denného svetla v lx, výsledok je úroveň stmievača
LINEAR(Va, 0, 1, 300, 0, BOUNDS);
# Result: 0.5 at 150 lx, 0 at 300 lx and more
```

Krivka stmievania, ktorá nikdy neklesne pod 10 % — hodnota posuvníka `x` od 0 do 1 sa mapuje na rozsah 0,1 – 1:

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

Rovnako to funguje pri vetraní: `LINEAR(co2, 400, 0, 1200, 1)` dá 0 pri 400 ppm, 0,5 (50 %) pri 800 ppm a 1 pri 1 200 ppm.

**Pozrite aj** — [HYSTERESIS](https://taphome.com/sk/docs/script/interpolation-and-thresholds/#hysteresis), [Zaokrúhľovanie a náhodné čísla](https://taphome.com/sk/docs/script/rounding-and-random/).

## HYSTERESIS

`HYSTERESIS` vráti `lowerState`, keď hodnota klesne na `lowerThreshold`, `upperState`, keď stúpne na `upperThreshold`, a `previousState`, kým ostáva medzi nimi.

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

Hysteréza filtruje signál tak, aby výstup reagoval pomalšie ako vstup: termostat zapne kúrenie, keď teplota klesne pod jednu hodnotu, ale vypne ho až vtedy, keď stúpne nad inú.

**Parametre**

| Názov | Typ | Popis |
|---|---|---|
| `value` | číslo | Meraná hodnota, napríklad teplota. |
| `upperThreshold` | číslo | Hodnota, pri ktorej a nad ktorou sa vráti `upperState`. Musí byť vyššia ako `lowerThreshold`. |
| `lowerThreshold` | číslo | Hodnota, pri ktorej a pod ktorou sa vráti `lowerState`. |
| `upperState`, `lowerState` | číslo | Výsledky pre oba prahy — ľubovoľné čísla, nielen 0 a 1. |
| `previousState` | číslo | Výsledok, kým je hodnota medzi prahmi, zvyčajne predchádzajúci výstup. Nesmie byť `Null`. |

**Návratová hodnota** — `double`: `upperState`, `lowerState` alebo `previousState`. Hodnota, ktorá je od prahu vzdialená najviac 0,005, sa považuje za dosiahnutie prahu. Hodnota `NaN` vráti `previousState`.

**Príklad — kúrenie**

Miestnosť sa udržiava na 20 °C s hysterézou ±2 °C: kúrenie sa zapne, keď teplota klesne na 18 °C, a vypne, keď stúpne na 22 °C. V smart rule Skript sa spínač kúrenia číta aj zapisuje:

```taphome
# Te je teplota miestnosti, Sw spínač kúrenia
Sw := HYSTERESIS(Te, 22, 18, 0, 1, Sw);
```

V smart rule Vzorec je predchádzajúcim výsledkom `LastState`, ktorý je `Null` pri prvom spustení a po chybe skriptu:

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

**Chyby**

- *Upper threshold must be higher than lower threshold* — pri uložení skriptu, ktorého prahy sú pevné čísla.
- *Upper threshold (X) must be higher than lower threshold (Y)* — pri vykonávaní, keď prahy pochádzajú z premenných.

**Pozrite aj** — [Skripty v smart rules](https://taphome.com/sk/docs/script/smart-rules/), [Riadenie plnenia nádrže s hysterézou](https://taphome.com/sk/docs/configuration/hysteresis-equation/).
