SmartLiving.ru

Обсуждение проекта
 
Текущее время: Вс дек 17, 2017 2:55 pm

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 209 ]  На страницу 1, 2, 3, 4, 5 ... 21  След.
Автор Сообщение
СообщениеДобавлено: Пт мар 14, 2014 3:52 am 
Не в сети

Зарегистрирован: Пт янв 20, 2012 3:05 pm
Сообщения: 168
Благодарил (а): 9 раз.
Поблагодарили: 1 раз.
Добрый день, всем!
Нашел интересную библиотеку
https://github.com/sinky/php-location-tracking-icloud по извлечению местоположений из iCloud(Aplle)
Принцип работы
В поле deviceID таблицы gpsdevices заносятся данные типа
[icloud_username]:[icloud_password]:[Id прибора в списке icloud, начиная с 0]
Из этой таблицы выбираются данные о приборах Apple(я в поле Title внес Apple
далее несколько модифицировал код gps.php
1.Выборка по всем приборам apple
2. Запрос к iCloud осуществляется со стороны MJ
3. Добавил в cron.

В gps.php есть следующий код
Код:

   if 
($device[$iD]['USER_ID']) {
    $user=SQLSelectOne("SELECT * FROM users WHERE ID='".$device[$iD]['USER_ID']."'");
    if ($user['LINKED_OBJECT']) {
     setGlobal($user['LINKED_OBJECT'].'.Coordinates', $rec['LAT'].','.$rec['LON']);
     setGlobal($user['LINKED_OBJECT'].'.CoordinatesUpdated', date('H:i'));
     setGlobal($user['LINKED_OBJECT'].'.CoordinatesUpdatedTimestamp', time());
     setGlobal($user['LINKED_OBJECT'].'.BattLevel', $rec['BATTLEVEL']);
     setGlobal($user['LINKED_OBJECT'].'.Charging', $rec['CHARGING']);
     $prev_log=SQLSelectOne("SELECT * FROM gpslog WHERE ID!='".$rec['ID']."' AND DEVICE_ID='".$device[$iD]['ID']."' ORDER BY ID DESC LIMIT 1");
     if ($prev_log['ID']) {
      $distance=calculateTheDistance ($rec['LAT'], $rec['LON'], $prev_log['LAT'], $prev_log['LON']);
      if ($distance>100) {
       //we're moving
       //DebMes("Distance: ".$distance. " (point A: ".$rec['LAT'].":".$rec['LON']." point B: ".$prev_log['LAT'].":".$prev_log['LON'].")");
       setGlobal($user['LINKED_OBJECT'].'.isMoving', 1);
       clearTimeOut($user['LINKED_OBJECT'].'_moving');
       setTimeOut($user['LINKED_OBJECT'].'_moving', "setGlobal('".$user['LINKED_OBJECT'].".isMoving', 0);", 15*60); // stopped after 15 minutes of inactivity
      }
     }
    }
   }
 

1.Как использовать данный функционал, что бы хранить логины и пароли в deviceID.
2. Хотелось бы добавить список типов приборов (Apple,Andoroid, WinMobile) при внесении информации о приборах
3. Как бы бы этот скрипт запускать через cycle.php c определенной периодичностью.
Спасибо


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пт мар 14, 2014 9:48 am 
Не в сети

Зарегистрирован: Вс апр 07, 2013 9:30 pm
Сообщения: 526
Откуда: Moscow
Благодарил (а): 1 раз.
Поблагодарили: 56 раз.
Могу предложить зарефакторить таблицы gpsdevices, gpsactions, gpslocations и gps_log.
Добавить еще одну или возможно несколько табличек типа device_type и связать все вместе, удалив дублирующиеся поля.
:)

Хранить пароли в поле device_id считаю неправильным решением, хотя и имеющим право на существование от безысходности :)
Лучше сделать отдельную таблицу или поля в существующей таблице и дописать функционал.

С определенной периодичностью либо в крон, что железобетонно будет выполняться, либо что-то типа onNewMinute. использовать.

_________________
________________________________________________________
Majordomo (GitHub) на HP Microserver Gen8. OS Debian Wheezy


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пт мар 14, 2014 1:42 pm 
Не в сети

Зарегистрирован: Вс апр 07, 2013 9:30 pm
Сообщения: 526
Откуда: Moscow
Благодарил (а): 1 раз.
Поблагодарили: 56 раз.
Эх, не удержался...
Черновой вариант, так сказать. Ссылка на модель, так как svg не показывает.

