Страницы

Показаны сообщения с ярлыком syncml. Показать все сообщения
Показаны сообщения с ярлыком syncml. Показать все сообщения

четверг, 22 мая 2014 г.

Синхронизация контактов через SyncML доступными сервисами

В очередной раз возникла проблема синхронизации календарных сведений. Перенос данных кантактов, календаря, заметок, всегда и по сию пору, является головной болью мобильных платформ. Сплошь и рядом имеется навязанная программная несовместимость форматов данных, способов передачи и пр.

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


В старом телефоне Nokia 9300 календарные данные хранятся во встроенной программе Календарь. Формат бинарный и старый.
В новом телефоне Megafon Login 2 календарные данные хранятся во встроенной программе календаря.
К сожалению, стандартно в Android 4.2.2 нет возможности импортировать данные календаря напрямую с телефона Nokia.

Поэтому, в этот раз, воспользовался сторонним сервисом syncml-синхронизации wap4b.ru.

Порядок действий случился такой:

1. Регистрация на сервиса wap4b.ru
2. Настройка встроенного средства синхронизации syncml на телефоне Nokia 9300 (папка Сервис-Синхронизация). Указываются адрес url, и пользователь и пароль, как задано в инструкции к сервиса. В принципе - url - http://wap4b.ru/sync, 80-й стандартный порт, а базы данных, если надо - con (контакты) и caltask (календарь).

3. Выполняется синхронизация (только с телефона) на телефоне Nokia 9300. Происходит копирование календарных данных на сервис wap4b.ru.

4. Установка программы DMS+DS на телефоне Megafon Login 2.
5. Настройка программы DMS+DS, с указанием адрес url http://wap4b.ru/sync, и пользователь и пароль, как задано в инструкции к сервису wap4b.ru (аналогично).

6. Выполняется синхронизация в программе DMS+DS и данные плавное переезжают во встроенное приложение календаря. При этом, однако создаётся дополнительная учётная запись (по данным wap4b.ru) и календарь накладывается на календарь Google. Я пока не понял, как перенести данные из учётной записи wap4b.ru в стандартную учётную запись Google. Вообщем, легкие трудности. Но без них было бы легче, но разработчики любят только себя и свое.
Т.е. получился вроде как внешний календарь, доступный только на устройстве Megafon Login 2.

Замечу, что DMS+DS простой syncml клиент. Получилось почти то, что мне надо. В других случаях может удваивать контакты и события. ИСПОЛЬЗОВАТЬ ОСТОРОЖНО. ДЕЛАТЬ РЕЗЕРВНУЮ КОПИЮ ПЕРЕД СИНХРОНИЗАЦИЕЙ.

Раньше была возможность делать синхронизацию через google, но потом этот  сервис закрылся.

Возможно стоит воспользоваться сервисом от  Megafon "Банк памяти".


 ※※※

Выводы


1. Телефону Megafon Login 2 очень нехватает утилиты, для прямого переноса данных с других телефонов к себе. Вечно надо искать какие-то сторонние сервисы.
2. Покопавшись в Google Play, и зная о технологии лежащей в основе переноса т.н. PIM данных (ключевое слово syncml), удалось относительно быстро, по сравнению с ручным переносом, решить проблему.
3. Странное приложение Google Календарь на платформе Android 4.2.2. Как же перенести календарные данные в Google?
4. Большая часть календарных программ сделана так, как будто у меня нет календаря и я чистого листа начинаю вводить данные непременно в эту программу, на этом устройстве. Экспорт и импорт, в многих случаях не помогает, т.к. форматы разнообразны.
5. DMS+DS. - клиент очень простой. В других случаях может удваивать контакты и события. ИСПОЛЬЗОВАТЬ ОСТОРОЖНО. ДЕЛАТЬ РЕЗЕРВНУЮ КОПИЮ ПЕРЕД СИНХРОНИЗАЦИЕЙ.

※※※

Ресурсы


 1. Сервис syncml-синхронизации контактов и календаря. http://wap4b.ru/
2. Календарь Google. https://calendar.google.com/
3. Мегафон в Санкт-Петербурге. http://spb.megafon.ru/

※※※

суббота, 10 марта 2012 г.

SyncML сервер на домашнем компьютере, для Nokia 9300

Быстрая настройка syncml сервера производства SyncEvolution на домашнем компьютере.
Версия предварительная и не окончательная, скорее тестовая, чем рабочая.

Цель - копирование  контактов с телефона Nokia 9300.

Особенности: Телефон Nokia 9300 имеет встроенный клиент syncml протокола. У моего телефона нет местного подключения (irda,bluetooth,usb) к компьютеру. Синхронизация возможна, в моем случае, через сеть Интернет. Домашний компьютер имеет непосредственное подключение к сети Интернет и провайдер присваивает динамический белый IP-адрес.


1. Настройка телефона Nokia 9300 в меню "Сервис" - "Синхронизация"

Нажать кнопку "Меню" выбрать меню "Файл" - "Создать".
Задать имя режима, под которым конфигурация будет видна на телефоне в списке "Синхронизация".
Зададим "Имя режима" - "с домашним компьютером". Это будет читаться как "Синхронизация с домашним компьютером".
"Далее"
"Тип подключения" - "Интернет"
"Точка доступа" - выбрать вашу точку доступа к сети. Выдается сотовым провайдером. Желательно выбирать что-то подобное "GPRS-INTERNET", чтобы экономить средства.
"Далее"
Укажем "Адрес хоста" в виде: http://00.00.00.00/syncevolution, где 00.00.00.00 - ваш IP адрес компьютера, видимый через Интернет (белый IP-адрес). Этот адрес может менятся с каждым подключением к Интернет, соответственно его надо будет менять и в настройках телефона, каждый раз. Из-за неправильного IP-адреса, синхронизация заканчивается с ошибкой "Хост не найден".

"Порт" - 9000, это порт на котором будет отвечать наш локальный syncml сервер

"Имя пользователя", "Пароль", "Подтверждение пароля" можно пока не задавать в тестовых условиях.

"Далее"
Выбрать элементы содержимого для синхронизации
"Контакты" - "Да"

"Далее"
"Локальная база данных" - можно оставить без изменений (вида c:\system\data\contacts.cdb), либо указать другую базу данных, расположенную на телефоне, например на карте памяти. База данных в фирменном формате .cdb.
"Удаленная база данных" - ? "addressbook", я предполагаю, что это имя специфично для syncevolution и указывает на базу контактов на локальном компьютере. А вот способ хранения этой базы задается опцией backend сервера. В настройках сервера, я выбрал способ хранения в файловой системе. Эта настройка требует проверки смысла.

"Тип синхронизации" - "обычный", это двусторонняя синхронизация.

"Далее" "Готово". Профиль "с домашним компьютером" сохраниться в списке профилей приложения "Синхронизация".

Запуск синхронизации с телефона - выбрать профиль "с домашним компьютером" и нажать "Синхронизация". На предмет ошибок и результатов смотреть "Журнал".

II. Настройка локального сервера SyncML, производства SyncEvolution

Установка пакета с серверной частью SyncEvolution
$ sudo apt-get install syncevolution-http

Основная трудность в том, что серверу требуется предварительно знать о подключаемых клиентах(устройствах) и настроить для них конфигурации.

Для тестирования запуска сервера изготовим временный скрипт и назовем его syncserver.sh:

#! /bin/bash
# Choose a directory where SyncEvolution will
# store the PIM data, using its internal file backend.
# To store in some other backend, like Evolution,
# you'll have to use different "type" and "evolutionsource"
# values in the commands below.
deviceID=IMEI:354321000000000
peer=Nokia-9300
datapath=/tmp/fb2


# All sources are disabled by default.
# The URI is reset here because it can be used to rename the
# data source (not necessary when configuring the client, so
# that it uses the source names as URIs).
syncevolution --configure \
  --template default \
  --sync-property syncURL= \
  --sync-property peerIsClient=1 \
  --sync-property remoteDeviceId=${deviceID} \
  --sync-property username=${username} \
  --sync-property password=${password} \
  --source-property uri= \
  --source-property sync=slow \
backend=file \
database=file:///tmp/fb2 \
databaseFormat=text/x-vcard \
syncFormat=text/x-vcard \
  ${peer}


# Запуск сервера syncml, с режимом отладочных сообщений (опция -d)
syncevo-http-server -d http://localhost:9000/syncevolution


Задать права на исполнения скрипта.
$ chmod +x syncserver.sh

Запуск тестового сервера на переднем плане, в консоли:
$ ./syncserver.sh

В ответ сервер сообщит:
[DEBUG] twisted: twisted.web.server.Site starting on 9000
и еще много разного.
Теперь можно запускать синхронизацию на телефоне.

Если синхронизация

III. Дополнительно. Настройка телефона Nokia E7, N8. Пока не выполнена.

Настраивается  телефон Nokia E7 для синхронизации контактов с локальным сервером, доступным через Интернет, либо локальную сеть.

Надо найти в меню телефона настройки касающиеся "Синхронизации"

Выберите "Меню" - "Параметры" - "Связь" -

"Передача дан." - "Синхронизация" - "Новый профиль синхронизации"



IV. Дополнительно. Настройка другого телефона Nokia 5200 , платформа Nokia s40.
В описании указано, что телефон поддерживает SyncML.
"Меню" - "Настройки" - "Подключение устройств" - "Перенос данных" - "Синхр. (сервер)"
Настройки синхронизации у поставщика услуг. Это значит, надо принять сервисную смс, с настройками. Как это сделать - бог его знает. Таким образом, для владельца телефона удобно доступно лишь синхронизация по Bluetooth и irda. Это в другой заметке.

Дополнительно. Конфигурация сети с роутером
В случае наличия в конфигурации домашней сети роутера, раздающего сеть домашним компьютерам, к настройке добавляется "перенаправление портов"  на роутере. Надо открыть на роутере и перенаправить порт 9000 на IP-адрес домашнего компьютера, при этом IP-адрес домашнего компьютера выделен роутером из диапазона неподключенных адресов iPv4, т.н. "серый" IP-адрес, вида 192.168.1.xxx . Либо вывести домашний компьютер, выполняющий роль сервера в "демилитаризованную зону" DMZ. Google в помощь.



. Источники
1. http://syncevolution.org/wiki/http-server-howto

SyncEvolution + file backend + Google contacts syncml

Пример настройки синхронизации контактов между папкой в файловой системе Ubuntu 11.10 и Google Contacts.

Перед любым использование сервиса Google Contacts убедиться, что сделана резервная копия контактов, потому что неправильная настройка сервиса syncml может привести к полной потере базы данных контактов, как в google contacts, так и в локальном устройстве.

Используется (SyncEvolution) из репозиториев Ubuntu. Установка проста:
$sudo apt-get install syncevolution sync-ui


Подготовка - создать папку /tmp/fb и поместить в нее несколько vcards (файлы визиток в формате vcf, желательно версии 2.1).
 Syncevolution содержит предварительно сконфигурированные настройки для нескольких сервисов хранения контактов в сети Интернет. Одним из них является Google Contacts. Сервис поддерживает протокол синхронизации syncml.

Просмотреть список конфигураций:
$ syncevolution --template ?


Просмотреть предварительную конфигурацию "Google_Contacts":
$ syncevolution --print-config "Google_Contacts" | more

Внести некоторые изменения...
Итак, конфигурация, которая у меня заработала:

$ syncevolution --configure \
username=myusername@gmail.com \
password=mypassword \
loglevel=3 \
sync=slow \
backend=file \
database=file:///tmp/fb \
databaseFormat=text/x-vcard \
syncFormat=text/x-vcard \
Google_Contacts


"Google_Contacts" - это название встроенной конфигурации.
Замените myusername@gmail.com и mypassword, на данные своей учетной записи в Google.
Для backend=file необходимы свойства database, databaseFormat, syncFormat
Опция sync=slow, синхронизация всех контактов, в обе стороны, каждый раз при синхронизации.
Опция sync=none, позволить отключить синхронизацию.

Запуск синхронизации:
$ syncevolution Google_Contacts

Существующие контакты из Google Contacts создаются в папке /tmp/fb виде файлов с номерами. Как это исправить, пока не знаю.
$ ls /tmp/fb 
1 2 3

Возможно настройка локального сервера syncml, вместо Google Contacts

P.S. Есть конфигурация для сервиса Nokia Ovi.