Android

Обсуждение статей, технологий домашней автоматизации, программных и аппаратных решений
ArtSamovar
Сообщения: 184
Зарегистрирован: 07 ноя 2011, 08:45
Откуда: Ступино МО

Android

Сообщение ArtSamovar » 08 ноя 2011, 11:28

В любом смартфоне на андроиде куча служб от Google. вопрос конечно в программном решении...
Локатор. Карты гугл, а точнее местоположение через gps (более точное) и через вышки оператора. Как "припаять" местоположение к голосовому оповещению? Зона местоположения по вышкам радиусом в километр (приблизительно), зона дома примерно 3 км (как сделать не знаю пока, но зона дома не должна зависить от gps или вышек). Обьект, к примеру, жена... (если более точным, то смарт с включенным на нем локатором от гугла) попадает в зону дома, после Фестиваль оповещает об этом. (можно и не голос, а вывод на экран или желтую крутящуюся лампочку с таблОм danger)))) И обратный эффект... Дочка покинула школу, жена на работе, в близи дома друг и т.д.

Как я это представляю выглядит так. Есть таблица в базе данных, где координаты карты приравнены к "работа","дача","школа".... Скрипт переодически обновляет локатор и если обьект находится/покидает зону работы, дома, города, то выдается информация на экран или динамики... К сожаленю не слишком силён в программировании, но разобраться в том же php вполне могу... Но сам не напишу... Прошу помощи )))

Так же к аппарату можно будет сделать управление голосом, модулями, датчиками, через приложение разумеется, которое работает через интернет. На сайте делали htc, винд.мобайл, если не ошибаюсь. Но тут андроид и уже с встроенными службами...
Лень — двигатель прогресса...

Andrey_B
Администратор
Сообщения: 5327
Зарегистрирован: 18 мар 2011, 12:06

Re: Android

Сообщение Andrey_B » 08 ноя 2011, 11:41

На этом форуме sergejey уже приводил пример подобного приложения.
Big Brother GPS http://bk.gnarf.org/creativity/bigbrothergps/
Отправляет в фоновом режиме GPS-координаты на указанный в настройках сервер (в нашем случае на домашний сервер).
К сожалению подобного приложения нет для платформы iOS. Во всяком случае я не нашел.

ArtSamovar
Сообщения: 184
Зарегистрирован: 07 ноя 2011, 08:45
Откуда: Ступино МО

Re: Android

Сообщение ArtSamovar » 08 ноя 2011, 12:38

Немного другое... Нужен сигнал с вышек, т.к. gps не везде и при фоновом режиме ест батарею. На андроид ставить ничего не надо, там и так приложение Карты гугл шлет свое местоположение без gps и интернета (по вышкам). На компе достаточно зайти в свой профиль гугла, далее карты, затем локатор и он показывает местоположение и время обновления. С мобилой делать ничего не надо, за исключением поставить галочку в настройках. Нужен скрипт (какой?), который по данным сайта и заложенным координатам в бд на домашнем сервере будет брать данные с сайта гугла.
Лень — двигатель прогресса...

Andrey_B
Администратор
Сообщения: 5327
Зарегистрирован: 18 мар 2011, 12:06

Re: Android

Сообщение Andrey_B » 08 ноя 2011, 13:49

Это правда, что GPS ест батарею и плохо работает внутри помещений, но и вышки дают зачастую очень приблизительное местоположение.
Скриптик такой написать несложно с помощью Google Latitude API.
Поскольку Google Локатор (ака Google Latitude) доступен и для iPhone/iPad, на днях поизучаю. О результатах сообщу.

ArtSamovar
Сообщения: 184
Зарегистрирован: 07 ноя 2011, 08:45
Откуда: Ступино МО

Re: Android

Сообщение ArtSamovar » 08 ноя 2011, 14:49

А тут и нужно приблизительное значение. Улица и дом тут не к чему. это и не нужно... Для того что бы понять, что человек приближается в зону дома, например, хватит и погрешности в километр (max). Был на другом конце города, зарегистрировала система, а сейчас около дома, это не даст ей ошибится, что обьект "гуляет" на границе зоны, заставляя говорить, что он приближается или отдаляется с переодичностью в пять минут. (это условие в скрипте, исправит "мигание" обьекта в зоне, т. к. будут использоваться вышки, а не точный gps, где надобность этого условия ("антимигание") отпадает. У меня по вышкам смарт ошибается в 100-200 метров редко, а обычно примерно в 50 метров... этого я думаю в полне хватит, что бы система знала, что человек на работе, на даче и т.д.
По идее все просто, забиваем в базу данных координаты которые нас интересуют, в условии делам погрешность на несколько градусов (десятых возможно) широты и долготы (это и будет зоной работы, дачи, вокзала, дома и т.д.), затем скрипт будет брать координаты обьекта и сравнивать... Далее выводить на переферию. Удобнее будет сделать 2 режима (пассивный и активный) первый обновляет данные от 30 минут, второй же чаще (нужно смотреть переодичность обновления местоположения на смарте, а оно обновляется часто тогда, когда обьект движется и реже, крода стоит), например, когда кого то ждешь в гости (гости едут из другого города на электричке, сели на автобус и идут пешком к дому)
Плюс сделать условие. Если движеться мимо одной из зон, система либо молчала и говорила, когда обьект не движется, либо говорила, что обьект проехал (прошел, пролетел) зону. это даст возможность не слышать от Фестиваля фразы, типо "Жена в школе", хотя воскресенье и дети в институте учатся. )))