Коментарии к модели:
Таблицы:
    01. USERS (Пользователи) - список пользователей MDM
    02. DEVICE_TYPE(Виды устройств) - Виды доступных в MDM устройств(Apod, Android, Nokia и т.д.)
    03. DEVICE (Устройства) - Описание устройства, id и за кем из пользователей оно закреплено
    04. EXT_APP (Внешние приложения) - Внешние приложения от которых приходят данные
    05. EXT_APP_ICOUD (Внешнее приложение iCloud) - Набор данных относящийся к iCloud'у (логин, пароль и т.д)
    06. EXT_DEVICE (Устройства внешних приложений) - Таблица для привидения соответствий ID устройства внешнего приложения и ID устройства в MDM
    07. DEVICE_LOCATION (Местоположение устройства) - Текущие координаты устройства
    08. DEVICE_LOCATION_H (История местоположений устройства) - История перемещений устройства
    09. POS (Точка интереса) - Координаты магазина или еще какого объекта
    10. VPOS_USER - Расстояние от пользователя до точки интереса.
    11. VUSER_ACTION - Действие которое будет срабатывать при нахождении пользователя на указанном расстоянии до точки интереса.

Есть какие-либо замечания, пожелания или комментарии?

_________________
________________________________________________________
Majordomo (GitHub) на HP Microserver Gen8. OS Debian Wheezy


Последний раз редактировалось LutsenkoDenis Чт дек 11, 2014 11:59 am, всего редактировалось 2 раз(а).

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Ср дек 10, 2014 5:24 pm 
Не в сети

Зарегистрирован: Вт ноя 18, 2014 11:43 pm
Сообщения: 259
Откуда: Краснодарский край
Благодарил (а): 30 раз.
Поблагодарили: 59 раз.
Наконец дошли руки и я написал функцию для сабжа.
Для ее использования нужно извлечь прикрепленный архив в ROOT/lib (то есть добавить саму подключаемую функцию), а дальше использовать в коде:
Код:
findMyiPhone($AppleID, $ApplePass, $id, $timeout); //Ищет устройство и заполняет данные для приложения GPS-трэкер, а так же обновляет объект User привязанный в приложении
soundToMyiPhone($AppleID, $ApplePass, $subject, $id); // воспроизводит звуковое оповещение на устройстве
messageToMyiPhone($AppleID, $ApplePass, $message, $subject, $sound, $id); // Выводит сообщение на устройстве, звуковое сопровождение опционально       

Где:
    AppleID - понятно.
    ApplePass - пароль к AppleID
    id - номер устройства, по умолчанию 0, если устройство к AppleID привязано одно, можно не указывать.
    timeout - таймаут поиска, по умолчанию 240.
    subject - текст заголовка, по умолчанию пустой
    message - текст сообщения.
    sound - воспроизводить звук, по умолчанию true.
Параметры которые заданны по умолчанию, можно не указывать.

Теперь умный дом может вывести список покупок прямо на экран устройства Apple когда ты приехал в магазин.

Обнаружилось что при заходе с нового устройства, компания apple первые 100 раз шлет письмо с предупреждением, а потом устает. Как это побороть пока не знаю.

PS: Засыл писем вроде нашел где отключается. Кто бы проверил на свежей связке... :)

UPD: не актуально. Идем в маркет дополнений. Там все проще.

_________________
Majordomo (GitHub) на cubietruck + MegaD + 1-wire
CONNECT: http://connect.smartliving.ru/profile/311


Последний раз редактировалось zelevova Ср апр 19, 2017 11:27 pm, всего редактировалось 9 раз(а).

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Ср дек 10, 2014 6:49 pm 
Не в сети
Site Admin

Зарегистрирован: Пн сен 05, 2011 6:48 pm
Сообщения: 4177
Откуда: Минск, Беларусь
Благодарил (а): 68 раз.
Поблагодарили: 1139 раз.
Очень интересно... А как часто можно опрашивать этот сервис? Может какие лимиты есть?

_________________

Сергей Джейгало, разработчик MajorDoMo
Профиль Connect -- информация, сотрудничество, услуги


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Ср дек 10, 2014 9:11 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн янв 27, 2014 1:43 am
Сообщения: 758
Откуда: г.Ижевск
Благодарил (а): 52 раз.
Поблагодарили: 212 раз.
zelevova писал(а):
Наконец дошли руки и я написал функцию для сабжа.
Для ее использования нужно извлечь прикрепленный архив в ROOT/lib (то есть добавить саму подключаемую функцию), а дальше использовать в коде:
Код:
findMyiPhone($AppleID, $ApplePass, $id); 

Где:
AppleID - понятно.
ApplePass - пароль к AppleID
id - номер устройства.

Функция заполняет все возможные поля для приложения GPS-трэкер (код заполнения взят из gps.php)

Осталось только придумать как хранить пароли не в коде.

Прошу тестировать.



Очень нужная вещь!
А то сейчас Btraced, если включен, садит батарею за ЕДИНИЦЫ часов!!!

Пароли AppleID в коде это ОПАСНО!!!

_________________
CONNECT Windows 7 + Raspberry Pi + 1-Wire + MP751 + ESP8266


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Чт дек 11, 2014 9:49 am 
Не в сети

Зарегистрирован: Вт ноя 18, 2014 11:43 pm
Сообщения: 259
Откуда: Краснодарский край
Благодарил (а): 30 раз.
Поблагодарили: 59 раз.
sergejey писал(а):
Очень интересно... А как часто можно опрашивать этот сервис? Может какие лимиты есть?

