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
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ł.
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
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)

