Baza wiedzy Sinum

Zmienne środowiskowe

Zmienne środowiskowe

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.

Szybki start

Ten artykuł demonstruje użycie zmiennych środowiskowych na przykładzie dwóch scen, które manipulują temperaturą zadaną termostatu.

Tworzenie zmiennej środowiskowej

Aby utworzyć zmienną środowiskową:

  1. Wejdź do ustawień centrali.

  2. Przejdź do zakładki Zmienne środowiskowe.

  3. Naciśnij przycisk +.

  4. Otworzy się okno dialogowe tworzenia zmiennej.

  5. Wpisz nazwę zmiennej.

  6. Wybierz typ zmiennej – w tym przykładzie będzie to int.

  7. Ustaw dwie wartości:

    • Wartość – bieżąca wartość zmiennej

    • Wartość domyślna – wartość, do której zmienna zostanie przywrócona po restarcie centrali.


      okno dialogowe tworzenia zmiennej

    8.Kliknij Zapisz.
       Nowa zmienna zostanie dodana do listy i będzie widoczna w tabeli zmiennych środowiskowych.

lista zmiennych

Zapisz lub zapamiętaj ID zmiennej — będzie potrzebne, aby użyć jej w skrypcie.

Scena 1 - nadpisanie zadanej

  1. Przejdź do zakładki Sceny.

  2. Utwórz nową scenę typu kod.

  3. 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.

Scena 2 - przywrócenie zadanej

  1. Utwórz nową scenę typu kod.

  2. 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.

Zapisywanie wartości zmiennej środowiskowej

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()
...