Powiadomienia
Wyczyść wszystko

UWAGAStrona 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

Kontakt

openHAB [Rozwiązany] Sterowanie oświetleniem przez czujnik ruchu i czasówkę

5 Wpisów
3 Użytkownicy
1 Reactions
861 Wyświetleń
(@szpila86)
Wpisów: 367
Weteran Patron Strony Donator 2K22, Donator 2K23, Donator 2K24
Autor tematu
 

Hej

czy to powinno działać?

Założenia są takie że jeśli wykryje ruch, a światło jest zgaszone ma je zaświecić na 60s.

Po odliczeniu czasu ma je wyłączyć chyba że w tym czasie wykryje kolejny ruch to ma anulować timer i uruchomić nowy.

 

Wynik jest taki że światło się świeci i gaśnie po 60s ale jak wykryje ruch to chyba nie zaczyna liczyć na nowo.

 

rule "Motion Sensor Light Control"
when
  Item C_Kuchnia changed from OFF to ON
then
  var Timer timer = null
  if (OswKuch.state == OFF) {
    sendCommand(OswKuch, ON)
    logInfo("Motion Sensor Light Control","Start timer 60s")
    timer = createTimer(now.plusSeconds(60)) [|
      sendCommand(OswKuch, OFF)
    ]
  } else {
    if (timer !== null) {
      timer.cancel()
      timer = null
      logInfo("Motion Sensor Light Control","Timer anulowany")
    }
    logInfo("Motion Sensor Light Control","Start nowego timera 60s")
    timer = createTimer(now.plusSeconds(60)) [|
      sendCommand(OswKuch, OFF)
    ]
  }
end 

W logach pojawia się  "start timer 60s" oraz "start nowego timera 60s" ale nigdy "timer anulowany"

 
Dodane : 08/01/2023 4:35 pm
adrian
(@adrian)
Wpisów: 4038
Szefu Admin Zasłużony dla Forum, Patron Strony
 
var Timer timer = null

rule "Motion Sensor Light Control"
when
  Item C_Kuchnia changed from OFF to ON
then 
    if (OswKuch.state == OFF) {
       sendCommand(OswKuch, ON)
       logInfo("Motion Sensor Light Control","Start timer 60s")
       if (timer===null) {
         timer = createTimer(now.plusSeconds(60)) [|
           sendCommand(OswKuch, OFF)
           timer = null
         ]
       }     
    } else {
        logInfo("Motion Sensor Light Control","PIR triggered one more time, light already ON")
        if (timer !== null) {
            logInfo("Motion Sensor Light Control","Timer counts")
            timer.reschedule(now.plusSeconds(60))
            logInfo("Motion Sensor Light Control","Timer reschedued for the next 60sec to midnight ;)")
        }
    }    
end 
 
Dodane : 08/01/2023 6:46 pm
(@szpila86)
Wpisów: 367
Weteran Patron Strony Donator 2K22, Donator 2K23, Donator 2K24
Autor tematu
 

@adrian 

Dzięki

Czas z OH mija a ja dalej błądzę 😭 

OH4 może będzie gotowe na moje błędy 🤣 

 
Dodane : 08/01/2023 6:59 pm
adrian reacted
(@edass)
Wpisów: 215
Weteran
 

Sorry za mały off... ale zapytam czy próbowałeś programować reguły w Blockly? Ja jestem cienki z programowania a w Blockly jestem w stanie wyklikać reguły.

 
Dodane : 10/01/2023 9:56 pm
(@szpila86)
Wpisów: 367
Weteran Patron Strony Donator 2K22, Donator 2K23, Donator 2K24
Autor tematu
 

@edass 

Ja osobiście "graficznie" niczego nie programowałem więc nie pomogę ale jeśli zadasz w odpowiednim dziale pytanie to zazwyczaj ktoś chętnie pomoże

 
Dodane : 11/01/2023 6:36 pm
Udostępnij: