Linkindle – Affichez votre consommation électrique sur une liseuse

Lorsque le compteur connecté Linky a été annoncé, ERDF (maintenant Enedis) s’est trouvée au coeur d’une controverse sur la vie privée et la collecte des données de la consommation électrique des français. Je ne chercherai pas ici à justifier ou condamner ses pratiques, mais je vais au moins vous montrer comment vous pouvez en profiter pour votre usage personnel. 😉

Voulant garder un oeil sur ma consommation électrique durant l’hiver tout en profitant des données maintenant fournies directement par Enedis, j’ai créé le projet Linkindle.

linkindle

Linkindle, fini et accroché au mur

L’afficheur est accroché au mur de mon appartement et allumé en permanence. Grâce à l’écran e-ink de la Kindle, la batterie devrait tenir des semaines sans nécessiter de recharge. L’histogramme est mis à jour une fois par jour.

D’un point de vue technique, les graphiques sont générés une fois par jour via un script cron qui tourne sur un serveur dédié (un simple Raspberry Pi fait l’affaire). Ils sont créés par un script Python et la bibliothèque matplotlib qui récupère traite les données d’Enedis, avant d’être mis à disposition sur un serveur web sur le réseau local.

La Kindle (une simple Kindle Basic suffit) a été jailbreakée et fait également tourner un script cron une fois par jour. Ce dernier récupère le graphique sur le serveur web et l’affiche.

Allez, on rentre dans les détails ! Tout est open-source, donc avec un peu d’huile de coude et de matériel vous pouvez avoir la même chez vous. 👌

Comment faire ?

Prérequis

Pour commencer, et c’est important à préciser, il va vous falloir un compteur Linky activé. L’installation est une première étape, mais vous devrez attendre jusqu’à plusieurs mois avant de recevoir un courrier de la part d’Enedis vous confirmant l’activation du compteur.

Vous devrez ensuite demander sur leur site web la création d’un compte personnel lié au compteur, une opération qui peut encore prendre plusieurs jours. Après ça, vous êtes prêts ! Vérifiez que vous avez bien accès aux données sur votre espace personnel.

En ce qui concerne le Kindle, n’importe lequel devrait faire l’affaire ; vérifiez simplement qu’il peut être jailbreaké avant de dépenser des dizaines d’euros dans une brique. Et notez que vous ne pouvez pas économiser 10€ en achetant la version avec les offres spéciales : j’ai testé, et ça ne fonctionne pas. 😒 Si toutefois vous avez fait cette erreur, vous pouvez désactiver ces dernières depuis le site d’Amazon.

Côté serveur

Le côté serveur sera le plus simple à configurer. Vous pouvez commencer par récupérer le projet sur Github. Installez les dépendances. Sur une Debian :

$ apt-get install python3 pip3 python3-numpy python3-matplotlib python3-requests python3-dateutil python3-tk texlive texlive-latex-extra texlive-fonts-recommended dvipng imagemagick

Mettez ensuite en place un serveur web quelconque. Apache fait très bien l’affaire.

Dans le répertoire du projet, éditez le fichier gen_graphs.sh et ajoutez votre identifiant et mot de passe Enedis dans les variables respectives. Remplacez la valeur de OUT_DIR par un dossier accessible depuis votre serveur web. Attention aux permissions !

Vous pouvez tester l’exécution du script avec cette simple commande :

$ ./gen_graphs.sh

Enfin, on pourra mettre en place une tâche cron pour récupérer les données quotidiennement.

$ crontab -e

# m h  dom mon dow   command
0 5 * * * /home/iot/linkindle/gen_graphs.sh

Remplacez bien sûr /home/iot/linkindle/ par le répertoire du projet. Le script sera ainsi appelé tous les jours à 5h du matin.

Côté Kindle

Cette partie étant un peu plus délicate (il est assez rare d’être « expert(e) en jailbreak de Kindle » 😶) et moins bien documentée, je vais essayez de la découper en plusieurs parties.

