W przypadku zaznaczenia podczas definiowania reguły opcji "Użyj skryptu", użytkownik może wpisać własny kod funkcji, która będzie wykonywana w ramach reguły. Funkcja języka Python musi mieć nazwę checkRule
, nie przyjmować żadnych argumentów oraz zwracać wartość typu string.
def checkRule():
return ""
checkRule
Funkcja checkRule
jest głównym miejscem, w którym należy zaimplementować logikę sprawdzania warunków alarmowych lub reguł dla urządzenia IoT w systemie Signomix Sentinel. Funkcja ta powinna korzystać z udostępnionych narzędzi do pobierania wartości pomiarów i zwracać wynik w określonym formacie.
W środowisku skryptowym masz dostęp do następujących zmiennych i funkcji pomocniczych:
Obiekty globalne:
config
– konfiguracja sentinela (np. parametry reguł)device
– obiekt urządzenia (np. device.EUI
)valuesArr
– lista wartości pomiarów dla urządzeniachannelMap
– mapa kanałów pomiarowych urządzeniaFunkcje pomocnicze:
getValue(measurement)
– pobiera ostatnią wartość wskazanego pomiaru dla bieżącego urządzeniaget_measurementIndex(eui, measurement, deviceChannelMap)
– zwraca indeks pomiaru w strukturze danychget_value(eui, measurement, values, deviceChannelMap)
– pobiera wartość pomiaru dla wskazanego urządzeniaget_delta(eui, measurement, values, deviceChannelMap)
– pobiera przyrost (delta) wartości pomiaru dla wskazanego urządzeniaconditionsMet(measurement, value)
– zwraca sformatowany wynik, gdy warunek jest spełnionyconditionsMetWithCommand(measurement, value, commandTarget, command)
– jak wyżej, z dodatkową komendąconditionsNotMet()
– zwraca pusty wynik, gdy warunek nie jest spełnionycheckRule
conditionsMet(...)
lub conditionsMetWithCommand(...)
conditionsNotMet()
def checkRule():
v1 = getValue("temperature")
v2 = getValue("humidity")
if v1 is None or v2 is None:
return conditionsNotMet()
if v2 - v1 > 10:
return conditionsMet("temperature", v1)
return conditionsNotMet()
def checkRule():
temp = getValue("temperature")
if temp is not None and temp > 30:
return conditionsMetWithCommand("temperature", temp, "fan", "ON")
return conditionsNotMet()
javaLogger.info("...")
do logowania informacji podczas działania skryptu.None
.Podsumowanie:
Twoim zadaniem jest zaimplementowanie funkcji checkRule
, która na podstawie danych pomiarowych i logiki biznesowej zwraca odpowiedni string informujący system o spełnieniu lub niespełnieniu warunku. Wykorzystuj dostępne funkcje pomocnicze i dbaj o czytelność kodu.