З.Ы. За ошибки извиняюсь, пишу с телефона...
Лень — двигатель прогресса...

ArtSamovar
Сообщения: 184
Зарегистрирован: 07 ноя 2011, 08:45
Откуда: Ступино МО

Re: Android

Сообщение ArtSamovar » 08 ноя 2011, 15:09

Так же вполне реально добавть еще одну функцию. В локаторе, когда зажимаешь точку на карте появляется окошечко, где есть замечательная функция "что, рядом?"
Идея проста...

"Умный дом, где жена?"
В ответ, в динамики "ласковый женский голос" основываясь на: указанных нами же приблизительными координатами, на том, что находится около обьекта (вполне реально набросать схему небольшого города и обозначить точки, где координата2 это кафе, координата6 это автошкола... рзбросав эти маячки система будет выбирать из предложенного гуглом списка мест находящихся рядом, нужное нам. А если в зоне нет маячков, то будет говорить "недалеко от магазина", где магазин, последняя регистрационная точка обьекта.) и на том, где вообще (москва, екатеринбург, турция, австралия), затем будет выдавать на переферию.
Не надо будет писать в БД все города, пусть информацию, которой нет в нашей БД скрипт берет напрямую от гугла (надо будет покавырять гугловский ответ) в скрипте задать глобальные координаты — страны, города и т.д. (ведь гугл знает, что д.Малиновка в России )
Лень — двигатель прогресса...

Andrey_B
Администратор
Сообщения: 5327
Зарегистрирован: 18 мар 2011, 12:06

Re: Android

Сообщение Andrey_B » 09 ноя 2011, 00:09

Существует два варианта взять местоположение пользователя из Google Latitude
1. В настройках сервиса указываем "Показывать наиболее вероятное местоположение" для отображения в блоге или на сайте. Тогда Google предоставляет userid.
Этот userid мы используем в запросе к badge/api и получаем координаты и прочую информацию о местоположении пользователя. Минус в том, что любой, кто знает этот userid может получить доступ к этой информации. Но зато это самый простой путь - в программе две строчки. Так как доступа к нашему серверу нет, а мы сами не собираемся публиковать useried, возможно, этот вариант подойдет. Я не знаю можно ли сгенерировать userid не с помощью Google. Если это возможно, тогда с точки зрения безопасности это серьезная проблема.
2. Идем по пути OAuth2. Это очень нудный путь. Нужно зарегистрироваться в качестве девелопера, включить Google Latitude API, зарегистрировать проект, получить ClientID, Client Secret и самое неприятное - прописать URI, которому Google будет сообщать токен. Web-приложение будет посылать запрос на авторизацию, пользователь должен разрешить доступ под своим аккаунтом после чего приложению дается access token с коротким сроком жизни. Стало быть домашнему серверу, если у него плавающий IP, нужно присваивать DyDNS или пользоваться каким-то посредником, рефрешить токены. Да и вообще не очень понятно, можно ли в данном варианте обойтись без подтверждения пользователя, то есть работать полностью в автоматическом режиме. Вероятнее всего нет, но вдруг здесь найдется разбирающийся в этой области. Для многопользовательских Web-приложений такая схема понятна. Нам же нужно авторизоваться в скрипте под конкретным пользователем, я не нашел как это можно сделать.
А по первой схеме работать вполне можно. Поэкспериментирую.

ArtSamovar
Сообщения: 184
Зарегистрирован: 07 ноя 2011, 08:45
Откуда: Ступино МО

Re: Android

Сообщение ArtSamovar » 09 ноя 2011, 07:09

Андрей, в настройках локатора можно скрывать местоположение от определенных лиц, и наоборот, от всех, кроме определенного пользователя. У меня местоположение скрыто от нескольких лиц, доступно для жены и пару друзей. Так же можно указывать только общие координаты, например, обьект находится в москве, в питере и т.д. не указывая точное местоположение. Другими словами, знать где находится обьект будут определенные лица.
Про то, что использовать для блога и получить usered это странно. я представлял это так: скрипт заходит в мой профиль на гугле, идет в локатор, берет значение, которое выводится на экран интересующих меня обьектов...
И по поводу генерации НЕ гуглом... В мтс есть тоже локатор, стоит десять рублей, но нужно подтверждение. Зная политику гугла и общий принцип той же операционки от него я более чем уверен, что БЕЗ подтверждения (а оно обязательно, как в гугле один раз, так и в мтс каждый раз) невозможно определить местоположение...

