La Liberté, la Framboise, le Chaud, le Froid, le Sec, l'Humide, et les 80 caractères

Histoire d’un petit projet franco-français, bricolé mais pour une fois utile, et surtout, surtout, sans l’ombre d’une impression 3D :slight_smile:

Dans le but de contribuer quelque chose de moins désolant que l’étalage, dans mon premier fil, de mon incompétence en impression 3D, je vais décrire dans celui-ci, en mode feuilleton, le bricolage qui m’occupe bien en ce moment. La partie système et code est quasiment finie, reste la partie intégration (appelée aussi mise en boîte), qui est souvent celle que je préfère :slight_smile:

Bon, il va falloir plein de posts pour tout décrire, ne retenez pas votre souffle et commençons par le commencement…

Beaucoup d’entre vous (en tout cas ceux qui sont abonnés internet chez Free), savent sans doute que les “box” de cet opérateur (les 2/3 dernières générations au moins) ont une particularité assez rare : elles embarquent en effet une “API REST”, qui permet à la fois d’en piloter les fonctionnalités, et de récupérer les données qu’elle contiennent.
D’où “Liberté” dans le titre, et le fait que je ne poste pas ça sur Hackaday :slight_smile:
Free n’a pas fait d’énormes efforts pour documenter cette API, et de plus en a géré le versionnement avec les pieds.
Heureusement, des courageux ont défriché le chemin, et on trouve suffisamment d’exemples (voire des Libs Python toutes faites) pour se mettre le pied à l’étrier.
Il y a plusieurs années j’avais réussi à faire tourner un premier script python, dans une fenêtre DOS.
Il montrait l’état du lien, les débits up/down synchronisés, et le taux de correction d’erreur (FEC), mais pas les débits instantanés.
Il ne générait pas non plus de logs, notamment les déconnexions/reconnexions, fréquentes sur le xDSL).
La Freebox ne garde que les 12 dernières, c’est un peu juste pour les stats et les ouvertures de tickets :slight_smile:


Le charme du rustique à l’ancienne, en somme :slight_smile:

Donc, ça m’a pris d’un coup la semaine dernière de refaire tout ça en moins simplet (mais toujours en python :-).
Outre compléter les données et ajouter des logs, je voulais aussi et surtout que ça tourne de façon autonome sur une plateforme dédiée, pour que cette métrologie soit dispo même quand le PC est éteint (ou que je m’en sers à autre chose :-).

Donc, première étape : plongée en apnée dans le(s) bac(s) à bazar que je collectionne, et que trouve-je au fond ?..

Du beau vintage… une vénérable raspberry pi (la Framboise dans le titre) de décembre 2011 (V1 ou V2 ?), sans doute la première à subir mes bricolages à partir de 2012.
Plus un magnifique afficheur LCD rétroéclairé de la même période, avec 4 lignes de 20 caractères, s’il vous plaît !
(bon, c’était en pièces détachées, j’ai tout refait de zéro).
Votre mission sera donc de tout faire tenir en 80 caractères, rompez !

Je faisais surtout des DAP à mes débuts, il en reste quelques traces sur Vimeo :


on reconnaît bien l’afficheur :slight_smile:
J’avais quelques doutes sur l’état de la Pi (qui visiblement a été charcutée), je lui a mis un raspbian lite sur une SD 4Go qui traînait, et roule ma poule.
Vu que les deux morceaux semblent en pleine forme, on prend les mêmes et on recommence…

Aparté : pour ceux que ça intéresserait, même si c’est hors-sujet ici, à l’époque je documentais mes bricolages dans le forum (audio) TellementNomade, dans le sous-forum DIY-Vos fabrications :slight_smile:
http://www.tellementnomade.org/forum/viewforum.php?f=66
Auteur: fpp, mots-clé: DAPI, BMP, Raspberry…
Rectification : le vieux fil DAPI (2013-2014) a été archivé dans : Tellement Nomade Afficher le sujet - DAPI
Il avait été lancé par d’autres membres, l’idée m’a plu et m’a finalement lancé dans le monde des SBC… :slight_smile:

NB: ceci est un feuilleton, et dans un feuilleton on ne pose pas de question entre deux épisodes, sinon ça devient illisible :slight_smile:
Soyez tous patients, il reste pas mal de boulot, on ouvrira les débats après le clap de fin :slight_smile:

Bon, en guise de transition, un petit topo sur la partie système et code de l’appli, qui n’est pas la plus compliquée dans ce projet.

Côté système, on est sur une raspbian lite, donc sans environnement graphique, administrée via ssh/putty.
Côté code, vous aurez compris que pour moi, hormis Python point de salut :slight_smile:
J’ai eu la chance de trouver une lib python (pyfbx) qui n’existait pas lors de mes premiers essais, qui gère très bien l’API Freebox, et facilite beaucoup l’authentification d’une appli sur la box: Laurent / pyfbx · GitLab
Pour l’écran, j’ai retrouvé celle que j’avais utilisée au tout début (ou une variante) :
I2C 20x4 LCD character display on a #RaspberryPi - Raspberry Pi Pod and micro:bit base
Comme souvent, la plus grosse partie du boulot est gratuite :slight_smile:
Reste la partie “métier” : le code Python actuel fait exactement 99 lignes (il va grossir en rajoutant quelques fonctionnalités).
Il boucle à intervalles d’1 seconde, récupère les données de la box avec pyfbx, les met en forme et les affiche avec la lib lcd.
Rien de bien méchant, mais dans un cas il faut trouver les appels d’API qui vont bien, et dans l’autre arriver à tout faire tenir dans 4 x 20 caractères…

… mais c’est possible ! :slight_smile:

J’ai juste galéré un bon moment pour arriver à ce que l’appli se lance au démarrage… il y a plein de façons de faire ça sous raspbian : le script /etc./rc.local, crontab, init.d, systemd…
Finalement la seule que j’aie réussi à faire fonctionner après moult essais, c’est le bon vieux rc.local :slight_smile:

Bon, maintenant que ces petits détails sont acquis, on va pouvoir passer à mon étape préférée, celle que j’appelle “intégration”, dans ma définition perso : passer d’un assemblage qui fonctionne, posé sur la table avec des fils partout, à une vraie “appliance” proprement emballée et qui ne fait pas hurler Madame :slight_smile:

Ceux d’entre vous qui ont eu la curiosité de parcourir les deux fils mentionnés plus haut sur TellementNomade, sur les deux projets de lecteurs audio (DAPi et BMP), en auront sans doute déduit qu’en la matière, je ne recule devant rien :slight_smile:

Il faut dire au passage que je suis du genre “collectionneur compulsif”, atavique et génétique : je ne jette jamais rien si j’ai la place de le garder, et qu’il existe une chance, même infinitésimale, que ça puisse servir à quelque chose un jour.
Parfois il faut attendre longtemps, voire très longtemps que l’occasion se présente, mais ça finit souvent par arriver :slight_smile:

Ma principale addiction pathologique, dans l’histoire, ce sont les boîtiers… Je ne sais pas jeter un boîtier :slight_smile:
Quand un appareil devient complètement obsolète, ou irrémédiablement en panne, je l’ouvre, le vide, récupère ce qui peut l’être à l’intérieur, et surtout, le boîtier…
J’ai des bacs remplis de boîtiers de toutes tailles, formes et matières, qui ne peuvent évidemment que “servir un jour” :slight_smile:
(là aussi, les fils DAPi et BMP sur TN sont une belle vitrine…)

C’est donc mon grand plaisir (et ma principale motivation) dans ce long feuilleton, que de vous présenter l’heureux élu qui va héberger ce projet… parce que celui-là, il a attendu 20 ans :slight_smile: