Je ne suis pas un grand utilisateur du smartphone, pas plus que du simple téléphone d’ailleurs… néanmoins, un smartphone est un véritable ordinateur de poche, et l’on peut utiliser ses possibilités pour des choses bien pratiques.
L’une de ces choses, qui me trottait dans la tête depuis un petit bout de temps, c’était la synchronisation de mes deux agendas : le principal étant sur le PC, dans Thunderbird (Lightning, un add-on), et bien sûr le calendrier du smartphone, sur lequel j’ai pris l’habitude de noter des rendez-vous, etc… lorsque je suis hors de chez moi… Quitte à le recopier manuellement sur le PC une fois à la maison, ce qui était vraiment fastidieux et source d’erreur.
Je précise que si j’utilise Android, ce n’est pas la ROM d’origine, et que je ne déclare pas de compte Google lors de l’installation. L’idée générale est de se “dégoogliser” (voir cet article), et d’apprendre à se passer de tous les beaux services “offerts” par Google.
Comme je bénéficie désormais d’un hébergeur qui offre lui aussi des possibilités, je me suis mis à chercher comment faire. Les deux agendas ne pouvant se synchroniser tous les deux directement, il va falloir utiliser le protocole CalDAV et un serveur, Baïkal en l’occurrence…
CalDAV
C’est un protocole d’édition de calendrier en ligne, qui permet d’échanger des événements. Un calendrier est, dans CalDAV, un dossier contenant des évènements, des tâches… Chaque évènement est transmis sous la forme d’un fichier VEVENT, VTASK… Il est donc possible de manipuler un seul élément sans avoir à échanger l’ensemble du calendrier.
Thunderbird/Lightning intègre ce protocole, contrairement à Android où il faudra installer un module complémentaire. Mais commençons par installer le serveur.
One.com
Ma première idée était en fait d’utiliser le calendrier fourni par One.com. La page d’aide indique que CalDAV est supporté. Hélas, après quelques essais, impossible de synchroniser avec Thunderbird. L’erreur est :
DAV_NOT_DAV. Description : La ressource sur « http://caldav.one.com/ » n’est pas une collection DAV ou n’est pas disponible.
Je contacte le support, et leur réponse est décevante (pour ne pas dire surprenante) :
Cher Client,
Merci d’avoir contacté One.com!
Nous sommes navré mais nous ne pouvons garantir le bon fonctionnement de composant dans votre application . Nous avons eu certain clients où cette manipulation fonctionnaient à 50 %. Le département technique travaille à une solution corriger ces bugs mais nous n’avons pas de retour en ce moment.
Nous nous excusons pour la gêne occasionnée.
Dans ce cas, le mieux est de laisser tomber…
Baïkal
Baïkal est un serveur CalDAV+CardDAV léger, et open-source. Il requiert un serveur Apache 2, PHP 5.3.1 et utilise SQLite3 ou MySQL. Il est compatible avec Thunderbird et Android, simple à administrer, et s’installe très facilement. Exactement ce que je cherche !
Note : CardDAV, c’est la même chose que CalDAV, mais pour synchroniser les contacts.
Sur la page de Baïkal, j’ai donc téléchargé le “Flat package” (allons au plus simple), puis je l’ai dézippé, et enfin transféré sur One.com dans un répertoire dédié. Il s’agit de la v0.2.7. Voilà, il suffit ensuite de se rendre à cette adresse dans le navigateur, et en deux clics, le serveur est installé.
Il ne reste plus qu’à créer un utilisateur via l’interface d’administration :

Puis à lui créer un ou plusieurs agendas :

Voilà, c’est terminé côté serveur ! À noter que l’on ne peut pas visualiser le ou les agendas sur Baïkal : il ne fait que synchroniser, et le fait bien apparemment.
Info
Voir aussi cet article : Mise à jour DAVdroid et perte des couleurs des calendriers, où j’ai dû installer une version plus récente de Baïkal (v0.4.4).
Cette version permet de définir une couleur pour chaque calendrier, et fournit un nouveau dav.php qui remplace les cal.php (calendrier) et card.php (contacts) précédemment utilisés.
Thunderbird
Dans Thunderbird, ou plutôt Lightning, créer un nouvel agenda et sélectionner “Sur le réseau” :

Puis “CalDAV” en renseignant l’adresse de votre serveur sous la forme :
http(s)://nom_du_server/rép_baikal/cal.php/calendars/nom_utilisateur/nom_agenda

Enfin choisissez le nom et la couleur de votre agenda dans TH/Lightning :

Voilà, c’est terminé côté Thunderbird. Aller dans les propriétés de l’agenda pour régler la synchronisation comme vous le souhaitez :

Notez que cette opération est à répéter pour chaque calendrier que vous avez créé sur Baïkal.
À ce stade, j’ai eu besoin d’importer les événements du calendrier local que j’utilisais auparavant. Pour ce faire :
- clic droit sur le calendrier local, et “Exporter”. Vous récupérez alors un fichier “.ics”.
- sélectionner le nouveau calendrier créé, puis menu “Événements et tâches - Importer”, puis sélectionner le fichier précédemment sauvegardé.
Android
Côté Android, il faut une version 4 minimum (j’avais un Android 2.3.7 sur mon vieux HTC Desire, il y avait bien moyen de le faire avec aCal, mais c’était vraiment limité… et le calendrier très peu esthétique). J’ai donc installé une ROM Android JB 4.1.2.
Il va d’abord falloir installer DAVdroid, à partir du dépôt F-Droid. Il s’intègre de manière transparente au système ; une fois installé, il va se charger de synchroniser vos agendas (et vos contacts si vous le voulez).
NOTE : il existe également CalDAV SyncAdapter, également sur f-droid, qui ne fait que les calendriers, et qui a l’air moins avancé que DAVdroid.
Une fois ceci fait, lancer DAVdroid :

Choisir “Login with URL and user name”:

Renseigner les paramètres du serveur et du compte. Pour Baikal, il faut utiliser l’URL sous la forme :
http(s)://nom_du_serveur/rép_baikal/cal.php/principals

Voilà, DAVdroid va se connecter, et vous demander quels agendas vous désirez synchroniser.
Un compte a été créé sous Android (Paramètres systèmes - Comptes), et la synchronisation activée.
aCalendar
C’est finalement assez simple à mettre en place. Il faut bien entendu un hébergeur web pour ce faire (ou alors s’auto-héberger), mais les pré-requis de Baïkal sont très standards, et il s’installe vraiment en deux clics.
Désormais, mes agendas sont synchronisés, toute modification faite côté Thunderbird sera répliquée côté Android, et réciproquement.
Une dernière image, celle de aCalendar, l’application de calendrier que j’utilise sur Android. Le seule raison est que aCalendar affiche les anniversaires en allant chercher les informations dans les contacts (et en affichant leur photo et leur âge dans le calendrier), idéal pour ne pas oublier la famille et les amis… On ne peut pas y créer des agendas, mais il récupère automatiquement les agendas définis sous Google calendar.
