Zmienne Lua tworzone za pomocą słowa kluczowego local istnieją tylko w czasie działania skryptu. Po jego zakończeniu są tracone — każdorazowe uruchomienie sceny zaczyna się „od zera”.
Aby przechowywać dane między kolejnymi uruchomieniami sceny, możesz użyć zmiennych środowiskowych.
Są one zapisywane w pamięci centrali i dostępne w innych scenach oraz przy kolejnych uruchomieniach.
Ten artykuł demonstruje użycie zmiennych środowiskowych na przykładzie dwóch scen, które manipulują temperaturą zadaną termostatu.
Aby utworzyć zmienną środowiskową:
Wejdź do ustawień centrali.
Przejdź do zakładki Zmienne środowiskowe.
Naciśnij przycisk +.
Otworzy się okno dialogowe tworzenia zmiennej.
Wpisz nazwę zmiennej.
Wybierz typ zmiennej – w tym przykładzie będzie to int.
Ustaw dwie wartości:
Wartość – bieżąca wartość zmiennej
Wartość domyślna – wartość, do której zmienna zostanie przywrócona po restarcie centrali.
8.Kliknij Zapisz.
Nowa zmienna zostanie dodana do listy i będzie widoczna w tabeli zmiennych środowiskowych.
Zapisz lub zapamiętaj ID zmiennej — będzie potrzebne, aby użyć jej w skrypcie.
Przejdź do zakładki Sceny.
Utwórz nową scenę typu kod.
Wklej przygotowany kod do edytora:
local var = variable[0] -- podmień 0 na odpowiednie ID !!
local thermostat = virtual[0] -- podmień 0 na ID termostatu !!
-- zapisz obecną temperaturę zadaną
var:setValue(thermostat:getValue("target_temperature"))
-- zmień zadaną na 21,5 °C
thermostat:setValue("target_temperature", 215)
Scena ta zapisze obecną temperaturę zadaną w zmiennej środowiskowej, a następnie ją zmieni.
Utwórz nową scenę typu kod.
Wklej przygotowany kod do edytora:
local var = variable[0] -- podmień 0 na odpowiednie ID !!
local thermostat = virtual[0] -- podmień 0 na ID termostatu !!
-- przywróć stan przekaźnika ze zmiennej
thermostat:setValue("target_temperature", var:getValue())
Scena 2 służy do przywrócenia wartości zapisanej wcześniej w zmiennej środowiskowej przez Scenę 1.
Po jej uruchomieniu zadana wróci do poprzedniego, zapisanego wcześniej ustawienia.
Wartość zmiennej środowiskowej jest przechowywana w pamięci operacyjnej i może zostać utracona po restarcie centrali Sinum.
Aby zachować wartość zmiennej także po restarcie, należy zapisać ją do pamięci masowej.
Do tego służy metoda :save(), którą wywołuje się na zmiennej środowiskowej.
...
var:setValue(true)
var:save()
...
Możesz zapisać to w jednej linii:
...
var:setValue(true):save()
...