"Минус в
том, что любой, кто знает этот userid
может получить доступ к этой
информации." нет нет нет ))) пока пользователь не подтвердит, никто, зная userid не увидит его на карте. Попробуйте найти меня ;) https://plus.google.com/113376479866924 ... l=ru&tab=h Даже если взломают мыло, придется украсть телефон )))
Последний раз редактировалось ArtSamovar 09 ноя 2011, 07:55, всего редактировалось 1 раз.
Лень — двигатель прогресса...

THK
Модератор
Сообщения: 588
Зарегистрирован: 18 мар 2011, 19:00
Откуда: Серпухов, МО

Re: Android

Сообщение THK » 09 ноя 2011, 07:15

Andrey_B писал(а): Да и вообще не очень понятно, можно ли в данном варианте обойтись без подтверждения пользователя, то есть работать полностью в автоматическом режиме.
Попробуйте копнуть в сторону expect, мне, в свое время, он очень помог. Правда с авторизацией и выполнением команд на удаленной машине с помощью telnet, но все же...

PS Вдруг можно прикрутить wget вместо telnet'а.
PPS Вот пример моего скрипта: http://www.slovensk.su/forum/viewtopic. ... 750dd2c835

ArtSamovar
Сообщения: 184
Зарегистрирован: 07 ноя 2011, 08:45
Откуда: Ступино МО

Re: Android

Сообщение ArtSamovar » 09 ноя 2011, 07:19

скрипт вполне может НЕ авторизовываться на гугле, ему грубо говоря достаточно будет открыть браузер, заставить его перейти на страницу локатора и брать данные. То есть брать данные не с сервера гугла напрямую, а из того что браузер выводит на экран... Скрипт будет нажимать на ссылки, а не брать переменные. Скрипт гуглу никакие запросы делать и не должен, зачем? ...и пустить это в фоновый режим ))
И по поводу того, что обьект не пришлет местоположение на дом. сервер. Оно и не надо. Вполне безопаснее обьект шлет данные гуглу, а мы со своего компа, единыжды авторизовавшись на главной гугла будем видеть обьект.


небезопасно будет только в 2-ух случаях. Это если придумают программу на андроид, она попадет пользователю и он согласится отдавать данные. А второй, если будет доступ к компу, корорый Андрей, у вас охраняют пингвины в подвале ))
Лень — двигатель прогресса...

Andrey_B
Администратор
Сообщения: 5327
Зарегистрирован: 18 мар 2011, 12:06

Re: Android

Сообщение Andrey_B » 09 ноя 2011, 08:41

ArtSamovar, к тому, что я написал в предыдущем сообщении мне нечего добавить.
Еще раз. Если вы в сервисе Google Локатор в закладке "Приложения" в секции "Мини-карта с вашим местоположением" включите опцию "Показывать наиболее вероятное местоположение", Google предоставит вам userid, по которому любой желающий без какой-либо авторизации сможет узнать ваше местоположение. Это наиболее простой способ автоматически домашним сервером получать местоположение.
Там же на красном фоне выводится сообщение "Обратите внимание: любой пользователь, у которого будет доступ к странице, на которую вы добавите мини-карту, сможет скопировать фрагмент кода и узнавать ваше местоположение даже после того, как вы удалите код."
Не путайте userid Google Latitude с идентификатором Google+ или чем-то еще. Это совершенно несвязанные друг с другом вещи.
Что есть в настройках локатора я знаю, но повторяю, законно работать с сервисом можно только после авторизации приложения по протоколу OAuth2, который требует регистрации URL callback функции, получающей токен и обязательного подтверждения авторизации пользователем. Можно ли реализовать так называемый Auto Logon в сервис я не знаю. Авторизация позволяет считывать местоположение в случае отключенного публичного userid, а также считывать местоположение "друзей", которые разрешили эту операцию. В этом смысле было бы логично для домашнего сервера завести свой аккаунт, которому члены семьи дают доступ на считывание местоположения. У меня есть работающий код авторизации Web-приложения с помощью библиотеки Google API Client, но вопрос в том, как заставить приложение авторизоваться под конкретным пользователем. Google закономерно считает, что приложение - это программа, не связанная с каким-либо конкретным аккаунтом и чтобы иметь доступ к вашим персональным данным, приложение должно быть зарегистрировано в Google и иметь подтверждение на использование персональных данных от пользователя. Поэтому ArtSamovar, предложите что-нибудь по существу. По поводу браузера - это вы серьезно?

