FIT PHP Parser pour extraire les données d'un fichier de données fit.

Qu'est ce que c'est ?

La librairie FIT PHP Parser permet de lire les données FIT d'un fichier.
Ces fichiers sont générés par des appareils permettant de suivre ses performances sportives.

Pour ma part, j'utilise un compteur GPS Sigma ROX 4 pour ma pratique du cyclisme.
Après avoir testé quelques librairies, aucune ne me convenait en termes de fonctionnalité et de structuration des données.
En effet, certaines librairies existent en PHP, mais ne permettent pas de manipuler des objets.

Cette librairie me sert à extraire des données du type coordonnées GPS, température extérieure, vitesse ou dénivelé.

Par exemple, je peux obtenir un value object Altitude :

<?php

/**
 * Do not edit this file: it is auto-generated from the fit-parser-generate-profile command.
 */

declare(strict_types=1);

namespace FitParser\Records\Generated\Record;

use FitParser\Enums\Unit;
use FitParser\Records\FloatValueInterface;
use FitParser\Records\FloatValueTrait;

final readonly class Altitude implements FloatValueInterface
{
    use FloatValueTrait;

    public const Unit UNIT = Unit::METERS;
}

Ces values objects sont des objets immutables qui ont été générés à l'aide de Nette en parsant un fichier fournit par Garmin dans son SDK .

La structure des fichiers FIT est normée par un protocole et défini la structure du fichier.
Le parsing du fichier utilise le composant Symfony String .

Il s'agit d'une librairie en cours de développement publiée sous licence MIT. Le code source est disponible sur GitHub .
La librairie étant en cours de développement, le code risque de fortement évoluer.
Cet article est une introduction à la librairie FIT PHP Parser et son utilisation.

FIT-PHP-PARSER

Installation

Pour utiliser la librairie FIT PHP Parser, vous devez installer le package FIT PHP Parser à l'aide de composer :

composer require arnaud-deabreu/fit-php-parser

Utilisation

L'utilisation de cette librairie est simple : il suffit de donner le contenu du fichier fit au Parser et d'appeler la méthode parse pour extraire les données.
Un fichier FIT est composé de plusieurs enregistrements qui contiennent des données de différents types.
Un enregistrement implément l'interface RecordInterface et ses valeurs implémentent l'interface ValueInterface.

<?php

use FitParser\Parser;

$parser = new Parser(
    file_get_contents('path/to/fit/file.fit')
);
$parser->parse();

$records = $parser->getRecords(); // FitParser\Records\RecordInterface[]

// Then you can get values from Records like:
$values = $records[0]->getValues(); // FitParser\Records\ValueInterface[] 

Par exemple, un fichier généré avec mon compteur GPS aura plusieurs enregistrements de type Record que l'on peut parcourir afin d'obtenir :

  • La date du Record sous forme de DateTimeImmutable
  • La position GPS sous forme de deux valeurs Latitude et Longitude
  • La distance parcourue en mètres
  • La température en degrés Celsius
  • etc

Et maintenant ?

Il manque encore la gestion des Components par exemple et leur gestion devrait être ajoutée prochainement.
Vous pouvez aussi consulter les derniers changements de la librairie et participer au développement en ouvrant une Pull Request.

N'ayant pas d'autres appareils que mon ROX 4.0, certains fichiers pourraient ne pas être extraits correctement. Si vous utilisez la librairie, n'hésitez pas faire vos retours sur le repository afin d'améliorer la librairie !

Crédit photo Óscar Aguilar Elías

Arnaud DE ABREU

Arnaud De Abreu

Développeur PHP/ Symfony