2013-03-28 2 views
0

Я внедрил домашнюю систему контроля и управления с некоторыми датчиками движения и датчиками температуры, которые подключены к мини-ПК в качестве сервера. На этом ПК у меня есть веб-сервис .NET ASMX, который имеет некоторые методы, возвращает ситуацию детекторов и температуру окружающей среды.Управляемый событиями веб-сервис

Чтобы достичь ситуации с устройствами, я пытаюсь создать приложение для Android, которое может подключаться к веб-сервису через Wi-Fi и показывать температуру. , когда температура превышает критический диапазон или детектор движения обнаруживает движение, это приложение должно показывать соответствующее уведомление.

Проблема здесь: каждый раз, когда мне нужна системная ситуация, я запрашиваю веб-службу. но таким образом я должен каждую секунду запрашивать веб-службу, чтобы знать, что температура превысила критический диапазон или нет, и обнаружены ли датчики движение или нет. Вопрос: есть ли лучшее решение для достижения этого? или существует ли способ, которым веб-служба может информировать клиентов о возникновении события?

Обратите внимание, что я использую библиотеку KSOAP2 в своем приложении для Android.

Заранее спасибо

ответ

1

Для проверки новых данных вам необходимо использовать шаблон Push Push вместо опроса сервера.

Здесь есть несколько вариантов. Самый простой и самый стандартный способ - заглянуть в систему push-уведомлений Google, называемую Google Cloud Messaging (GCM). Обратите внимание, что это доступно только для устройств, на которых есть службы Google (например, если вы используете Kindle Fire, t использовать его)

Или вы могли бы рассмотреть более заказную версию push-уведомлений на основе протокола MQTT. Вам нужно будет настроить свой собственный сервер MQTT и иметь код Android и код сервера, который будет разговаривать с сервером MQTT.

Каждый раз, когда данные изменяются, вы отправляете push-уведомления подписчикам, чтобы они не проверяли данные постоянно.

+0

Спасибо за информацию – Kaiser

+0

Я нашел другое решение, но я не уверен, поэтому исправьте меня, если я ошибаюсь. Возможно, я мог бы использовать программирование сокетов вместо использования веб-сервиса. прослушивая конкретный порт с обеих сторон и определяя мой собственный протокол связи, я могу отправлять свои сообщения с сервера на клиент или наоборот. – Kaiser

+0

Да, это правильно, но это означает, что у вас будет постоянное соединение с сервером, который будет разряжаться от батареи, если он работает в фоновом режиме. –

0

Push-услуги, т.е. http://developer.android.com/google/gcm/index.html Но существует определенный предел толчков, я думаю, каждый второй вызов будет убить этот предел. Может быть, просто отправлять запросы каждые 5 секунд или 10 секунд? Температура в помещении не изменяется даже при таком расходе :)

+0

Это полезное обслуживание, но возникает другая проблема, когда интернет-соединение уходит. в любом случае спасибо за ваш ответ. – Kaiser

+0

Это преимущество использования GCM. Как только интернет-соединение вернется, оно уведомит устройство, как только это произойдет. –

Смежные вопросы