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.
Przejdź do zakładki Automatyzacje w ustawieniach centrali.
Naciśnij przycisk +, aby utworzyć nową automatyzację typu kod.
Otworzy się edytor skryptu, podobny do tego znanego z tworzenia scen.
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.
Otwórz panel logów, klikając przycisk >_.
Znajdź wpisy dotyczące swojej automatyzacji na liście.
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.
Automatyzacja może być zaprogramowana tak, aby reagować wyłącznie na wybrane typy zdarzeń w systemie.
Można to osiągnąć na dwa sposoby:
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
eventObiekt 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.
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