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