Aller au contenu

Télécharger les données historiques

Les données historiques de chaque appareil sont dans des fichiers texte (datalogs) sur son serveur d’appareils. Chaque fichier couvre un jour, un mois ou tout l’historique. Vous avez besoin de la permission de lecture sur l’appareil.

Pour un export sans code, utilisez les rapports de l’application. Voir vos données.

  1. Trouvez le serveur de l’appareil. Appelez get_device_info.php et lisez le champ device_server. Voir l’API REST.
  2. Trouvez l’ordre des colonnes. Appelez get_device_definitions.php?family_id=<family> et lisez readings et output_names.
  3. Calculez le niveau et le numéro de fichier (bin) pour la période que vous voulez.
  4. Téléchargez chaque fichier depuis le serveur de l’appareil.
  5. Joignez les lignes, triez-les par horodatage et remplissez les champs vides.
Fenêtre de terminal
curl --compressed \
-H "Authorization: Bearer-API YOUR_API_KEY" \
"https://DEVICE_SERVER/datalogs.php?serialno=e11:123&id=0.20740&ver=2"

Remplacez DEVICE_SERVER par la valeur du champ device_server de l’appareil.

Paramètre Valeur
serialno Le numéro de série de l’appareil
id <level>.<bin>, par exemple 0.20740
ver 2

Pour l’authentification, envoyez l’en-tête Authorization: Bearer-API YOUR_API_KEY ou Authorization: Bearer YOUR_ACCESS_TOKEN.

Le serveur peut envoyer le fichier compressé (gzip ou br). L’option curl --compressed le décompresse.

Code HTTP Signification
200 Le fichier, en text/plain
400 serialno ou id incorrect
403 Vous n’avez pas la permission de lecture sur l’appareil
404 Il n’y a pas de données pour ce fichier

Tous les calculs utilisent UTC.

Niveau Un fichier par Calcul du bin Exemple
0 Jour floor(unix_seconds / 86400) 14 octobre 2026 = 0.20740
1 Mois (year - 1970) * 12 + (month - 1) Octobre 2026 = 1.681
2 Tout l’historique Toujours m 2.m

Le niveau 0 a toutes les lignes du jour. Le niveau 1 a environ une ligne par jour. Le niveau 2 a environ une ligne par mois.

L’application utilise le niveau 0 pour les périodes jusqu’à 7 jours et le niveau 1 pour les périodes jusqu’à 5 mois. Pour les périodes plus longues, elle utilise 2.m.

Chaque ligne est une mesure. Les champs sont séparés par ;.

timestamp;reading1;reading2;...;readingN;output1;...;outputM
  • Le timestamp est en secondes unix (UTC). Il peut avoir des décimales.
  • Ensuite viennent les mesures, dans l’ordre des readings de la famille.
  • Ensuite viennent les sorties, dans l’ordre de output_names.
  • Un champ vide signifie que la valeur n’a pas changé. Utilisez la dernière valeur d’une ligne précédente.
  • La valeur 2147483648 signifie que la mesure est absente.
  • Les lignes ne sont pas toujours triées. Triez-les par timestamp.

Un appareil de la famille e11 a readings = ["T", "GI", "GIC", "GI2", "GI2C"] et pas de sorties.

1791936198.977;2120;1;0;1;0
Champ Valeur Signification
timestamp 1791936198.977 Heure de la mesure
T 2120 21,20 °C, parce que la conversion de T est divide_by_100
GI 1 État de la première entrée
GIC 0 Compteur de la première entrée
GI2 1 État de la deuxième entrée
GI2C 0 Compteur de la deuxième entrée

Vous trouvez les conversions et les unités dans le dictionnaire readings des définitions. Voir l’API REST.

Cet exemple télécharge les 3 derniers jours d’un appareil.

Fenêtre de terminal
SERVER=DEVICE_SERVER
SN=e11:123
TODAY=$(( $(date -u +%s) / 86400 ))
for BIN in $(seq $((TODAY - 2)) $TODAY); do
curl -s --compressed \
-H "Authorization: Bearer-API YOUR_API_KEY" \
"https://$SERVER/datalogs.php?serialno=$SN&id=0.$BIN&ver=2"
done | sort -t';' -k1,1n

Le serveur MCP a l’outil get_device_history. Il accepte les mêmes niveaux et bins.

Chat avec le support