Baza wiedzy Sinum

Automatyzacje - wstęp

Automatyzacje to skrypty uruchamiane samoczynnie przez centralę Sinum, które mogą reagować na zdarzenia w systemie, np. zmianę stanu urządzenia czy upływ czasu.

Tworzy się je analogicznie do scen — w zakładce Automatyzacje możesz utworzyć nowy skrypt, który będzie działał cyklicznie lub reagował na konkretne zdarzenia.

Automatyzacje pozwalają na tworzenie bardziej zaawansowanych i dynamicznych zachowań systemu bez konieczności ręcznego uruchamiania scen.

Pierwsza automatyzacja

  1. Przejdź do zakładki Automatyzacje w ustawieniach centrali.

  2. Naciśnij przycisk , aby utworzyć nową automatyzację typu kod.

  3. Otworzy się edytor skryptu, podobny do tego znanego z tworzenia scen.

  4. Wpisz lub wklej przygotowany przykładowy kod.

print(event.type)

Po wpisaniu kodu:

  • Zapisz zmiany przyciskiem 💾.

  • Zwróć uwagę, że nie ma przycisku do ręcznego uruchamiania — automatyzacja będzie wykonywana automatycznie przez Sinum przy każdym wystąpieniu odpowiedniego zdarzenia w systemie, bez potrzeby ingerencji użytkownika.

Monitorowanie działania automatyzacji

  1. Otwórz panel logów, klikając przycisk >_.

  2. Znajdź wpisy dotyczące swojej automatyzacji na liście.

  3. W panelu logów będą pojawiać się wpisy podobne do poniższego przykładu, które informują o wykonaniu automatyzacji i jej działaniach.

5/9/25, 3:28:59 PM: [PRINT] automation_state_changed
5/9/25, 3:29:01 PM: [PRINT] minute_changed
5/9/25, 3:29:06 PM: [PRINT] device_state_changed

Są to zdarzenia w systemie Sinum, które spowodowały uruchomienie automatyzacji. Dzięki nim można śledzić, kiedy i dlaczego automatyzacja została wywołana.

„Łapanie” zdarzeń

Automatyzacja może być zaprogramowana tak, aby reagować wyłącznie na wybrane typy zdarzeń w systemie.

Można to osiągnąć na dwa sposoby:

Sprawdzanie zmiany

Mając dostęp do urządzenia wywołującego zdarzenie, możesz w skrypcie łatwo sprawdzić, czy to właśnie zmiana jego stanu spowodowała uruchomienie automatyzacji.

local switch = slink[43]

if switch:changed() then
    print("Zmiana we włączniku światła!")
end

Możliwe jest również sprawdzenie, czy zdarzenie dotyczy konkretnej właściwości urządzenia. Dzięki temu automatyzacja może reagować tylko na zmiany wybranych parametrów, na przykład stanu przekaźnika lub temperatury termostatu.

local switch = slink[43]

if switch:changedValue("state") then
    print("Przełączono włącznik światła!")
end

Obiekt event

Obiekt event jest dostępny w automatyzacjach i zawiera informacje o typie zdarzenia oraz dodatkowe szczegóły.

Dzięki niemu możesz napisać prostą automatyzację, która na przykład:

  • włącza światło o zmroku,

  • wyłącza światło o poranku.

local light = sbus[108]

if event.type == "sunrise" then
    -- Poranek, wyłącz światło.
    light:setValue("state", false)
elseif event.type == "sunset" then
    -- Zmrok, włącz światło
    light:setValue("state", true)
end

Automatyzacja jest wywoływana przy każdym zdarzeniu w systemie, jednak podejmuje działania tylko wtedy, gdy typ zdarzenia to "sunrise" lub "sunset".

W przypadku zdarzeń dotyczących urządzeń ("device_state_changed"), pole details zawiera nazwę właściwości, która uległa zmianie.

Aby to zweryfikować, utwórz następującą automatyzację:

if event.type == "device_state_changed" then
    print("Zdarzenie urządzenia. Zmieniona wartość: " .. event.details)
end

Obserwując log automatyzacji, zmieniaj ręcznie właściwości urządzeń w aplikacji Sinum lub steruj nimi bezpośrednio. W panelu logów pojawią się wpisy podobne do poniższych, pokazujące aktywność automatyzacji i wywołane zdarzenia.

5/9/25, 3:28:59 PM: [PRINT] Zdarzenie urządzenia. Zmieniona wartość: target_temperature
5/9/25, 3:29:01 PM: [PRINT] Zdarzenie urządzenia. Zmieniona wartość: state
5/9/25, 3:29:06 PM: [PRINT] Zdarzenie urządzenia. Zmieniona wartość: target_opening
5/9/25, 3:30:16 PM: [PRINT] Zdarzenie urządzenia. Zmieniona wartość: name
5/9/25, 3:30:48 PM: [PRINT] Zdarzenie urządzenia. Zmieniona wartość: color

Zwróć uwagę, że zdarzenia nie dotyczą wyłącznie zmian właściwości operacyjnych urządzeń. Również takie modyfikacje jak zmiana nazwy urządzenia, koloru czy przypisanego pomieszczenia generują zdarzenia, które wywołują automatyzacje.

Źródło zdarzenia

Obiekt event pozwala również odczytać źródło zdarzenia — jest to obiekt w systemie, który spowodował wyemitowanie zdarzenia. Informacje o tym źródle znajdują się w polu source.

Aby zweryfikować działanie tej funkcji, utwórz automatyzację według poniższego przykładu:

print(event.type, event.source)

W panelu logów będą pojawiać się wpisy podobne do poniższych, które ilustrują informacje o źródle zdarzenia oraz powiązane z nim szczegóły.

5/12/25, 1:19:28 PM: [PRINT] automation_state_changed, {
    "id" : 5,
    "type" : "automation"
}
5/12/25, 1:20:01 PM: [PRINT] minute_changed, {
    "id" : 0,
    "type" : ""
}
5/12/25, 1:20:36 PM: [PRINT] device_state_changed, {
    "id" : 2,
    "type" : "system_module"
}

Jeśli to możliwe, obiekt event.source zawiera pola type oraz id, które jednoznacznie identyfikują urządzenie, automatyzację, scenę lub inny obiekt odpowiedzialny za dane zdarzenie. Do tego obiektu można uzyskać dostęp w następujący sposób:

if event.type == "device_state_changed" then
    local device = _ENV[event.source.type][event.source.id]
    print("Zmiana w urządzeniu: " .. device:getValue("name"))
end

Poniżej znajduje się przykładowy wpis w panelu logów, ilustrujący dane zwracane przez obiekt event.source:

5/12/25, 1:34:55 PM: [PRINT] Zmiana w urządzeniu: Regulator temperatury 3
5/12/25, 1:34:55 PM: [PRINT] Zmiana w urządzeniu: Czujnik wilgotności 4
5/12/25, 1:34:55 PM: [PRINT] Zmiana w urządzeniu: Czujnik temperatury 5
5/12/25, 1:34:55 PM: [PRINT] Zmiana w urządzeniu: Czujnik temperatury 5
5/12/25, 1:34:55 PM: [PRINT] Zmiana w urządzeniu: Czujnik wilgotności 4