Оставил тестировать на ночь, опрос каждые 15 минут. Пока не забанили :))
Мы вроде как представляемся iPhone'ом, а сервис непосредственно Apple и делаем вид что просто пользователь все время обновляет. Я бывает сам с устройства Apple мониторю когда Жена ко мне едет и обновляю очень часто, так что думаю лимитов нет.

Vovix писал(а):
А то сейчас Btraced, если включен, садит батарею за ЕДИНИЦЫ часов!!!

Пароли AppleID в коде это ОПАСНО!!!


Я думаю так батарея будет садиться чуть помедленнее, но не сильно. Ибо gps регулярно опрашивается. Тут важен период опроса, чем реже опрашиваем, тем меньше садиться батарея.
Пароли как вариант хранить в свойствах пользователя. Так они не будут видны в connect :) Пока не могу придумать куда их еще запрятать. Может у кого то есть мысли по этому поводу?

Вопрос как фильтровать дублирующие записи. Например за ночь накапливается кучка записей о том что мы дома. Btraced отправляет данные только при перемещении или так же через заданные интервалы?

_________________
Majordomo (GitHub) на cubietruck + MegaD + 1-wire
CONNECT: http://connect.smartliving.ru/profile/311


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Чт дек 11, 2014 10:11 am 
Не в сети
Аватара пользователя

Зарегистрирован: Пн янв 27, 2014 1:43 am
Сообщения: 758
Откуда: г.Ижевск
Благодарил (а): 52 раз.
Поблагодарили: 212 раз.
zelevova писал(а):
...Btraced отправляет данные только при перемещении или так же через заданные интервалы?...


Пользую Btraced регулярно.
Там настраивается и расстояние перемещения, после которого происходит фиксация и отправка
и время, через которое отправлять и фиксировать координаты!
но батарею просто "убивает" буквально за 2-3 часа!
( у меня установлено 200 метров и 2 минуты, больше не интересно, меньше иногда ставлю 100 метров)

А вот приложение "Мои друзья" (родное) у меня всегда работает (и работало) и хватало батареи на 1 день (иногда сутки) стабильно!
Может, конечно, за мной часто ни кто не следил...
Наверно надо пробовать...

И еще такие "прелести" как узнать заряд батареи iPhone, или "в зарядке" или нет, на iPhone средствами Btraced не передаются, а вот интересно через "Найти iPhone" что-то идет кроме координат?

_________________
CONNECT Windows 7 + Raspberry Pi + 1-Wire + MP751 + ESP8266


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Чт дек 11, 2014 11:23 am 
Не в сети

Зарегистрирован: Вт ноя 18, 2014 11:43 pm
Сообщения: 259
Откуда: Краснодарский край
Благодарил (а): 30 раз.
Поблагодарили: 59 раз.
Конечно идет. Обновил функцию. Теперь она в пользователя фиксирует не только координаты, но и заряд в процентах и статус заряжается сейчас или нет.
Еще можно узнать "класс устройства" (iPad, iPhone, iPod, MacBook), "статус устройства" и "модель устройства".

Пока бывает не все данные успевает подтянуть. Видимо нужно таймаут опроса увеличить и проверку на точное позиционирование сделать. Сейчас максимальное время опроса 120 сек.

UPD: за 2 часа мониторинга с интервалом в 2 минуты батарея на полностью заряженном iPade села на 0%. Т.е. не изменила свой заряд совсем. Устройство почти все это время находилось в режиме ожидания для чистоты эксперимента. При таком интервале опроса данные о заряде получаются корректные, при увеличении интервала до 15 минут данные о заряде не всегда успевают обновляться с первого раза.

Добавил поля в объекте пользователь и теперь вызываю в onNewMinute так:
Код:
// Каждые 2 минут
if (!($m%2)) {
    findMyiPhone(gg('username.AppleID'), gg('username.ApplePass'));
   
// можно попробовать переделать что бы передавать просто "username"
}

Сергей насколько безопасно хранить в полях объектов пароли с точки зрения архитектуры системы?

_________________
Majordomo (GitHub) на cubietruck + MegaD + 1-wire
CONNECT: http://connect.smartliving.ru/profile/311


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Чт дек 11, 2014 9:31 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн янв 27, 2014 1:43 am
Сообщения: 758
Откуда: г.Ижевск
Благодарил (а): 52 раз.
Поблагодарили: 212 раз.
у меня почему-то не работает!!!???

при чем на почту навалилось куча писем от Apple:
Ваш Apple ID использовался для входа в приложение «Найти iPhone»

тестовый запуск вываливается вот с этим:

Код:
Fatal error: Maximum execution time of 60 seconds exceeded in C:\_majordomo\htdocs\lib\findMyiPhone\FindMyiPhone.php on line 174

_________________
CONNECT Windows 7 + Raspberry Pi + 1-Wire + MP751 + ESP8266


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 209 ]  На страницу 1, 2, 3, 4, 5 ... 21  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB