Пример создания сервисов нового поколения на основе интеллектуальных пространств: M3-Weather погодный виджет для мобильных пользователей

По основной функциональности M3-Weather представляет собой виджет рабочего стола для мобильного устройства Nokia N900, который, используя данные GPS-модуля, определяет текущее географическое положение пользователя и отображает данные о погоде в ближайшем к нему населенном пункте. Основным отличием данного приложения является то, что оно реализовано на платформе сетевых интеллектуальных пространств Smart-M3 – первой открытой платформе разработки сервисов в рамках умных пространств (Smart Spaces).



Работа M3-Weather на Nokia N900



Проект разрабатывается студентами Петрозаводского государственного университета в лаборатории ПетрГУ-Nokia-NSN и относится к семейству R&D проектов программы FRUCT. Идея создания подобного приложения возникла в феврале 2010 года в рамках учебной дисциплины «Технология производства программного обеспечения». Для работы над проектом была организована группа из трех студентов и менеджера (преподавателя данной дисциплины). Каждый студент получил свою сферу ответственности в рамках проекта, еженедельно проводились проектные собрания, на которых обсуждались достигнутые результаты и дальнейшие действия по работе над приложением. Стоит заметить, что рабочий процесс в данном случае максимально приближен к производственному, так что студенты могут получить представление о том, как происходит разработка программных продуктов в реальных условиях, а также научиться работать в команде и взаимодействовать с заказчиком, что тоже очень важно для современно разработчика.



С самого начала, целью проекта M3-Weather было создание приложения для платформы Smart-M3. Как и все приложения для данной платформы, M3-Weather является распределенным приложением и состоит из 5 частей, в терминологии сетевых интеллектуальных пространств называемых Knowledge Processors или KP. Все эти части взаимодействуют друг с другом по средствам SIB’а (Semantic Information Broker), который является общим хранилищем знаний системы, представленных в формате информационных триплетов.



Основной алгоритм работы приложения достаточно прост:

  1. получить координаты от GPS-модуля мобильного устройства
  2. с помощью веб-сервиса геокодирования (в нашем приложении использован сервис Geonames.org) получить название ближайшего населенного пункта
  3. с помощью погодного веб-сервиса (мы использовали наиболее популярный в мировом интернет-пространстве Weather.com) получить информацию о погоде в данном месте
  4. отобразить полученную информацию на рабочем столе мобильного устройства пользователя.

Каждый шаг данного алгоритма выполняет отдельный KP. KP-GPSCoords получает текущие координаты пользователя и публикует их в SIB. После этого данные координаты считывает KP-City, который находит ближайший населенный пункт и также публикует его название в SIB. KP-Weather в свою очередь, получив название города, находит информацию о погоде и публикует ее в SIB. KP-GUI реализован в виде виджета рабочего стола, который отображает информацию из SIB’а. Также существует отдельный KP (KP-Coords), который позволяет пользователю ввести координаты любого города вручную и проверить работу нашего виджета. Как и в любом сервисе умных пространств, каждый из вышеуказанных KP может быть заменен на другой KP без изменения всех остальных элементов решения. Общая архитектура приложения представлена на следующем рисунке:



Архитектура M3-Weather



Безусловно, многие скажут, что идея получения актуальной информации о погоде совершенно не нова и имеет множество реализаций, в том числе и для мобильных устройств. Более того, пользователи N900 и ОС Maemo сразу смогут привести пример подобного приложения – это OMWeather, которое является самым популярным погодным клиентом для N900 и реализует те же принципы работы, что и M3-Weather. Однако целью нашего проекта было создать приложение именно для сетевых интеллектуальных пространств и показать некоторые преимущества такого подхода к реализации.



В первую очередь, стоит заметить, что из четырех основных KP на мобильном устройстве работают только два – это KP-GUI и KP-GPSCoords. Таким образом, значительно экономятся ресурсы устройства, так как нет необходимости посылать постоянные запросы в сеть для обновления данных, всю работу с веб-сервисами выполняют KP-City и KP-Weather, которые запущены на специальном сервере (maemo-m3.cs.karelia.ru). Функцию обновления координат от GPS-модуля в целях экономии энергии батареи также можно легко отключить с помощью специальной кнопки виджета.



Разработка проекта состояла из двух итераций: первая велась, как уже было сказано выше, в рамках учебной дисциплины в Петрозаводском государственном университете, а вторая — уже в лаборатории ПетрГУ-Nokia-NSN. Результаты проекта были представлены в ноябре 2010 года на восьмом FRUCT семинаре в городе Лаппеенранта, Финляндия.



На данный момент проект завершен, код проекта находится в открытом доступе и соответственно разработка может быть продолжена сообществом. Многие части проекта могут быть использованы в будущем в рамках каких-либо других разработок для платформы Smart-M3. Например, KP-Weather или KP-City возможно модифицировать для взаимодействия с любыми другими веб-сервисами, такими как социальные сети, новостные порталы и т.п. Проект имеет множество возможностей для дальнейшего развития и использования.



Участие в подобном проекте дает студентам хороший опыт и возможность дальнейшего развития и продвижения собственных идей для реализации. Именно поэтому в лабораторию ПетрГУ-Nokia-NSN с каждым новым учебным годом привлекаются новые студенты и преподаватели.



Ссылки:

  1. Пакеты, доступные в официальном репозитории Maemo:
  2. m3w-gps

    m3w-widget

    m3w-coords

  3. Код проекта на Gitorious.org
  4. Вики проекта
  5. Подробнее о проекте на fruct.org