Powiadomienia
Wyczyść wszystko

openHAB Problematyczna reguła

4 Wpisów
3 Użytkownicy
1 Likes
304 Wyświetleń
(@carpov)
Wpisów: 23
Praktykant
Autor tematu
 

Witajcie

Mam problemik z regułą. W skrócie: mam zrobiona integrację monitoring <-> nawadnianie 🙂  która "pilnuje" mi ryb w stawie/oczku przed kotami i czaplami. Działa to tak: wykrycie ruchu (przekroczenie wirtualnej linii) aktywuje obwód zraszaczy na 5s ...po czym je wyłącza. 

Działa to prawidłowo - choć w ostatnim czasie nie do końca. Zdarza się że po zakończeniu pętelki po ok 2s zraszacze same się aktywują..i tak leją aż ich z palca nie wyłączę .

rule "Guard"
when
        Item dahuacamera2_LineCrossingAlarm changed from OFF to ON
then
if (DummySW.state == ON) {
    sendBroadcastNotification("WYKRYTO RUCH !!! Sprawdź to")
    sendCommand(Gardenmodule1_Zraszacze2, ON)
               createTimer(now.plusSeconds(5)) [|
                   sendCommand(Gardenmodule1_Zraszacze2, OFF)
               ]
}
end

 

Czy ktoś może rzucić okiem na tą regułę? Może to można zrobić inaczej, lepiej.

Z góry dziękuję za podpowiedzi

 
Dodane : 25/08/2023 12:08 pm
ldywicki reacted
(@ldywicki)
Wpisów: 78
Kontrybutor
 

Cześć, muszę przyznać że przypadek, który opisujesz jest jednym z bardziej egzotycznych, jakie widziałem. 🙂

Co do samego problemu - sprawdź najpierw w logach czy (events.log) czy item Gardenmodule1_Zraszacze2 rzeczywiście dostaje drugą komendę. Ważne jest też to, w której wersji OH działało a w której nie działa. Ostatnio były zmiany związane z zarządzaniem wątkami przy wykonaniu reguł.

 
Dodane : 25/08/2023 12:50 pm
adrian
(@adrian)
Wpisów: 3982
Szefu Admin Zasłużony dla Forum, Patron Strony
 

Trochę nie wiadomo ja te różne sprzęty się zachowują, ale taka alternatywa ode mnie

Różnica, że

  • nie tworzy kolejnego timera jeśli ponownie wykryje czaplę, a jeszcze 5 sekund nie minęło.
  • jeśli wykryje w ciągu tych odliczających się 5 sekund ponownie dziub czapli to przedłuży lanie wodą o kolejne 5 sekund
var Timer  zraszacz_timer = null
var long ile_czaple_oblewac = 5 // sek

rule "Guard"
when
        Item dahuacamera2_LineCrossingAlarm changed from OFF to ON
then
if (DummySW.state == ON) {
    sendBroadcastNotification("WYKRYTO RUCH !!! Sprawdź to")

   if (Gardenmodule1_Zraszacze2.state!=ON) {
      Gardenmodule1_Zraszacze2.sendCommand(ON)
   }

   if (zraszacz_timer === null) {  
        zraszacz_timer = createTimer(now.plusSeconds(ile_czaple_oblewac), [     
                Gardenmodule1_Zraszacze2.sendCommand(OFF)                                                                                                 
                zraszacz_timer = null          
           ])
   } else {
     zraszacz_timer.reschedule(now.plusSeconds(ile_czaple_oblewac))
   }
}
end
 
Dodane : 25/08/2023 10:42 pm
(@carpov)
Wpisów: 23
Praktykant
Autor tematu
 

Dodane przez: @ldywicki

Cześć, muszę przyznać że przypadek, który opisujesz jest jednym z bardziej egzotycznych, jakie widziałem. 🙂

Tak to prawda 🙂 pojawił się problem i trzeba go było w humanitarny sposób jakoś rozwiązać - najważniejsze że skuteczne w 100% jeśli chodzi o ptaszydła i jakieś 90% jeśli chodzi o koteczki (po 2 latach nauczyły się obchodzić system)

 

 

 
Dodane : 26/08/2023 5:04 pm
Udostępnij: