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 ""
checkRuleFunkcja 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łnionycheckRuleconditionsMet(...) 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.