Powiadomienia
Wyczyść wszystko

Reguła LWT opóźnione sprawdzanie stanu

3 Wpisów
2 Użytkownicy
0 Likes
1,158 Wyświetleń
(@maras)
Wpisów: 190
Weteran Donator 2K22 Donator 2K19
Autor tematu
 

Programista ze mnie żaden i popełniłem taką regułę:

rule "LWT"
when
    Member of gLWT changed
then
    val Lwtitem = triggeringItem
    if (Lwtitem.state == "Offline"|| Lwtitem.state == "Nieaktywny" || Lwtitem.state == "disconnected")
    {
     logInfo("home.rules", "LWT ALERT!: " + Lwtitem.name + " jest Offline")
     sendBroadcastNotification("LWT Allert " + Lwtitem.name + " jest Offline")    
    }
end

 

Reguła ma jedną wadę. Często zdarza sie ze urządzenie na sekundę staje się niedostępne i wtedy dostaje powiadomienia. Chciałbym zrobić tak, żeby po 15 minutach reguła ponownie sprawdziła status i jeśli ten jest nadal offline to wtedy komunikat. Jeśli jest już online to nic nie robi.

 

 
Dodane : 01/11/2021 8:24 pm
adrian
(@adrian)
Wpisów: 3981
Szefu Admin Zasłużony dla Forum, Patron Strony
 

hey @maras

powinieneś zrobić coś takiego. 

Tylko nie jestem pewien o co biega z tymi grupami u Ciebie - bo zmiana w grupie powoduje odpalenie tej reguły, a nie jakiś konkretny item, 

Wiec nie wiem jaki tam ma być warunek po 15 minutach bo ten sam co powyżej chyba nie pyknie - powinno nam maje oko tam wystąpić sprawdzenie jakiegoś item

rule "LWT"
when
    Member of gLWT changed
then
    val Lwtitem = triggeringItem
    if (Lwtitem.state == "Offline"|| Lwtitem.state == "Nieaktywny" || Lwtitem.state == "disconnected")
    {
     createTimer(now.plusMinutes(15), [
        if (tutaj musi sprawdzic te itemy) {
            logInfo("home.rules", "LWT ALERT!: " + Lwtitem.name + " jest Offline")
            sendBroadcastNotification("LWT Allert " + Lwtitem.name + " jest Offline")  
        }
     ]) 
    }
end

EDIT: hm.... w sumie przydałoby się zobaczyć co tam masz w tej grupie gLWT? hm....w sumie to nie wiem czy zadziała bo teraz domyślam się, że Ty tą regułą chcesz obsłużyć więcej item's ???

 
Dodane : 02/11/2021 4:19 pm
(@maras)
Wpisów: 190
Weteran Donator 2K22 Donator 2K19
Autor tematu
 

Tak grupa ma 17 Items'ow. Przechowujących string'a
Przykładowo:

StringGaraz1LWT"Garaz1 LWT"                    (gLWT) { channel="mqtt:topic:newbroker:mything:garaz1LWT" }
 
Domyślam się, że nie działa bo do zmiennej val Lwtitem jeśli zapisze status Offline to w ciągu tych 15 minut inny może zmienić stan zapisać do Val i w ten sposób reguła się sypie. Chyba że w drugiej części / Drugi IF if (tutaj musi sprawdzic te itemy) może sprawdzić wszystkich członków grupy. Chyba się wkopałem z tym stringiem. Nie wiem czy nie lepiej by było przypisywać status ON OFF
 
Dodane : 02/11/2021 7:01 pm
Udostępnij: