Installer et utiliser accuchek
Assez de théorie, place à la pratique. Voici comment installer accuchek sur sa machine et récupérer ses mesures. Tout se passe dans un terminal, et il n'y a besoin des droits administrateur que pour l'installation.
Les prérequis
accuchek a besoin d'un compilateur C++ (C++17), de make et des en-têtes de libusb. Selon la distribution :
| Distribution | Paquets |
|---|---|
| Debian, Ubuntu | g++ make libusb-1.0-0-dev |
| Fedora | gcc-c++ make libusb1-devel |
| Arch | gcc make libusb |
| Mageia | gcc-c++ make lib64usb1.0-devel |
Par exemple, sous Debian ou Ubuntu :
sudo apt update && sudo apt install g++ make libusb-1.0-0-dev
Compiler et installer
On récupère le code, on compile, on installe :
git clone https://github.com/Ronnarrdd/accuchek.git
cd accuchek
make
sudo make install
make install copie deux fichiers :
- le programme dans
/usr/local/bin/accuchek; - la règle udev dans
/etc/udev/rules.d/70-accuchek.rules.
Puis on demande à udev de prendre la règle en compte :
sudo udevadm control --reload
sudo udevadm trigger --subsystem-match=usb
Pour les curieux et les empaqueteurs : make install respecte les variables PREFIX, DESTDIR et UDEVDIR (par exemple UDEVDIR=/usr/lib/udev/rules.d). Par défaut, le binaire est compilé de façon portable, et make OPTFLAGS="-O3 -march=native" l'optimise pour la machine qui compile.
Première lecture
On branche le lecteur en USB. Son écran affiche "transfert de données". On lance alors :
accuchek > mesures.json
Selon le nombre de mesures en mémoire, ça prend quelques secondes. Si la commande ne dit rien et que echo $? affiche 0, c'est gagné : tout est dans mesures.json.
Les commandes utiles
accuchek > mesures.json # le premier lecteur connu trouvé
accuchek 1 > mesures.json # le deuxième, si plusieurs sont branchés
accuchek --set-time > mesures.json # remet aussi l'horloge du lecteur à l'heure si besoin
accuchek --capture session.trace > mesures.json # enregistre aussi l'échange USB
accuchek --replay session.trace > mesures.json # rejoue un enregistrement, sans lecteur
accuchek --known-devices # liste des lecteurs acceptés
accuchek --config mes-lecteurs.txt # ajouter ou désactiver des modèles
accuchek --help
Ce qu'on obtient
Un seul objet JSON, toujours avec la même forme :
{
"format": 2,
"meter": {"manufacturer": "Roche", "model": "925", "serial": "...", "firmware": "v1.9.6", "hardware": "G", "software": "", "system_id": "..."},
"clock": {"meter": "2026/10/01 21:06:58", "pc": "2026/10/01 20:42:52", "offset_s": 1446, "settable": true, "pc_synchronized": true, "action": "set"},
"glucose": {"announced": 638, "received": 638},
"meal": {"announced": 576, "received": 576, "unmatched": 0},
"readings": [
{"id": 0, "epoch": 1617009120, "timestamp": "2021/03/29 11:12", "mg/dL": 133, "mmol/L": 7.388889, "status": 0, "meal": "before_meal"}
]
}
meter: la carte d'identité du lecteur ;clock: son horloge, l'écart avec le PC, et ce qui a été fait (set,within_tolerance,not_settable,pc_not_synchronized...) ;glucoseetmeal: ce que le lecteur annonce et ce qu'on a reçu. Si les deux nombres diffèrent, il y a un souci ;readings: les mesures.timestampest l'heure affichée par le lecteur,epochla même heure convertie dans le fuseau horaire du PC, heure d'été comprise.
Jouer avec les données grâce à jq
Le JSON se prête très bien à jq, l'outil en ligne de commande pour manipuler du JSON. Quelques exemples :
# la dernière mesure
jq '.readings[-1]' mesures.json
# uniquement les mesures à jeun
jq '.readings[] | select(.meal == "fasting") | {timestamp, "mg/dL"}' mesures.json
# les mesures hors échelle (HI ou LO)
jq '.readings[] | select(.range)' mesures.json
# un CSV date;valeur, à ouvrir dans un tableur
jq -r '.readings[] | select(.epoch) | [.timestamp, ."mg/dL"] | join(";")' mesures.json > mesures.csv
Quand ça ne marche pas
| Code de sortie | Que faire |
|---|---|
| 2 | Le lecteur n'est pas vu. Vérifier le câble (certains câbles micro-USB ne font que la charge), et regarder si lsusb affiche bien 173a:21d5. |
| 3 | Accès refusé : installer la règle udev (voir plus haut), puis débrancher et rebrancher le lecteur. |
| 4 ou 5 | Débrancher le lecteur, attendre que son écran s'éteigne, le rebrancher et attendre "transfert de données" avant de relancer. |
Pour aller plus loin, le mode debug affiche des logs et l'hexdump de chaque paquet sur la sortie d'erreur, sans jamais toucher à la sortie JSON :
ACCUCHEK_DBG=1 accuchek > mesures.json 2> debug.log
Un fichier mesures.json, une trace .trace ou un debug.log contiennent des données de santé. On les garde pour soi, on ne les colle pas dans un ticket ou un forum sans avoir retiré les mesures.
Aucun commentaire à afficher
Aucun commentaire à afficher