Gardez en tête que ce tutoriel a été écrit en 2016. La méthode de jailbreak peut avoir changé si vous lisez ça dans le futur. Faites attention à ce que vous faites, je ne suis pas responsable de ce que vous faites avec votre matériel ! Si vous avez des problèmes, n’hésitez pas à laisser un commentaire.

Jailbreak

Commencez par identifier le modèle de votre Kindle grâce à cette page.

La faille utilisée pour le jailbreak des Kindle les plus récentes n’est plus présente dans les dernières versions de leur firmware. Vous allez donc devoir downgrader votre appareil dans une version supportée en suivant à la lettre les instructions de ce thread.

Les outils que j’ai utilisé proviennent du forum et wiki MobileRead. Après avoir cherché pendant longtemps la source de certaines erreurs, j’ai découvert qu’il existe une page depuis laquelle tout télécharger. C’est la seule à avoir les versions les plus récentes de tous les outils. Considérez-la comme votre Bible à partir de maintenant.

KUAL (Kindle Universal Application Launcher)

Téléchargez KUAL depuis la page des snapshots, puis glissez le fichier .azw2 adapté dans le dossier documents à la racine de votre Kindle. Vérifiez que vous avez une nouvelle entrée dans la liste des livres sur la Kindle. Ce hack est une interface qui vous permettra de lancer simplement un tas d’extensions, dont celles qui nous intéressent.

Thread principal

MobileRead Package Installer

Pour pouvoir installer des packages sur les versions récentes du firmware des Kindle, vous aurez besoin de MobileRead Package Installer (ou mrpi). Installez simplement le répertoire téléchargé dans le dossier extensions à la racine du Kindle.

Thread principal

Screensaver hack

Le screensaver hack (ou linkss) permet de remplacer les fonds d’écran par défaut de la Kindle par n’importe quelle image au bon format. On va s’en servir pour afficher les images de nos histogrammes !

Pour l’installer, glissez les fichiers *.bin nécessaires dans le dossier racine de votre Kindle (y compris Python 2.7, qui est également fourni, et qui est une dépendance). Ensuite, ouvrez KUAL, puis sélectionnez MR Package Installer et lancez l’installation.

python sur kindle

Installons Python tranquillement

Thread principal

Online Screensaver

Dernier morceau de magie pour donner vie à notre bidouille : l’extension Online Screensaver, qui va se charger de récupérer notre image, depuis notre serveur web, à intervalles définies préalablement. Sans cette extension, les scripts cron ne fonctionnent pas correctement, et le mode veille de la Kindle interfère avec le réseau.

Téléchargez l’extension depuis cette page et placez-la dans le dossier extensions à la racine de votre Kindle. Il vous faudra ensuite la configurer en modifiant le fichier onlinescreensaver/bin/config.sh pour y insérer l’URL du graphe que vous voulez afficher et la fréquence de rafraîchissement.

Testons !

Et voilà, tout devrait être configuré correctement. Faites un test en lançant une mise à jour du screensaver depuis KUAL > Online Screensaver. Essayez de redémarrer la Kindle, et boum, ça devrait être bon ! 😀

kindle au mur

o/

Comment ça marche ?

Côté serveur

Pour récupérer les données de consommation électriques, j’ai du faire un reverse-engineering léger du site d’Enedis. Il se trouve qu’ils fournissent aux utilisateurs connectés un fichier JSON assez complet et simple à utiliser, paramétrable par date de début et de fin. L’authentification se fait classiquement par un appel à une page de login et la conservation d’un cookie de session.

Vous pouvez retrouver la partie de récupération des données brutes (et la réutiliser dans un autre projet si tel est votre désir !) dans le module Python linky.py.

La génération des histogrammes est réalisée par linky_plot.py. J’utilise matplotlib et le module LaTeX pour réaliser de beaux graphiques. Ce script appelle directement le module décrit précédemment.

Enfin, le point d’entrée « normale » est le fichier gen_graphs.sh, dans lequel est appelé le script Python 3, mais également l’outil imagemagick, qui est hyper important pour la génération d’images adaptées à l’écran de la Kindle. Un paramètre incorrect, et les résultats seront inutilisables.

Pebble Time – Glop ou pas glop ?

Si vous vous intéressez à la tech et en particulier aux montres connectées, vous connaîtrez Pebble. La startup américaine a fait un tabac en 2012 après avoir reçu plus de 10 millions de dollars sur leur Kickstarter promettant une montre révolutionnaire : l’appareil, au design geeky tout en plastique, se vante d’avoir un écran e-paper (qui est à ne pas confondre avec l’e-ink) qui lui garantit une autonomie d’environ une semaine. Imbattable.

Après avoir été critiqué pour les délais de fabrication, et le lancement Pebble Steel un an plus tard, version en métal plus « testostérone » de la montre, Pebble est de retour sur Kickstarter en février 2015, et cette fois-ci ils savent ce qu’ils font. 20 millions de dollars plus tard… L’heure du galet est arrivée.

IMG_20150613_113722

Pebble Time est la nouvelle montre connectée de Pebble. Elle propose un design plus propre et moins « jouet » que la Pebble originelle, un écran en couleur, une interface repensée, et toujours 7 jours de batterie. Et je l’ai testée ! Je vais essayer de faire une critique plutôt objective – mais je me réserve le droit d’être subjectif, donc ne buvez pas mes mots – et de découper ça en deux parties : matériel et logiciel.

Hardware

Impression générale

La Pebble Time est une jolie montre. Plus jolie en vrai que sur les photos marketing, comme c’est souvent le cas pour les montres. Elle n’est pas trop grosse, et le dos est un peu arrondi, ce qui lui permet de bien épouser la forme du poignet. Elle est vraiment confortable, bien plus que la Pebble originelle. Même si elle est en plastique, les finitions sont plutôt bonnes et elle est assez solide; comme souvent noté, elle fait moins « jouet » que la Pebble originelle, et j’aurais bien moins honte de la porter dans n’importe quelle situation.

IMG_20150613_113214

Écran

L’écran de la Pebble Time est à la fois son point fort et son point faible. L’utilisation d’un écran e-paper dans une montre est vraiment une décision intéressante, avec ses hauts et ses bas; mais dans tous les cas, il est important de rappeler que c’est grace à lui que la montre peut profiter de 7 jours de batterie (et même 10 avec la Pebble Time Steel). 7 jours, c’est beaucoup. 7 jours, c’est un de ces vieux téléphones d’il y a 10 ans.

La couleur, mine de rien, ajoute beaucoup à l’écran. Je ne vais pas rentrer dans les détails logiciels tout de suite, mais l’utilisation de la couleur dans l’OS est très proéminente, et franchement agréable. On est toutefois limités à 64 couleurs, ce qui sera gênant dans certains cas. Le geek en moi aime toutefois beaucoup cette limitation. Un écran limité à 144×168 pixels et 64 couleurs, ça permet de donner libre cours à l’imagination des développeurs et designers ; tout comme une limitation de 140 caractères a donné vie à un service web aujourd’hui inévitable.

NYAN NYAN NYAN NYAN NYAN NYAN NYAN~

Nyan nyan nyan nyan nyan nyan nyan nyan~

Le gros point faible de l’écran, c’est sa lisibilité dans certaines situations. Là où l’écran de la Pebble originelle était quasiment toujours lisible sauf dans l’obscurité, ma première impression en voyant l’écran de la Time est qu’il est… sombre. Les couleurs sont fades. Il est très facilement lisible en plein soleil, mais en intérieur, c’est moins facilement le cas ; le manque de contraste fait que vous devrez plus souvent activer le rétroéclairage, qui, heureusement, fonctionne toujours aussi bien. Vous pouvez secouer votre poignet pour l’activer, et il est même plus réactif qu’avant, ce qui est une bonne chose.

C'est... sombre.

C’est… sombre. Et je suis à côté d’une fenêtre.

Enfin, le verre de l’écran est une amélioration incroyable par rapport au plastique peu résistant de la Pebble originelle. Il est aussi élégant qu’il a l’air solide, malgré un biseau assez large autour de l’écran.

L’écran est le point fort de la Pebble Time. Dommage que ce soit aussi son point faible.

Boutons

Ne vous attendez pas à trouver une dalle tactile sur la Pebble, oh non. Les quatre boutons sur les tranches de la montre seront vos amis pour la contrôler.

Ils sont beaucoup plus agréables à utiliser que ceux de la Pebble originelle. Ils sont plus « clicky », plus jolis, et mieux intégrés dans la montre. La fonctionnalité reste la même : un bouton « retour » sur la gauche, et trois boutons sur la droite (haut, bas, et « sélectionner »).

Bracelet

Je ne vois pas beaucoup d’utilisateurs de Pebble qui gardent le bracelet en silicone fourni avec. J’ai décidé de le garder, du moins pour l’instant, en attendant de trouver mieux. Dans tous les cas, la montre est compatible avec n’importe quel bracelet 22mm standard, donc si vous en avez un qui traîne, vous pourrez toujours l’utiliser si l’envie vous prend !

Le gros défaut du bracelet par défaut est qu’il se salit très, très vite. C’est un cauchemar. Pourquoi ? Aucune idée. Est-ce que c’est grave ? Bof, la vie continue.

Capteurs & Smartstraps

Peut-être étonnamment, la Pebble Time ne se vente pas d’embarquer des dizaines de capteurs dédiés à la santé. Vous y trouverez une boussole et un accéléromètre ; c’est tout. Pas de capteur de rythme cardiaque, de GPS, ou autre.

Le pari de Pebble, c’est que ces capteurs pourront, à terme, être fournis par des Smartstraps, ou « bracelets intelligents ». Les bracelets de la Pebble Time peuvent en effet se brancher sur le port de rechargement (propriétaire), désormais placé sous la montre, et communiquer avec.

IMG_20150613_120522

L’arrière de la Pebble Time. On notera la résistance à l’immersion, que je n’ai pas encore testée.

Les API pour communiquer avec les Smartstraps ne sont cependant pas encore disponibles, et les Smartstraps non plus d’ailleurs. Seul le temps nous dira si le concept intéresse assez des fabricants pour qu’ils investissent dans ce marché.

Microphone

La Pebble Time embarque un microphone qui permet, pour l’instant, de dicter des réponses aux messages (Hangouts, Messenger…). Plus de fonctionnalité est prévue, ainsi que des API. Pour l’instant, le micro fait ce qu’on attend lui ; il permet de dicter facilement, avec beaucoup de langues disponibles, et comprend en général assez bien ce qu’on lui dit, même si ça reste parfois aussi frustrant que la dictée vocale à laquelle on est habitués. Finalement, le seul problème est que je suis rarement dans une situation où dicter un message est plus simple et pratique que de sortir mon téléphone pour le taper.

Vibreur

Lorsque vous recevez une notification, votre Pebble vibre. C’est sa manière de communiquer et de vous informer que quelque-chose se passe.

Je m’attendais à ce que la Pebble Time améliore ce point, vu qu’elle embarque un moteur différent de celui de la Pebble originelle pour les vibrations. Sauf que… non. Les vibrations sont encore plus fortes, et pas de réglage pour en changer l’intensité. C’est bien pour ne rien rater, mais c’est moins bien pour la discrétion, sans compter que ce n’est pas simplement agréable. Une vibration plus discrète aurait été souhaitable, à la manière de ce qui peut se retrouver dans l’Apple Watch.

Software

La Pebble Time n’est pas qu’une simple évolution matérielle. Elle a aussi apporté une nouvelle version de Pebble OS, qui est complètement différente des versions précédentes, si ce n’est que les applications compilées pour les anciennes Pebble fonctionneront également sur Pebble Time. Il est prévu que cette mise à jour soit disponible pour les autres Pebble dans le futur.

Interface

Pebble OS 2.0 était loin d’être parfait niveau UX. Les contrôles cachés et le manque de consistance entre les applications pouvaient rendre leur utilisation peu intuitive dans certains cas.

La version 3 du système apporte des guidelines plus strictes au niveau de l’interface, et surtout une identité très forte de par l’utilisation de couleur, d’animations, et d’une charte graphique très agréable. Tout cela rend l’interface plus cohérente et fun à utiliser, au prix d’interactions un peu plus longues quand il s’agit d’effectuer des actions répétitives (descendre dans la timeline, par exemple). Si on pèse le pour et le contre, c’est clairement une victoire pour les animations.

Gestion des applications

Sur la Pebble originelle, il n’était possible d’installer que 7 applications/cadrans au maximum. Avec la Pebble Time, la limite n’est virtuellement plus là : votre montre contient une liste de toutes les applications, et si vous essayez d’ouvrir une app qui n’est pas sur la montre, elle est téléchargée depuis votre téléphone et en remplace une autre, tout cela de façon transparente.

C’est un système qui fonctionne étonnamment bien : les applications mettent quelques secondes à charger, mais il est rare d’avoir besoin de plus de 7 applications installées sur une montre. Celles qui n’y sont pas sont celles qui servent occasionnellement, et il est dans ce cas bien plus pratique de ne pas avoir à sortir son téléphone, supprimer une autre application, et en charger une nouvelle.

Bien joué, Pebble.

Notifications

Les notifications font maintenant partie intégrale de Pebble. C’est bête à dire, mais jusqu’à récemment, il fallait obligatoirement une app tierce-partie pour recevoir les notifications de n’importe quelle app sur votre Pebble. Aujourd’hui, tout est configurable dans l’application Pebble, et vous pouvez choisir quelles applications sont autorisées à envoyer des notifications sur votre montre.

Les notifications sont vraiment la fonctionnalité la plus pratique d’une montre connectée. Le fait de pouvoir passer son téléphone en mode silencieux 24/24 et reposer sur la discrétion d’une vibration à son poignet est très confortable, que ce soit pour les messages, les appels, ou juste n’importe quelle notification dont vous dépendez. Je passe beaucoup moins de temps sur mon téléphone depuis que j’ai perdu le réflexe de le regarder toutes les 5 minutes pour voir si quelqu’un m’a mentionné sur Twitter.

Sur Android, les notifications sont même 10 fois meilleures : à l’instar d’Android Wear, vous pouvez répondre aux notifications depuis votre montre, soit par la voix, soit avec des emoji, soit en envoyant un message prédéfini, que vous pouvez personnaliser sur votre téléphone. Il est également possible d’archiver un email depuis la notification par exemple, ou de télécharger un podcast qui vient de sortir depuis une notification Pocket Casts ; si vous pouvez le faire depuis une notification sur Android, vous devriez pouvoir le faire depuis la Pebble.

Timeline

Le plus gros changement est une fonctionnalité appelée Timeline. En appuyant sur les boutons haut et bas, vous naviguez dans votre Timeline. Aller vers le haut, c’est remonter dans le passé ; aller vers le bas, c’est avancer dans le futur. Timeline peut vous afficher la météo, les événements dans votre calendrier, les résultats sportifs, les appels manqués…

Cette fonctionnalité est très mise en avant, et je dois avouer l’avoir trouvée plutôt pratique, principalement pour la météo et pour consulter mon agenda. Timeline est disponible comme outil pour être utilisé par les développeurs, donc je pense qu’on va voir le nombre d’applications en prenant avantage se multiplier dans un futur proche.

La vue "futur" de Timeline

La vue « futur » de Timeline

Bilan

La Pebble Time est une très bonne montre. Assez étonnamment, je me suis surpris à l’utiliser comme… une montre, de façon plus marquée que la Pebble originelle, qui s’apparentait plus à un gadget. La Time se laisse ignorer, et n’interrompt son porteur que quand c’est nécessaire. En plus d’être une simple montre, elle met en avant des fonctionnalités très simples et rapides d’accès qui peuvent être utilisées à la volée, sans rester scotché pendant 3 minutes à regarder votre poignet. L’heure, la musique, la météo, les notifications… tout est accessible facilement, et même plus facilement que sur Android Wear, par exemple. Il est ainsi plus difficile de la comparer à l’Apple Watch, qui se voit comme un petit iPhone pour poignet rempli de gadgets.

La Pebble Time n’en reste pas moins versatile, et saura répondre à vos besoins quand ils se manifesteront. Je l’utilise par exemple avec Sleep as Android pour mesurer mon sommeil, ou des applications utiles comme Timer+ pour avoir un chronomètre, QuickAuth pour les codes d’authentification à deux facteurs, ou Twistoast (pas de honte à me faire de la pub) pour avoir les horaires des bus sur mon poignet.

Un autre aspect très important est la personnalisation. Il existe des milliers de watchfaces (cadrans) pour la Pebble Time, et ce nombre n’est pas près de descendre. Des outils comme Watchface Generator permettent même de générer vos propres watchfaces sans avoir à toucher à une seule ligne de code, et si vous êtes prêt(e) à toucher au code… bienvenue dans le monde des gens qui programment leur montre. ❤️️

Je ne regrette pas d’avoir choisi une Pebble Time. J’ai l’impression que les alternatives sont intéressantes mais seraient vite lassantes. Mais comme d’habitude, je pense que ça dépend vraiment de l’usage et de ce que VOUS, vous voulez. En l’occurrence, 7 jours de batterie, un écran parfait pour du pixel art, et une montre personnalisable pas trop intrusive ou distrayante… c’est parfait pour moi.

it’s time

Life Is Strange – Le temps n’a jamais été aussi précieux

Si vous avez aimé le jeu The Walking Dead de Telltale, il y a de grandes chances pour que vous aimiez aussi Life Is Strange.

2015-02-01_00005

Le dernier né de DONTNOD Entertainment et Square Enix s’en inspire en effet beaucoup. Les mécaniques sont similaires, voire franchement pompées sur le modèle de Telltale. Le gameplay est simple : vous découvrez le monde dans lequel vous allez évoluer. Au fil des discussions et des découvertes, vous devrez faire des choix, qui auront une influence plus ou moins importante sur votre avenir et vos relations. Le jeu est découpé en plusieurs épisodes, là aussi à l’instar de The Walking Dead et autres. Rien de très nouveau de ce côté-là, donc; il ne manque à Life Is Strange guère que les QTE, et ils ne manqueront à personne.

Pourtant, il y a quelque-chose de différent. Légèrement différent.

Vous pouvez remonter le temps à volonté.

Une décision de gameplay qui pourrait à première vue sembler discutable : à quoi bon construire un jeu dans lequel je dois faire des choix si de toute façon il me suffit d’appuyer sur un bouton pour remonter dans le temps et changer d’avis ? Et bien, c’est simple : il n’y a pas de « bonne » réponse, de « bonne » décision. Et s’il y en a une, il est trop tard pour remonter dans le temps quand vous vous en rendez compte. Non, plus qu’une mécanique bancale, on a bien là affaire à quelque chose de nouveau – chose qu’il est toujours agréable de rencontrer dans le monde du jeu vidéo. Ce pouvoir vous fait vous sentir puissant, alors que vous ne l’êtes finalement pas tant que ça.

Voilà pour ce qui est du gameplay. Maintenant que les joueurs familiers aux jeux de Telltale savent de quoi je parle (et les autres aussi, je l’espère), on peut rentrer dans le vif du sujet. L’histoire. Je me limiterai à vous résumer le tout début du premier épisode, pour ne rien gâcher.

Vous êtes Max Caulfield, une jeune étudiante en photographie qui est entrée il y a quelques mois à Blackwell Academy, école très réputée de Arcadia Bay. Tout n’est malheureusement pas si rose : comme dans toute école réputée qui se respecte, il a des cons, et puisqu’on est aux USA, il y a même des clubs de cons qui s’unissent dans le seul but de montrer qu’ils sont fiers d’être cons (et riches). Vous avez tout de même des gens sur qui vous pouvez compter, qui deviendront vos amis si vous êtes gentille avec eux.

2015-03-28_00012

