Napisz skrypt tagu wirtualnego

Obliczaj wartość tagu na podstawie innych tagów — skrypty odczytu, skrypty zapisu i praktyczne przykłady.

ProjektyTwój projektTagi

Tag wirtualny otrzymuje wartość ze skryptu, a nie z urządzenia. Ten przewodnik pokazuje, jak go napisać. Pełną listę funkcji znajdziesz w dokumentacji tagów wirtualnych.

1. Dodaj tag wirtualny

W widoku Tagi projektu kliknij Nowy, wybierz Tag i wskaż typ Tag wirtualny. Nadaj mu nazwę i typ danych, a następnie napisz jego skrypt odczytu.

2. Odwołuj się do innych tagów

Skrypty odczytują inne tagi według ścieżki przekazywanej do funkcji value(). Zamiast wpisywać ścieżkę, naciśnij Shift + Alt + T, aby wybrać tag i go wstawić; naciśnij Shift + Alt + A, aby wstawić alarm. Autouzupełnianie (Ctrl/⌘ + Spacja) wyświetla wszystkie funkcje, których możesz użyć.

// The current value of another tag
value("Meters/Main meter");

3. Napisz skrypt odczytu

Skrypt odczytu zwraca wartość tagu. Kilka typowych wzorców:

Łączenie tagów — suma dwóch liczników:

value("Meters/Meter A") + value("Meters/Meter B");

Przeliczanie jednostek — Wh na kWh:

value("Boiler/Energy") / 1000;

Wyznaczanie stanu — 1, gdy alarm jest aktywny, w przeciwnym razie 0:

alarmValue("Boiler/High temperature") ? 1 : 0;

Korzystanie z historii — środek zakresu z ostatniej godziny, z użyciem funkcji czasu:

const now = getCurrentTime();
const from = getTimeBefore("1h", now);
const high = historyMax("Outdoor/Temperature", from, now);
const low = historyMin("Outdoor/Temperature", from, now);
(high + low) / 2;

Ustaw Interwał przeliczania (w sekundach), jeśli wartość ma być odświeżana cyklicznie; w przeciwnym razie jest przeliczana, gdy zmieniają się tagi, do których się odwołuje.

4. Dodaj skrypt zapisu (opcjonalnie)

Aby tag wirtualny był zapisywalny, dodaj także skrypt zapisu — tag wirtualny jest zapisywalny tylko wtedy, gdy ma oba skrypty. Skrypt zapisu jest uruchamiany, gdy ktoś zapisuje wartość do tagu, i otrzymuje przychodzącą wartość z inputValue(). Przekaż ją do rzeczywistych tagów za pomocą writeValue().

Na przykład przyjmij wartość procentową (0–100) zapisaną do tagu wirtualnego i wyślij ją do wentylatora jako wartość zadaną 0–10 V:

writeValue("AHU/Fan", (inputValue() / 100) * 10);

5. Zapisz i sprawdź

Zapisz tag i sprawdź, czy w widoku Tagi pokazuje sensowną wartość. Edytor zaznacza błędy składni na bieżąco podczas pisania; jeśli wartość wygląda nieprawidłowo, sprawdź ścieżki tagów oraz to, czy typ danych odpowiada temu, co zwraca skrypt.