Stefan wrote: ↑04 Jun 2020, 10:47
Hej
har nu haft tid (karantän) att övergå till ER. Fungerar kanon. Har lite svårt att förstå IOSLocator. Hittar ingen "tutorial" någonstans, finns det?
Nja, det finns lite posts i FIbaro forumet...
Men du konfigurerar upp ioslocator scenes genom att definiera en tabell med "places" och "users".
Om du har en fibaro global med din "HomeTable" kan du stoppa in den i den också. Det viktiga är att du har 2 nycklar, "places", och "users" på toppnivå i tabellen.
Om du lägger in den i din globala variabel HomeTable så ska du sätta _test=false i början.
Om _test=true så använder den den definierade lua variabeln HomeTable i ioslocator koden nedan.
Första värdet i "places" ska vara det som är hemma. Används för att kolla om huset är tomt eller inte.
Code: Select all
local _test = true -- use local HomeTable variable instead of fibaro global
local homeLatitude,homeLongitude -- set to first place in HomeTable.places list
HomeTable = [[
{"places":[
{"longitude":17.9876023512,"dist":0.6,"latitude":60.7879477,"name":"Home"},
{"longitude":17.955049,"dist":0.8,"latitude":59.405818,"name":"Ericsson"},
{"longitude":18.080638,"dist":0.8,"latitude":59.52869,"name":"Vallentuna"},
{"longitude":17.648488,"dist":0.8,"latitude":59.840704,"name":"Polacksbacken"},
{"longitude":17.5951,"dist":0.8,"latitude":59.850153,"name":"Flogsta"},
{"longitude":18.120588,"dist":0.5,"latitude":59.303781,"name":"Rytmus"}
],
"users":{
"daniela":{"phone":777,"icloud":{"pwd":"XXXX","user":"XXX@XXX.com"},"name":"Daniela"},
"jan":{"phone":411,"icloud":{"pwd":"XXXX","user":"XXX@XXX.com"},"name":"Jan"},
"tim":{"phone":888,"icloud":{"pwd":"XXXXX","user":"XXX@XXX.com"},"name":"Tim"},
"max":{"phone":888,"icloud":{"pwd":"XXXXX","user":"XXX@XXX.com"},"name":"Max"}
},
}
]]
så, om du får igång ioslocator så kommer den i loggen att skriva ut vilka users den hittar allteftersom (den kollar en användare ca var 30s)
Så, i din ER scen där du vill trigga på location definerar du regler för att få location/presence events
ER commander 'subscribe' säger att scenen vill ha events av typen som specificeras. ioslocator kommer att skicka event av den typen till alla ER scener som "prenumererar".
Code: Select all
Rule.eval("subscribe(#presence{ios=true})") -- receive presence events from the iOSLOcator
Rule.eval("subscribe(#location{ios=true})") -- receive location events from the iOSLOcator
Sedan definerar du regler som triggar på de inkommande events från ioslocator.
Code: Select all
Rule.eval("#location{ios=true,user='$user',place='$place'} => log('User %s, place %s',user,place)")
Rule.eval("#presence{ios=true,state='home'} => log('Someone at home %s',env.event.who)")
Rule.eval("#presence{ios=true,state='allaway'} => log('Home is empty')")
För #location events så är det user och place som är intressant. place kommer att vara en plats definerad i tabellen ovan eller 'away'
För #presence är state intressant, är 'home' eller 'allaway'. Om state='home' finns det ett till fält 'who' med vilka som är hemma.