но сначала немного вступления:
<начало вступления>
Возникла, в своё время, у меня потребность точно (удобно, надежно) определять нахождение меня дома. Да конечно есть замечательные и простые варианты, которые я конечно использовал, например если принять за основу, что я и мой телефон неразлучны, то:
1) наиболее просто - это ждать появления в домашнем Wi-Fi моего телефона (перехода IP-адреса привязанного к мену в online).
Но у меня iPhone, а он живет в домашней сети своей жизнью - если в данный момент на нем не используют Wi-Fi, то он перестает отвечать на пинги (т.е. переходит, для сети, в режим offline), что приводит к разрушению всей идеи контроля!
2) использовать модуль GPS с программой для iPhone.
Проверенно - очень жрет батарею!
3) использовать замечательный модуль http://majordomo.smartliving.ru/forum/v ... f=4&t=1528
Всё замечательно, но батарею всё-равно ест хорошо!
И вот тут мне подвернулся сервис https://ifttt.com/wtf
тестирование в течении 1 месяца показало отличные результаты, но при установке этого всего придется немного замарочиться (вариант для Apple).
<окончание вступления>
И так, что понадобиться (в моём варианте):
- зарегистрироваться на https://ifttt.com/wtf
- иметь установленным на сервер с MDM сервис Dropbox
- использовать модуль MDM Папки (watchfolders)
1) создать в сервисе IFTTT рецепт (Recipe), который будет создавать файл в Dropbox с определенным именем, например: _vovix_enter_home_location_{{OccurredAt}}
где vovix - идентификатор пользователя
enter - что сделал (пришел - enter или ушел - exit)
home - куда пришел (ушел)
location - признак для удобства поиска файла в дальнейшем
{{OccurredAt}} - системная переменная IFTTT - дата и время создания файла
т.е. файл будет таким например: _vovix_exit_home_location_january_27__2016_at_1006am.txt
выглядеть это на сайте IFTTT будет примерно так: 2) далее необходимо создать в модуле Папки например такую запись (обратите внимание на название папки Dropbox (путь) - у вас будет своя!): 3) создадим Скрипт (Сценарий): if_user_enter_or_exit у меня такой (внимание у меня этот скрипт завязан на структуру свойств пользователя, в которой указывается пол и альтернативные имена):
Код: Выделить всё
// установим внутреннюю кодировку символов
mb_internal_encoding("UTF-8");
$fn = explode("_", $params['FILENAME']); // раскладываем имя файла в массив
//say ("0 - ".$fn[0],-1); // путь к файлу
//say ("1 - ".$fn[1],-1); // имя User
//say ("2 - ".$fn[2],-1); // что сделал: enter/exit
//say ("3 - ".$fn[3],-1); // куда пришел/ушел
$user='unknown';
// переберем всех пользователей
$objects=getObjectsByClass("Users");
foreach($objects as $obj) {
// проверим, может это главное имя и перебирать альтернативы имён тогда не надо!
if (gg($obj['TITLE'].".fullName")==$fn[1]) {
$user=$obj['TITLE'];
} else {
$altName=gg($obj['TITLE'].'.altName');
// проверим - а есть-ли в альтернативных именах такая подстрока?
$inc = mb_stripos($altName,$fn[1]);
$user = ($inc === false) ? $user : $obj['TITLE'];
}
}
$gender=gg($user.'.gender');
$ending1=($gender<>'ж') ? 'ёл' : 'ла';
if ($fn[2]=='enter') {
switch ($fn[3]) {
case 'home':
callMethod($user.'.gotHome');
say (gg($user.'.fullName').' приш'.$ending1.' домой.',-1);
// отключим слежение - раз USER дома (экономия батареи)
sg ($user.'.monitor',0);
break;
case 'office':
say (gg($user.'.fullName').' приш'.$ending1.' в офис.',-1);
// отключим слежение - раз USER в офисе (экономия батареи)
sg ($user.'.monitor',0);
break;
default:
//say ("А куда пришел?", -1);
}
} elseif ($fn[2]=='exit') {
switch ($fn[3]) {
case 'home':
callMethod($user.'.outOfHome');
say (gg($user.'.fullName').' уш'.$ending1.' из дома.',-1);
// Включим слежение - раз USER ушел
// sg ($user.".monitor",1);
break;
case 'office':
say (gg($user.'.fullName').' уш'.$ending1.' из офиса.',-1);
// отключим слежение - раз USER в офисе (экономия батареи)
// sg ($user.".monitor",0);
break;
default:
//say ("А от куда ушел?", -1);
}
} else {
//say ("А что сделал-то?", -1);
}
я как всегда пошел другим путем...
ОБЯЗАТЕЛЬНО (естественно) ПРИЛОЖЕНИЕ IFTTT ДОЛЖНО БЫТЬ НА iPhone!