UWAGA: Strona oraz Forum Smart'ny Dom nie będzie dostępne 23 Grudnia 2024 ze względu na przenoszenie serwisu na mocniejszą maszynę.
W tym czasie polecam poświęcenie swojego czasu na pomoc partnerowi w przygotowaniu udanych Świąt 😉
Za niedogodności z góry przepraszam, admin
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)