Andrey_B
Администратор
Сообщения: 5327
Зарегистрирован: 18 мар 2011, 12:06

Re: Android

Сообщение Andrey_B » 09 ноя 2011, 08:46

Виктор, нет expect в данной ситуации ничем помочь не сможет.

ArtSamovar
Сообщения: 184
Зарегистрирован: 07 ноя 2011, 08:45
Откуда: Ступино МО

Re: Android

Сообщение ArtSamovar » 09 ноя 2011, 09:15

Домой приеду, посмотрю... А это только в декабре, через месяц. Попробую все-таки взять данные с браузера... Может и другой способ есть. Пока все только на бумаге и в голове.
Лень — двигатель прогресса...

vtec
Сообщения: 459
Зарегистрирован: 19 сен 2011, 09:28

Re: Android

Сообщение vtec » 09 ноя 2011, 11:03

Andrey_B писал(а):Отправляет в фоновом режиме GPS-координаты на указанный в настройках сервер (в нашем случае на домашний сервер).
К сожалению подобного приложения нет для платформы iOS. Во всяком случае я не нашел.
Посмотрите:
http://habrahabr.ru/blogs/macosxdev/129146/
http://liketheplace.com/

Andrey_B
Администратор
Сообщения: 5327
Зарегистрирован: 18 мар 2011, 12:06

Re: Android

Сообщение Andrey_B » 09 ноя 2011, 12:09

vtec, я читал эту статью сразу после публикации и, более того, связывался с автором это программы.
В том виде, в котором она существует, она ничем не отличается от любых других. Вся информация собирается на сервере программы, а не на моем. И это не настраивается.
На предложение сделать платную версию программы с возможностью отправки координат на настраиваемый URL автор ответил, что у него иные взгляды на вещи. А это и понятно. Фактически на базе такой программы можно создавать свои, в том числе платные сервисы. Кроме того, не уверен, что такие вещи приветствуются модераторами AppStore.

Ser41
Сообщения: 28
Зарегистрирован: 09 сен 2011, 23:43

Re: Android

Сообщение Ser41 » 11 ноя 2011, 22:05

Всем . Здравствуйте.
Провел такой эксперимент. Взял маршрутизатор DIR-620 перепрошил на Zyxel Keenetic
http://habrahabr.ru/blogs/DIY/123699/
На андроиде установил ipwebcam. Прописался через DynDNS www.no-ip.com. Получил доступ извне.
Получилось неплохо. И звук и видео. А также через программу webkey. Получил доступ к самому телефону. Так сказать минисервер получился. Для потокового видео работал на yote. На 3G модеме не много хуже.

Boris
Сообщения: 150
Зарегистрирован: 06 июн 2011, 17:35

Re: Android

Сообщение Boris » 11 ноя 2011, 23:09

У меня на TL-WR1043ND крутится прога и пишет в базу температуру, датчики с радио модулями.
11.11.png
11.11.png (10.61 КБ) 24856 просмотров

stpavel
Сообщения: 75
Зарегистрирован: 08 апр 2011, 18:43

Re: Android

Сообщение stpavel » 11 ноя 2011, 23:38

Andrey_B писал(а):vtec, я читал эту статью сразу после публикации и, более того, связывался с автором это программы.
В том виде, в котором она существует, она ничем не отличается от любых других. Вся информация собирается на сервере программы, а не на моем. И это не настраивается.
На предложение сделать платную версию программы с возможностью отправки координат на настраиваемый URL автор ответил, что у него иные взгляды на вещи. А это и понятно. Фактически на базе такой программы можно создавать свои, в том числе платные сервисы. Кроме того, не уверен, что такие вещи приветствуются модераторами AppStore.
Есть бесплатный проект opengts , c большим количеством поддерживаемых трекеров , в том числе есть уже готовый софт под андроид. . При желании, можно допилить все под свои нужды.

Andrey_B
Администратор
Сообщения: 5327
Зарегистрирован: 18 мар 2011, 12:06

Re: Android

Сообщение Andrey_B » 12 ноя 2011, 23:06

stpavel, в том то и дело, что под Android таких приложений несколько. А вот под iOS нет. А разрабатывать самому - не та важность задачи. Ведь нужно осваивать средства разработки, ставить "хакинтош" или покупать мак, джейлбрейкать устройство или платить за аккаунт девелопера и бодаться с модераторами appstore. Проще уж брать информацию через Google Latitude.

xace
Сообщения: 56
Зарегистрирован: 12 май 2011, 18:07

Re: Android

Сообщение xace » 13 ноя 2011, 20:08

Boris писал(а):У меня на TL-WR1043ND крутится прога и пишет в базу температуру, датчики с радио модулями.
11.11.png

А можно поподробнее, про датчики ... ?

Ответить