Beaucoup souhaitent ajouter leur ville à la liste lorsqu'elle ne s'y trouve pas, pour avoir la météo.
Or cette opération n'est pas anodine et recèle plusieurs pièges, notamment parce qu'il existe une corrélation intime entre la météo, l'heure et le fuseau horaire... Tout simplement parce que ces informations sont contenues dans la même base de données.
Or les outils permettant d'ajouter ou de modifier des villes pour la météo font l'impasse sur le reste, ce qui conduit à de gros problèmes d'heure et parfois de synchro avec Outlook.
Le problème étant principalement que pour obtenir que la météo du lieu choisi s'affiche aussi sur le calendrier et sur S2U2, par exemple, il faut impérativement que la ville en question soit définie comme votre localité de base.
Or si vous faites ça, il faut impérativement qu'elle soit définie dans les règles, sans quoi vous allez avoir des déboires considérables avec la date et l'heure !
Il va de soi que si vous conservez une localité générique pour l'heure (exemple : "GMT+1 Paris, Madrid") et que vous ne faites qu'ajouter votre ville dans la liste pour la météo, le problème est amoindri (l'heure pourra ne pas être exacte, mais si seule la météo vous intéresse, alors les outils habituels sont suffisants). En revanche, vous n'aurez pas votre météo locale ailleurs que dans l'onglet "Météo" du TF3D.
Comment faut-il faire, alors ?
Il faut modifier la base de données dans les règles, et le faire de manière complète et exhaustive.
Tout d'abord, bien sûr, il faut que votre localité possède un code météo international reconnu (sinon ça n'a pas de sens), ou à défaut, une ville voisine plus importante qui figure dans la liste : vous aurez besoin du code correspondant (et c'est cette ville qu'il faudra définir, quitte à utiliser le nom de la vôtre à la place le cas échéant : ça, ça ne pose pas de problème).
Rendez vous sur :
http://www.accuweather.com/world-index.asp
Et choisissez votre zone géographique, votre pays, votre ville. Un bulletin météo s'affichera alors, et dans la barre d'adresse, vous reconnaîtrez le code météo au bout de la ligne : il ne reste plus qu'à le copier dans le presse-papier.
Ensuite, il faut vous procurer l'outil adéquat et le fichier à modifier.
Mode d'emploi :
1) Télécharger et décompresser SQL Lite Admin, qu'on trouve ici : http://sqliteadmin.orbmu2k.de/
2) Extraire du dossier \Windows du HD le fichier 2330fc3c_manila, le copier sur votre PC et enlever le cas échéant les attributs "système", "caché" et "lecture seule" (sous DOS, avec la commande attrib : attrib -S -H -R 2330fc3c_manila)
3) Lancer sqliteadmin.exe et ouvrir le fichier 2330fc3c_manila qui est en fait une base de données SQL
4) Ajouter un enregistrement en fin de fichier (les index sont gérés automatiquement) dans la table "Cities" avec l'onglet "Données", en veillant à remplir complètement tous les champs (voir plus bas), au moyen du bouton "+"
5) Cliquer sur le bouton "Post" (symbolisé par une coche) afin d'enregistrer votre modification, puis quitter SQL Lite Admin
6) Remettre éventuellement les attributs originaux du fichier (attrib +S +H +R 2330fc3c_manila) et le recopier sur le HD (dans un dossier temporaire, puis utiliser Total Commander pour le remettre à sa place dans le dossier \Windows).
Comment remplir correctement une ligne dans la base de données :
id > le n° dans la liste. Il suffit de prendre le dernier n° +1...
cityName > Le nom de la ville. Attention, certaines bases de données sont entrées sans les accents : respectez cette disposition. Sinon, ils sont stockés en Unicode ou en UTF8 (à vrai dire, je n'ai pas eu le temps d'identifier le type de codage, mais enfin, ça se voit tout de suite au charabia qui vient en lieu et place des minuscules accentuées )
region > a priori, ce champ n'est pas renseigné, donc à laisser vide
state > en dehors des USA et du Canada, on s'en tape... On laisse vide aussi
country > indiquez votre pays, initiales en majuscules, accents comme tout à l'heure. Hum, en fait, c'est même encore plus méchant que ça : le pays doit être orthographié exactement comme dans la table "Countries" si elle est présente dans votre fichier (il existe deux versions selon les ROM, avec et sans), donc je vous conseille vivement un copier-coller.
latitude > pas renseignée, à laisser à 0
longitude > idem, à 0
accuweatherCode > copier-coller ici le code AccuWeather, intégralement, tel quel (avec les "|" et tout le fourbi)
timezone > heure légale, voir note (1) ci dessous
msid > code de fuseau horaire, voir note (2) ci dessous
Les deux derniers champs sont les plus importants, et ce sont justement ceux qui sont habituellement négligés !
Voici comment les renseigner :
(1) heure légale :
Il s'agit de l'heure locale hors heure d'été, donc l'heure d'hiver, exprimée en décalage par rapport à l'heure GMT. Les Américains se considérant comme toujours au centre de l'Univers, ils ont inversé le décalage habituel, en se comptant eux-mêmes en positif, les fuseaux horaires en avance sur GMT étant comptés en négatif !
Par aileurs, étant donné qu'il existe des fuseaux horaires avec des 1/2 heures de décalage, l'information est exprimée en minutes (en minutes de retard, très précisément, ce qui donne des nombres négatifs pour les localités en avance sur l'heure GMT), de la manière suivante :
Heure légale = - décalage horaire x 60
Par exemple, la France est sur le fuseau horaire de Londres, donc GMT. mais en France et en Espagne, l'heure légale avance d'une heure sur l'heure solaire réelle (deux heures en été), donc le fuseau horaire légal officiel en France est GMT+1.
Ce qui se traduit ici par -60
(2) code de fuseau horaire :
Il contient manifestement des informations relatives à l'heure d'été, puisque cette information ne figure en clair nulle part ailleurs.
Il s'agit d'un code faisant référence à une clé de la base de registre Windows, contenant un fatras de codes hexadécimaux (variable de type REG_BINARY).
Ce code numérique est précisément le nom de la clé correspondante, que vous trouvez dans le registre à l'emplacement suivant :
\HKEY_LOCAL_MACHINE\Software\Microsoft\Timezones\
Si nous continuons avec l'exemple d'une localité française, il faudra inscrire la valeur 105 dans ce champ (c'est très important).
Elle correspond bien entendu à la clé de registre :
\HKEY_LOCAL_MACHINE\Software\Microsoft\Timezones\105\
Contenant la variable TZI, contenant elle-même le foutoir binaire adéquat.
Maintenant, supposons que vous résidiez quelque part ailleurs (c'est mon cas), que vous trouviez le code météo, que vous calculiez l'heure locale légale ; il vous reste à trouver le bon code fuseau horaire (TZI), par exemple par analogie avec d'autres villes, et à compléter la fiche.
Seulement, il arrive parfois que la clé de registre n'existe pas dans le HD !
Pas d'affolement. Il suffit de l'importer depuis votre propre PC et de l'ajouter dans le registre.
Il faudra effectuer un copier-coller de la suite de nombres dans un fichier texte, le passer au HD, et refaire un copier-coller depuis l'éditeur de registre sur le HD, car ces clés occupent des emplacements différents sous un Windows classique.
Sur le PC (Windows XP, par exemple), Vous trouverez vos informations ici :
\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\
A cet emplacement se trouvent une multitude de clés portant des noms explicites : par exemple, le mien est Central Pacific Standard Time\ et contient les variables :
Display (REG_SZ) = (GMT+11:00) Magadan, Les Îles Salomon, Nouvelle Calédonie
Index (REG_DWORD) = 280
MapID (REG_SZ) = 22,23
Std (REG_SZ) = Pacifique Centre
TZI (REG_BINARY) = 6c,fd,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
Mon champ timezone doit contenir -660 et msid doit contenir 280.
Celui de la France est \Romance Standard Time et contient les variables :
Display (REG_SZ) = (GMT+01:00) Bruxelles, Copenhague, Madrid, Paris
Index (REG_DWORD) = 105
MapID (REG_SZ) = -1,64
Std (REG_SZ) = Paris, Madrid
TZI (REG_BINARY) = c4,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,00,00,05,00,03,00,00,00,00,00,00,00,00,00,03,00,00,00,05,00,02,00,00,00,00,00,00,00
On retrouve ici le code de la zone (105 pour la France), qui correspond à la clé de même nom (\105 pour la France) sur le HD, et qui contient la variable TZI qui peut être recopiée à l'identique en cas d'absence.
Bien entendu, le fuseau horaire GMT+1 existe déjà dans le registre du HD... Mais le GMT+11 (code 280) n'y était pas, et j'ai dû l'ajouter manuellement.
De plus, tant le décalage horaire (timezone) que le fuseau horaire (msid) étaient faux pour ma ville, et j'ai dû les rectifier pour que le téléphone soit à l'heure et affiche correctement les autres villes de l'horloge mondiale ! Pire, l'heure changeait toute seule à chaque synchronisation par ActiveSync, puisque le PC tentait de le remettre dans l'axe...
Le problème est connu, et intervient à chaque fois qu'une ville est mal paramétrée. Vous savez maintenant ce qui vous attend si vous négligez de remplir correctement ce fichier ! En effet, il vous collera directement en GMT par défaut et vous n'arriverez jamais à mettre votre téléphone à l'heure !
Or cette opération n'est pas anodine et recèle plusieurs pièges, notamment parce qu'il existe une corrélation intime entre la météo, l'heure et le fuseau horaire... Tout simplement parce que ces informations sont contenues dans la même base de données.
Or les outils permettant d'ajouter ou de modifier des villes pour la météo font l'impasse sur le reste, ce qui conduit à de gros problèmes d'heure et parfois de synchro avec Outlook.
Le problème étant principalement que pour obtenir que la météo du lieu choisi s'affiche aussi sur le calendrier et sur S2U2, par exemple, il faut impérativement que la ville en question soit définie comme votre localité de base.
Or si vous faites ça, il faut impérativement qu'elle soit définie dans les règles, sans quoi vous allez avoir des déboires considérables avec la date et l'heure !
Il va de soi que si vous conservez une localité générique pour l'heure (exemple : "GMT+1 Paris, Madrid") et que vous ne faites qu'ajouter votre ville dans la liste pour la météo, le problème est amoindri (l'heure pourra ne pas être exacte, mais si seule la météo vous intéresse, alors les outils habituels sont suffisants). En revanche, vous n'aurez pas votre météo locale ailleurs que dans l'onglet "Météo" du TF3D.
Comment faut-il faire, alors ?
Il faut modifier la base de données dans les règles, et le faire de manière complète et exhaustive.
Tout d'abord, bien sûr, il faut que votre localité possède un code météo international reconnu (sinon ça n'a pas de sens), ou à défaut, une ville voisine plus importante qui figure dans la liste : vous aurez besoin du code correspondant (et c'est cette ville qu'il faudra définir, quitte à utiliser le nom de la vôtre à la place le cas échéant : ça, ça ne pose pas de problème).
Rendez vous sur :
http://www.accuweather.com/world-index.asp
Et choisissez votre zone géographique, votre pays, votre ville. Un bulletin météo s'affichera alors, et dans la barre d'adresse, vous reconnaîtrez le code météo au bout de la ligne : il ne reste plus qu'à le copier dans le presse-papier.
Ensuite, il faut vous procurer l'outil adéquat et le fichier à modifier.
Mode d'emploi :
1) Télécharger et décompresser SQL Lite Admin, qu'on trouve ici : http://sqliteadmin.orbmu2k.de/
2) Extraire du dossier \Windows du HD le fichier 2330fc3c_manila, le copier sur votre PC et enlever le cas échéant les attributs "système", "caché" et "lecture seule" (sous DOS, avec la commande attrib : attrib -S -H -R 2330fc3c_manila)
3) Lancer sqliteadmin.exe et ouvrir le fichier 2330fc3c_manila qui est en fait une base de données SQL
4) Ajouter un enregistrement en fin de fichier (les index sont gérés automatiquement) dans la table "Cities" avec l'onglet "Données", en veillant à remplir complètement tous les champs (voir plus bas), au moyen du bouton "+"
5) Cliquer sur le bouton "Post" (symbolisé par une coche) afin d'enregistrer votre modification, puis quitter SQL Lite Admin
6) Remettre éventuellement les attributs originaux du fichier (attrib +S +H +R 2330fc3c_manila) et le recopier sur le HD (dans un dossier temporaire, puis utiliser Total Commander pour le remettre à sa place dans le dossier \Windows).
Comment remplir correctement une ligne dans la base de données :
id > le n° dans la liste. Il suffit de prendre le dernier n° +1...
cityName > Le nom de la ville. Attention, certaines bases de données sont entrées sans les accents : respectez cette disposition. Sinon, ils sont stockés en Unicode ou en UTF8 (à vrai dire, je n'ai pas eu le temps d'identifier le type de codage, mais enfin, ça se voit tout de suite au charabia qui vient en lieu et place des minuscules accentuées )
region > a priori, ce champ n'est pas renseigné, donc à laisser vide
state > en dehors des USA et du Canada, on s'en tape... On laisse vide aussi
country > indiquez votre pays, initiales en majuscules, accents comme tout à l'heure. Hum, en fait, c'est même encore plus méchant que ça : le pays doit être orthographié exactement comme dans la table "Countries" si elle est présente dans votre fichier (il existe deux versions selon les ROM, avec et sans), donc je vous conseille vivement un copier-coller.
latitude > pas renseignée, à laisser à 0
longitude > idem, à 0
accuweatherCode > copier-coller ici le code AccuWeather, intégralement, tel quel (avec les "|" et tout le fourbi)
timezone > heure légale, voir note (1) ci dessous
msid > code de fuseau horaire, voir note (2) ci dessous
Les deux derniers champs sont les plus importants, et ce sont justement ceux qui sont habituellement négligés !
Voici comment les renseigner :
(1) heure légale :
Il s'agit de l'heure locale hors heure d'été, donc l'heure d'hiver, exprimée en décalage par rapport à l'heure GMT. Les Américains se considérant comme toujours au centre de l'Univers, ils ont inversé le décalage habituel, en se comptant eux-mêmes en positif, les fuseaux horaires en avance sur GMT étant comptés en négatif !
Par aileurs, étant donné qu'il existe des fuseaux horaires avec des 1/2 heures de décalage, l'information est exprimée en minutes (en minutes de retard, très précisément, ce qui donne des nombres négatifs pour les localités en avance sur l'heure GMT), de la manière suivante :
Heure légale = - décalage horaire x 60
Par exemple, la France est sur le fuseau horaire de Londres, donc GMT. mais en France et en Espagne, l'heure légale avance d'une heure sur l'heure solaire réelle (deux heures en été), donc le fuseau horaire légal officiel en France est GMT+1.
Ce qui se traduit ici par -60
(2) code de fuseau horaire :
Il contient manifestement des informations relatives à l'heure d'été, puisque cette information ne figure en clair nulle part ailleurs.
Il s'agit d'un code faisant référence à une clé de la base de registre Windows, contenant un fatras de codes hexadécimaux (variable de type REG_BINARY).
Ce code numérique est précisément le nom de la clé correspondante, que vous trouvez dans le registre à l'emplacement suivant :
\HKEY_LOCAL_MACHINE\Software\Microsoft\Timezones\
Si nous continuons avec l'exemple d'une localité française, il faudra inscrire la valeur 105 dans ce champ (c'est très important).
Elle correspond bien entendu à la clé de registre :
\HKEY_LOCAL_MACHINE\Software\Microsoft\Timezones\105\
Contenant la variable TZI, contenant elle-même le foutoir binaire adéquat.
Maintenant, supposons que vous résidiez quelque part ailleurs (c'est mon cas), que vous trouviez le code météo, que vous calculiez l'heure locale légale ; il vous reste à trouver le bon code fuseau horaire (TZI), par exemple par analogie avec d'autres villes, et à compléter la fiche.
Seulement, il arrive parfois que la clé de registre n'existe pas dans le HD !
Pas d'affolement. Il suffit de l'importer depuis votre propre PC et de l'ajouter dans le registre.
Il faudra effectuer un copier-coller de la suite de nombres dans un fichier texte, le passer au HD, et refaire un copier-coller depuis l'éditeur de registre sur le HD, car ces clés occupent des emplacements différents sous un Windows classique.
Sur le PC (Windows XP, par exemple), Vous trouverez vos informations ici :
\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\
A cet emplacement se trouvent une multitude de clés portant des noms explicites : par exemple, le mien est Central Pacific Standard Time\ et contient les variables :
Display (REG_SZ) = (GMT+11:00) Magadan, Les Îles Salomon, Nouvelle Calédonie
Index (REG_DWORD) = 280
MapID (REG_SZ) = 22,23
Std (REG_SZ) = Pacifique Centre
TZI (REG_BINARY) = 6c,fd,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
Mon champ timezone doit contenir -660 et msid doit contenir 280.
Celui de la France est \Romance Standard Time et contient les variables :
Display (REG_SZ) = (GMT+01:00) Bruxelles, Copenhague, Madrid, Paris
Index (REG_DWORD) = 105
MapID (REG_SZ) = -1,64
Std (REG_SZ) = Paris, Madrid
TZI (REG_BINARY) = c4,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,00,00,05,00,03,00,00,00,00,00,00,00,00,00,03,00,00,00,05,00,02,00,00,00,00,00,00,00
On retrouve ici le code de la zone (105 pour la France), qui correspond à la clé de même nom (\105 pour la France) sur le HD, et qui contient la variable TZI qui peut être recopiée à l'identique en cas d'absence.
Bien entendu, le fuseau horaire GMT+1 existe déjà dans le registre du HD... Mais le GMT+11 (code 280) n'y était pas, et j'ai dû l'ajouter manuellement.
De plus, tant le décalage horaire (timezone) que le fuseau horaire (msid) étaient faux pour ma ville, et j'ai dû les rectifier pour que le téléphone soit à l'heure et affiche correctement les autres villes de l'horloge mondiale ! Pire, l'heure changeait toute seule à chaque synchronisation par ActiveSync, puisque le PC tentait de le remettre dans l'axe...
Le problème est connu, et intervient à chaque fois qu'une ville est mal paramétrée. Vous savez maintenant ce qui vous attend si vous négligez de remplir correctement ce fichier ! En effet, il vous collera directement en GMT par défaut et vous n'arriverez jamais à mettre votre téléphone à l'heure !