L’immersion est totale. Vous pouvez vous déplacer plus ou moins librement quand vous y êtes invité, aller parler aux autres étudiants, et surtout lire. Le monde est rempli d’affiches, d’objets qui ont leur histoire, de photos. Max aime beaucoup la photographie, et vous pourrez vous balader dans Arcadia Bay en cherchant des sujets qui feront de belles photos, des écureuils aux autobus délabrés. Plus vous passez de temps à explorer l’univers, plus vous en apprendrez sur le monde qui vous entoure. Life Is Strange n’est pas un jeu qui se speedrun; il se déguste.

2015-03-28_00001

Bien évidemment, le jeu ne se limite pas à l’exploration. Des événements viennent perturber votre tranquillité, et celle de toute la ville. Vous ne savez pas pourquoi vous avez le pouvoir de remonter le temps, mais une chose est sûre : si vous l’avez, c’est qu’il y a une bonne raison. Vous ferez d’innombrables rencontres, des découvertes choquantes, des amis proches, et aurez probablement envie de rire, de pleurer ou de claquer quelqu’un. Life Is Strange joue avec vos émotions, sans utiliser des techniques faciles et revues, mais subtilement, et vous en redemanderez.

Life Is Strange n’est clairement pas un jeu pour tout le monde. Si votre truc, c’est de jouer à Counter Strike 24/24, vous n’allez pas forcément être attiré par ce genre de jeu. Mais clairement, si vous aimez les jeux d’exploration, et si l’idée de vous balader dans un univers riche et profond dans le corps d’une étudiante en photographie un peu geek et timide vous donne envie de l’essayer, foncez. Vous n’êtes pas obligé d’acheter la saison complète, qui comptera 5 épisodes une fois tous sortis, disponible pour 20€; le premier épisode est disponible pour moins de 5€.

Au fait, rapide disclaimer : cet article n’est pas une critique, ni même une review complète de Life Is Strange. C’est juste l’avis d’un internaute qui a trouvé un de ses jeux préférés, et de loin. Vous êtes donc libre de chercher l’avis de gens plus critiques sur le sujet; mais si vous êtes comme moi, vous adorerez ce jeu.

Life Is Strange sur Steam

API Keolis Open Data : Récupérez les horaires des bus du réseau Keolis en temps réel

J’ai fait une découverte quelque-peut intriguante, il y a quelques temps, en passant au crible l’app officielle du réseau Twisto. Une URL était hard-coded, et pointait vers un sous-domaine de Keolis : timeo3.keolis.com.

 

Logo_Keolis_Groupe_0

La boîte qui vous permet d’aller au boulot quand le tram n’est pas en panne.

 

Cette découverte m’a mis la puce à l’oreille; étant développeur de Twistoast, une application qui jusqu’ici analysait directement les données présentes sur le site officiel de Twisto afin de présenter une liste d’horaires dans une application native, j’étais plutôt bien placé pour savoir que Timeo est le petit nom donné au système d’horaires en temps réel du réseau de bus de Caen. Et pas seulement, apparemment.

En effet, en fouillant un peu plus sur les Internets à propos de cette URL, je suis tombé sur un document fort intéressant sur Pastebin, documentant quelques fonctions de ce qui semble être une API permettant de récupérer les horaires en temps réel de tous les bus du réseau Keolis, en gros.

J’ai donc commencé à l’étudier et à la documenter de la manière la plus exhaustive possible, afin de la rendre accessible au public, et l’ai publiée sur un Gist. Cet article vient en complément du Gist, pour donner un peu de background à l’histoire et peut-être quelques précisions techniques, si jamais vous souhaitez vous servir des données.

Twistoast, avant

Twistoast est née il y a environ un an, comme un simple projet pour m’initier à Android. Je venais de commander une montre Pebble, et je voulais pouvoir accéder aux horaires des bus Twisto en temps réel depuis celle-ci, étant un utilisateur régulier de leur service pour aller étudier. J’ai eu beau chercher, et chercher, et chercher, je ne trouvais pourtant aucun moyen de récupérer ces horaires en temps réel autre que leur site web; leurs applications officielles utilisent des WebViews, et aucune API ne semble disponible.

