Code: Select all
rule("sensor.garage_door:breached & 22:40..06:00 & $SleepState == 'Sover' => larm.Siren:on")
rule("for(00:00:05,sensor.garage_door:safe) => larm.Siren:off")
Code: Select all
rule("sensor.garage_door:breached & 22:40..06:00 & $SleepState == 'Sover' => larm.Siren:on")
rule("for(00:00:05,sensor.garage_door:safe) => larm.Siren:off")
Code: Select all
rule("@21:30 => frontdoor.doorlock:secure")
Ok, laddat upp en ny version B58 med support för wakeup.sonnyboy wrote: ↑23 Jun 2019, 16:43 Mitt dörrlås har en förmåga att "Dö" lite sporadiskt, finns det något sätt att väcka enheten innan dörren ska låsas?
Regeln idag är så här enkelHar prövat åtskilliga gånger att göra om nätet men det vill sig inte ändå.Code: Select all
rule("@21:30 => frontdoor.doorlock:secure")
Finns möjligheten till "wakeUpDeadDevice" i ER?
Code: Select all
-- wakeup, wait 10s to give time for device to wakeup, and then secure lock
rule("@21:30 => frontdoor.doorlock:wake; wait(00:00:10); frontdoor.doorlock:secure")
Sorry, glömde att uppdatera versions filen. Borde inte klaga nu.
Code: Select all
[DEBUG] 15:45:41: Posting {"type":"poll","index":8} at Mon Jun 24 15:46:26
[DEBUG] 15:45:42: Sending {"ios":true,"state":"allaway","type":"presence"} to scene 413
[DEBUG] 15:45:43: Sending {"ios":true,"state":"allaway","type":"presence"} to scene 464
[DEBUG] 15:46:26: Posting {"type":"getIOSdevices","pwd":"xxxx","user":"xxxx@outlook.com","name":"Jonny"} at Mon Jun 24 15:46:26
[DEBUG] 15:46:26: Posting {"type":"poll","index":9} at Mon Jun 24 15:47:11
[DEBUG] 15:46:27: Sending {"who":"Jonny","ios":true,"state":"home","type":"presence"} to scene 413
[DEBUG] 15:46:27: Sending {"who":"Jonny","ios":true,"state":"home","type":"presence"} to scene 464
Fixed. B9. Har testat och det verkar ok nu.jompa68 wrote: ↑24 Jun 2019, 15:50@jangCode: Select all
[DEBUG] 15:45:41: Posting {"type":"poll","index":8} at Mon Jun 24 15:46:26 [DEBUG] 15:45:42: Sending {"ios":true,"state":"allaway","type":"presence"} to scene 413 [DEBUG] 15:45:43: Sending {"ios":true,"state":"allaway","type":"presence"} to scene 464 [DEBUG] 15:46:26: Posting {"type":"getIOSdevices","pwd":"xxxx","user":"xxxx@outlook.com","name":"Jonny"} at Mon Jun 24 15:46:26 [DEBUG] 15:46:26: Posting {"type":"poll","index":9} at Mon Jun 24 15:47:11 [DEBUG] 15:46:27: Sending {"who":"Jonny","ios":true,"state":"home","type":"presence"} to scene 413 [DEBUG] 15:46:27: Sending {"who":"Jonny","ios":true,"state":"home","type":"presence"} to scene 464
Ser ut som det postas state=allaway, fastän jag är hemma, mitt larm går bananas
Hittade Detta på det officiella forumet gällande TOD, där kanske du kan hitta lite tips.
Code: Select all
Rule.eval("07:00..10:00-1 => $TOD='Morning'").start()
Rule.eval("10:00..18:00-1 => $TOD='Day'").start()
Rule.eval("18:00..23:30-1 => $TOD='Evening'").start()
Rule.eval("23:30..07:00-1 => $TOD='Night'").start()
Code: Select all
Rule.eval("07:00..10:00-1 & wday('mon-fri') => $TOD='Morning'").start()
Rule.eval("10:00..18:00-1 & wday('mon-fri') => $TOD='Day'").start()
Rule.eval("18:00..23:30-1 & wday('mon-fri')=> $TOD='Evening'").start()
Rule.eval("23:30..07:00-1 & wday('mon-fri') => $TOD='Night'").start()
Rule.eval("09:00..11:00-1 & wday('sat-sun') => $TOD='Morning'").start()
Rule.eval("11:00..17:00-1 & wday('sat-sun') => $TOD='Day'").start()
Rule.eval("17:00..01:00-1 & wday('sat-sun')=> $TOD='Evening'").start()
Rule.eval("01:00..09:00-1 & wday('sat-sun') => $TOD='Night'").start()
Code: Select all
rule("lux:lux < 100 & 16:00..18:00 => $TOD='Evening'").start()-- Evening when lux < 100 before 18:00 (but after 16:00)
rule("sensor:breached & 05:00..07:00 => $TOD='Morning'").start() -- Morning when movements 05:00 to 07:00
rule("07:00..10:00-1 => $TOD='Morning'})").start()
rule("10:00..18:00-1 => $TOD='Day'").start()
rule("18:00..23:30-1 => $TOD='Evening'").start()
rule("23:30..07:00-1 => $TOD='Night'").start()
rule("$TOD=='Morning' => ... speak greating")
jang wrote: ↑15 Jul 2019, 13:00 Finns många sätt att åstadkomma det. Den länk som sonnyboy gav använder inte fibaro globals utan uppdaterar bara en lokal variabel i scriptet. Att sätta en fibaro global kan vara ok om en annan scen också ska agera på timeofday.
Ex. med global TOD som i skriptet refereras som $TODEn regel med 07.00..10:00 till vänster om '=>' triggas två ggr, först kl. 07.00 och sedan 10:00:01. Exakt varför beror på att det behövs för att få komplexa regler att funka men viktigast här är att den returnerar true om klockan är mellan 07:00 och 10:00 inklusive.Code: Select all
Rule.eval("07:00..10:00-1 => $TOD='Morning'").start() Rule.eval("10:00..18:00-1 => $TOD='Day'").start() Rule.eval("18:00..23:30-1 => $TOD='Evening'").start() Rule.eval("23:30..07:00-1 => $TOD='Night'").start()
Så klockan 07:00 triggas första regeln och sätter TOD till 'Morning'. Kl. 10:00 triggar andra regeln och sätter TOD till 'Day' etc.
Vi drar bort en sekund från den sista tiden så intervall inte överlappar. Första blir egentligen 07:00..09:59:59.
Första regeln triggar också 09:59:59+1 dvs. 10:00 men det är utanför intervallet och blir falskt så att andra regel sätter variabeln istället.
Rule.eval(<rule>) returnerar en table som representerar regeln med ett antal funktioner. bl.a. .start() som kör regeln direkt utan att den behöver bli triggad. Det kan behövas ibland för att få regler att komma i rätt "tillstånd" när scriptet startar.
Här kör vi igång alla regler vid uppstart så att TOD sätts rätt oavsett när skriptet startas upp eller startas om.
Så det är basic. Sedan kan man lägga på fler villkor. ex. för helger.Ibland vill man uppdatera TOD mer flexibelt. 'Morning' sätts här kl. 07:00 eller när någon rör sig i köket.Code: Select all
Rule.eval("07:00..10:00-1 & wday('mon-fri') => $TOD='Morning'").start() Rule.eval("10:00..18:00-1 & wday('mon-fri') => $TOD='Day'").start() Rule.eval("18:00..23:30-1 & wday('mon-fri')=> $TOD='Evening'").start() Rule.eval("23:30..07:00-1 & wday('mon-fri') => $TOD='Night'").start() Rule.eval("09:00..11:00-1 & wday('sat-sun') => $TOD='Morning'").start() Rule.eval("11:00..17:00-1 & wday('sat-sun') => $TOD='Day'").start() Rule.eval("17:00..01:00-1 & wday('sat-sun')=> $TOD='Evening'").start() Rule.eval("01:00..09:00-1 & wday('sat-sun') => $TOD='Night'").start()
Evening blir det när det mörknar på eftermiddagen.
Code: Select all
rule("lux:lux < 100 & 16:00..18:00 => $TOD='Evening'").start()-- Evening when lux < 100 before 18:00 (but after 16:00) rule("sensor:breached & 05:00..07:00 => $TOD='Morning'").start() -- Morning when movements 05:00 to 07:00 rule("07:00..10:00-1 => $TOD='Morning'})").start() rule("10:00..18:00-1 => $TOD='Day'").start() rule("18:00..23:30-1 => $TOD='Evening'").start() rule("23:30..07:00-1 => $TOD='Night'").start() rule("$TOD=='Morning' => ... speak greating")
Code: Select all
local rule = Rule.eval
rule("doors={hall.door,garage.door,altan.door}") -- define doors in/out of the house
rule("sensor={hall.motion,bedroom.motion,kitchen.motion}") -- define all motion sensors in the house
rule("sensors:breached & doors:safe => _homeSense=true") -- Any sensor breached while doors closed -> someone at home
rule("doors:breached => _homeSense=false") -- Any door open -> we don't know if someone home
Code: Select all
rule("$homeGeo=='true' => _homeState=true") -- Geo says that someone at home, then someone is at home
rule("$homeGeo=='false' & _homeSense => _homeState=true"") -- Geo says that all are away, but sensors says otherwise
rule("$homeGeo=='false' & !_homeSense => _homeState=false"") -- Geo says that all are away, and no one moved since doors opened
Code: Select all
rule(_homeState==false => locks:close")
rule(_homeState==true => locks:open")
Code: Select all
rule("subscribe(#presence{ios=true})")
rule("#presence{state='allaway',ios=true} => $homeGeo='false'")
rule("#presence{state='home',ios=true} => $homeGeo='true'")
Code: Select all
rule("$homeGeo=='false' & doors:breached => my phone:msg='Warning: phones away but door opened!'")
rule("!_homeSense & for(01:00,sensors:safe) => 'my phone:msg='Note: No motion for 1hour since door last opened. Away?'")")
Code: Select all
local rule = Rule.eval
rule("doors={hall.door,garage.door,altan.door}") -- define doors in/out of the house
rule("sensors={hall.motion,bedroom.motion,kitchen.motion}") -- define all motion sensors in the house
function between(a,b,c) return a <= b and b <= c end
-- Ex . door safe at 08:00:20 and last sensor safe at 08:00:40, sensor-door = 20s
rule("for(00:20,doors:safe & sensors:safe & between(0,max(sensors:safe)-max(doors:safe),30)) => locks:secure")
Code: Select all
rule("for(00:20,doors:safe & sensors:safe & between(0,max(sensors:safe)-max(doors:safe),30)) & 07:30..11:00 & wday('mon-fri') => locks:secure")
Code: Select all
rule("@15:00 & wday('sun') & wnum % 2 == 1 => log('15:00 on a Sunday in an odd week')")
sonnyboy wrote: ↑06 Aug 2019, 08:48 Hittade denna fina kodsnutt på Fibaros forumJag funderar på att använda den och skicka push till telefonerna när det är dags för EX bokbussen som vi alltid glömmer bort (vi har bokbuss ute på landet ) Men jag förstår inte hur jag ska modifiera koden så jag får den att använda jämna veckor, byta dag misstänker jag bara är att ändra ('sun')) till ('mon').Code: Select all
rule("@15:00 & wday('sun') & wnum % 2 == 1 => log('15:00 on a Sunday in an odd week')")
Code: Select all
rule("@09:00 & wday('wed') & wnum % 2 == 0 => log('Jämn vecka')")
rule("@09:00 & wday('wed') & wnum % 2 == 1 => log('Ojämn vecka')")
Code: Select all
rule("@09:00 & wday('wed') & wnum % 2 == 0 => log('Jämn vecka')")
rule("@09:00 & wday('wed') & wnum % 2 == 1 => log('Ojämn vecka')")