Det finns ganska många försök till lösningar på det. HC2:an har en inbyggd geofence funktion som många verkar klaga på - den beror på appen för att skicka position och det strular en del. Jag har själv inte använt den då mina familjemedlemmar inte använder fibaro appen (och jag väldigt sällan). Om man använder den så måsta man förmodligen tracka om ngn är hemma eller alla är borta då den bara ger events per användare.
Andra använder 3rd parts geofence appar som via HC2:ans API sätter en variabel som scener kan trigga på (eller pollar appen).
Andra har använt IFTT med viss framgång verkar det - men jag vet inte vilken tjänst de kopplat till IFTT. Bluetooth trackers har också använts.
Vi är en iPhone familj så jag använder en ER scen 'iOSLocator' som gör det ganska enkelt att tracka telefonerna, var de är och om någon är hemma.
Tyvärr fungerar den inte med Android då den beror av Apple's iCloud service. Om ni har iPhones så kan jag lägga upp en tutorial här.
Oavsett, så kan det vara bra att kombinera mobilposition med att ingen rör sig i huset för att bestämma om det är tomt.
Ett sätt är att om det rör sig i huset och alla dörrar är stängda så finns det någon garanterat hemma tills någon dörr öppnas igen.
Då kan man undvika falsklarm på natten då alla sover och ibland även mobiler.
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
'_homeSense' variabeln har ett '_' som prefix vilket gör att den triggar andra regler när den ändrar värden.
Det här ger oss bara om någon är hemma men inte om huset är tomt. Till det behövs ngn form av geofence, gärna kombinerat med andra regler.
Anta att vi har en fibaro global variabel 'homeGeo' som sätts till true/false beroende på om geofence tycker att ngn är hemma. Om geofence tycker att alla är borta men vår sensor har flaggat att ngn är hemma så ignorerar vi geofence.
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
Sedan kan vi agera beroende på _homeState
Code: Select all
rule(_homeState==false => locks:close")
rule(_homeState==true => locks:open")
Ex. om man har iPhones och satt upp iOSlocator så kan man sätta homeGeo variabeln såhär så här
Code: Select all
rule("subscribe(#presence{ios=true})")
rule("#presence{state='allaway',ios=true} => $homeGeo='false'")
rule("#presence{state='home',ios=true} => $homeGeo='true'")
Även med dessa regler kan det bli fel ibland. Geofence kan strula, telefoner glöms hemma, eller dörrar lämnas öppna. Man kan då lägga till lite meddelanden.
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?'")")
och sedan ha ngt sätt att remote manuellt sätta _homeState.
Det här är ett exempel och det är svårt att ge ett generellt "bästa exempel". Ibland kan man utnyttja familjevanor som t.ex skol och arbetstider för att ytterligare ge hjälp till de regler som ska avgöra om någon är hemma.