J’ai ainsi commencé à étudier le fonctionnement de Timéo, le système utilisé par Twisto pour fournir ces données et les rendre disponibles à l’utilisateur final, dont l’interface a été développée par Actigraph, un contracteur vraisemblablement expérimenté dans le domaine, qui gère également un bon nombre des sites web de Keolis, et probablement une bonne partie de leur backend.

Après de longues heures passées sur le sujet, je termine plus ou moins le développement d’une API en PHP me permettant de récupérer simplement tout ce dont j’ai besoin pour récupérer les horaires des bus Twisto en temps réel. Elle me donne alors grande satisfaction, et même si elle souffre encore de nombreux bugs (que je résoudrai au fil du temps), je commence à bosser sur la partie client de l’app Android qui deviendra Twistoast.

Pas grand-chose à raconter ici. J’ai beaucoup appris sur le développement Android grâce à cette app, et j’ai enfin eu accès aux horaires des bus Twisto sur ma montre. HUGE SUCCESS!

Keolis et l’Open Data

Retour au présent. Vers la fin de l’été dernier, je suis donc tombé sur cette API magique, directement disponible sur un sous-domaine de Keolis, et qui retourne les données en XML. Elle n’est pas trop mal conçue, et assez complète, mais j’aurais quelques remarques à faire si jamais vous souhaitez l’utiliser dans un de vos projets.

Vous pouvez retrouver la documentation de l’API ici, sur Github.

Remarques techniques

Premièrement, l’API devrait fonctionner pour les réseaux de bus des villes suivantes : Le Mans, Pau, Soissons, Aix-en-Provence, Caen, Dijon, Brest, Pau-Agen, Blois, St-Étienne, Nantes, Montargis, Angers, Macon-Villefranche, Épinay-sur-Orge, et Rennes (sauf erreur). Cependant, les données fournies pour certaines villes sont franchement limitées. Vérifiez donc cela avant de vous lancer dans le développement du service du siècle.

Ensuite, aucune idée de ce à quoi peut servir le paramètre xml=2. Tout est clair pour xml=1 et xml=3, mais xml=2 reste un mystère. Si vous trouvez quelque-chose, faites moi signe.

Ensuite, gros problème. Vous comprendrez vite que le paramètre refs est ce qui identifie un arrêt dans ce système; or, il change au cours du temps. Eh oui, c’est bizarre, mais c’est comme ça. J’ai cru remarquer qu’il ne change que pour certaines périodes; changement d’horaires, peut-être ? Toujours est-il qu’il faudra le mettre à jour régulièrement, faute de mieux. Vous pourrez toutefois récupérer les infos d’un seul arrêt dont vous connaissez le code (qui est du coup un identifiant qui ne change pas dans le temps… déconcertant), avec un appel du type ?xml=1&code=2523.

Remarques pratiques

L’API fournit des infos supplémentaires assez sympathiques, comme la couleur de la ligne, ou la direction d’un bus précis (en complément de la direction de la ligne). Pas de géolocalisation des arrêts cependant, contrairement à cette autre API de Navitia que je n’ai malheureusement pas eu l’occasion d’utiliser, vu qu’elle ne propose justement pas d’horaires en temps réel.

Remarque bête, mais néanmoins à noter, la capitalisation des noms est dégueulasse et sans aucun accent. Une fonction de capitalisation custom ne sera donc probablement pas de trop.

Conclusion

Un bien gros article pour un sujet qui va probablement toucher deux personnes dans l’Univers, mais j’avais besoin de transmettre ma connaissance. Donc si vous êtes cette autre personne, bonne chance !

Par ailleurs, je ne sais pas qui a posté le Pastebin originel, mais je sens que je lui dois une bière. Merci à lui ou elle !

Je sens que cette API a vraiment énormément de potentiel, et qu’une tonne d’autres données est disponible sur le site de Keolis. Je n’étais pas du tout intéressé par le domaine avant de me mettre à développer Twistoast, mais il y a encore énormément de progrès, de découvertes et d’inventions à développer dans le domaine du transport, et j’ai hâte de voir (ou même de participer) à ça.