Interpolacja i progi
Funkcje LINEAR (interpolacja liniowa) i HYSTERESIS (filtrowanie progowe) do mapowania i kondycjonowania wartości wejściowych w skryptach TapHome.
LINEAR
Zwraca wartość przekształconą liniowo – interpolacja liniowa.
LINEAR(input, value1_input, value1_output, value2_input, value2_output, [type])Parametry
- input… wartość wejściowa
- value1_input… wartość wejściowa na dolnym ograniczeniu
- value1_output… wartość wyjściowa na dolnym ograniczeniu
- value2_input… wartość wejściowa na górnym ograniczeniu
- value2_output… wartość wyjściowa na górnym ograniczeniu
- [type]… parametr opcjonalny. Definiuje, jaki ma być wynik, gdy wartość wejściowa wyjdzie poza zakres value1_input ↔︎ value2_input:
- bez parametru (taki sam efekt jak BOUNDS)… jeśli wartość wejściowa wyjdzie poza zdefiniowany zakres, wartość wyjściowa będzie jedną z wartości skrajnych (minimalną lub maksymalną)
- INFINITE… jeśli wartość wejściowa wyjdzie poza zdefiniowany zakres, wynik to wartość ekstrapolowana
- STRICT… jeśli wartość wejściowa wyjdzie poza zdefiniowany zakres, wartość wyjściowa będzie NaN
Przykłady
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%)Przykład dla różnych atrybutów [type]:
- input = 11
- value1_input = 0, value1_output = 400
- value2_input = 10, value2_output = 2000
Wynik dla różnych parametrów [type]:
- BOUNDS (domyślna wartość) = 2000
- INFINITE = 2160
- STRICT = NaN
HYSTERESIS
Histereza może być używana do filtrowania sygnałów tak, aby reakcja wyjścia była wolniejsza, z uwzględnieniem historii systemu. Na przykład termostat zarządzający grzejnikiem może włączać grzejnik, gdy temperatura spadnie poniżej A, ale nie wyłączać go, dopóki temperatura nie wzrośnie powyżej B.
Zwraca 0 lub 1.
HYSTERESIS(value, upper_bound, lower_bound, upper_output, lower_output, last_value)Przykład: utrzymanie temperatury 20 °C w zakresie histerezy 2 °C. Włączaj grzejnik, gdy temperatura spadnie poniżej 18 °C i wyłączaj, gdy temperatura przekroczy 22 °C.
heater := HYSTERESIS(temperature, 22, 18, 0, 1, heater);