Interpolation und Schwellenwerte
LINEAR (lineare Interpolation) und HYSTERESIS (Schwellenwert-Filterung) zum Abbilden und Aufbereiten von Eingabewerten in TapHome-Skripten.
LINEAR
Gibt einen linear skalierten Wert zurück – lineare Interpolation.
LINEAR(input, value1_input, value1_output, value2_input, value2_output, [type])Parameter
- input … Eingabewert
- value1_input … Wert am Eingang am unteren Rand
- value1_output … Wert am Ausgang am unteren Rand
- value2_input … Wert am Eingang am oberen Rand
- value2_output … Wert am Ausgang am oberen Rand
- [type] … optionaler Parameter. Legt fest, wie das Ergebnis aussehen soll, wenn der Eingabewert außerhalb des Bereichs value1_input ↔︎ value2_input liegt:
- ohne Parameter (entspricht BOUNDS) … Wenn der Eingabewert außerhalb des definierten Bereichs liegt, wird der Ausgabewert auf einen der Endwerte (Minimum oder Maximum) gesetzt.
- INFINITE … Wenn der Eingabewert außerhalb des definierten Bereichs liegt, wird ein extrapolierter Wert zurückgegeben.
- STRICT … Wenn der Eingabewert außerhalb des definierten Bereichs liegt, wird der Ausgabewert NaN (not a number).
Beispiele
Example 1: LINEAR(250, 0,0, 50,500) (Result is 25°C)
Example 2: LINEAR(Co2, 400,0, 1200,1)
(If value from Co2 sensor is 400ppm, output for air recovery will be 0%.
If Co2 is 1200, output will be 100%. And if e.g. Co2=800, output will be 50%)Beispiele für verschiedene [type]-Attribute:
- input = 11
- value1_input = 0, value1_output = 400
- value2_input = 10, value2_output = 2000
Ergebnis für verschiedene [type]-Parameter:
- BOUNDS (Standardwert) = 2000
- INFINITE = 2160
- STRICT = NaN
HYSTERESIS
Hysterese kann verwendet werden, um Signale zu filtern, sodass die Ausgabe langsamer reagiert, indem sie die jüngere Systemhistorie berücksichtigt. Zum Beispiel könnte ein Thermostat, der eine Heizung steuert, die Heizung einschalten, wenn die Temperatur unter A fällt, die Heizung aber erst ausschalten, wenn die Temperatur über B steigt.
Gibt 0 oder 1 zurück.
HYSTERESIS(value, upper_bound, lower_bound, upper_output, lower_output, last_value)Beispiel: Halten Sie eine Temperatur von 20 °C mit einer Hysterese von 2 °C. Schalten Sie die Heizung ein, wenn die Temperatur unter 18 °C fällt, und aus, wenn sie 22 °C überschreitet.
heater := HYSTERESIS(temperature, 22, 18, 0, 1, heater);