Nouveau : le pare-feu IA surveille chaque module et explique chaque incident en termes simples. Découvrez comment ça marche

Agrégats et cumuls

Comment les relevés numériques sont résumés par minute, heure et jour, quelle résolution une fenêtre temporelle lit, les sept fonctions d'agrégation et increase pour les compteurs.

Lire chaque valeur brute d’une année serait lent et ne tiendrait pas sur un graphique. Hermetry résume donc les relevés numériques par minute, par heure et par jour, et lit le résumé qui correspond à la fenêtre demandée. Cette page explique les résumés, la façon dont la résolution est choisie et ce que renvoie chaque fonction d’agrégation.

Les résumés

Pour chaque clé numérique de chaque appareil, le stockage conserve cinq valeurs par intervalle :

ValeurSignification
sumLa somme des valeurs de l’intervalle
countNombre de valeurs reçues dans l’intervalle
minLa plus petite valeur
maxLa plus grande valeur
lastLa valeur dont l’horodatage est le plus récent dans l’intervalle
NiveauIntervalleConservé pendant
Agrégats à 1 minute1 minuteVotre classe de rétention, 31 jours au maximum
Cumuls horaires1 heureVotre classe de rétention complète
Cumuls journaliers1 jour, de minuit à minuit UTCVotre classe de rétention complète

Tous les intervalles sont alignés sur l’UTC. Les résumés par minute sont calculés par une tâche qui s’exécute chaque minute ; les cumuls horaires et journaliers en sont dérivés. Un relevé arrivé après le résumé de sa minute remet cette minute à jour, de sorte que les relevés tardifs sont inclus. Un relevé fraîchement enregistré peut mettre une ou deux minutes à apparaître dans les résumés ; les lectures brutes (fenêtres allant jusqu’à 24 heures) le voient immédiatement.

Les valeurs texte, true/false et JSON ne sont pas résumées. Voir Nombres, texte et valeurs vrai/faux.

Quelle résolution une fenêtre lit

Avec l’intervalle auto (la valeur par défaut pour les graphiques et l’API) :

Durée de la fenêtreRésolution
Jusqu’à 24 heuresValeurs brutes, chaque relevé
Jusqu’à 10 000 minutes (environ 6,9 jours, donc une fenêtre complète de 7 jours lit déjà des heures)1 minute
Jusqu’à 10 000 heures (environ 416 jours)1 heure
Plus long1 jour

Une fenêtre peut contenir au maximum 10 000 intervalles à la résolution choisie. Si vous demandez une résolution fixe qui en nécessiterait davantage (par exemple 1m sur 30 jours), l’API répond 400 avec le code range_too_large. Demandez un intervalle plus large ou une fenêtre plus courte.

Une fenêtre qui remonte plus loin qu’un niveau conservé ne renvoie rien pour la partie manquante. Par exemple, avec la classe de 365 jours, les intervalles 1m de plus de 31 jours sont supprimés ; demandez plutôt 1h.

Les fonctions d’agrégation

Chaque intervalle renvoie une valeur, calculée à partir de ses cinq valeurs :

FonctionValeur par intervalleUtilisation
avg (par défaut)sum / countTempératures, niveaux, pressions
minLa plus petite valeurNiveau le plus bas, point le plus froid
maxLa plus grande valeurPics, « est-ce arrivé » pour les clés 0/1
lastLa dernière valeurRelevés de compteurs, états, consignes
sumLa somme des valeursValeurs déjà exprimées par intervalle (litres sur l’intervalle, événements comptés à 1)
countLe nombre de relevésTaux de remontée, complétude des données
increaseHausse d’un compteurCompteurs d’énergie et d’eau, totaux d’impulsions

avg est une simple moyenne des relevés de l’intervalle, non pondérée par le temps. Un appareil qui remonte plus souvent sur certaines périodes pèse davantage sur celles-ci.

Lorsqu’une fenêtre brute est lue (jusqu’à 24 heures), l’agrégation n’est pas appliquée : vous obtenez chaque valeur stockée. Les graphiques qui affichent côte à côte des points bruts et un résumé peuvent donc montrer plus de détail pour le dernier jour que pour les jours plus anciens.

increase, pour les compteurs

Les compteurs ne font qu’augmenter (kWh, m³, impulsions) jusqu’à repartir de zéro. increase les transforme en consommation par intervalle :

  • La valeur de chaque intervalle est son last moins le last de l’intervalle précédent.
  • Si la valeur a baissé (le compteur a été remis à zéro), le last de l’intervalle est pris comme la hausse, en partant de zéro.
  • Le premier intervalle de la fenêtre compte ce qui a augmenté à l’intérieur de celui-ci : son last moins son min.

Exemple avec des intervalles horaires d’un compteur d’énergie :

Heurelastincrease
08:001,200.04,0 (premier intervalle : last 1 200,0 – min 1 196,0)
09:001,212.512.5
10:001,221.08.5
11:003.03,0 (le compteur a été remis à zéro)

Remarques :

  • Une hausse à travers un trou de données est comptée dans le premier intervalle après le trou.
  • Un compteur qui repart à zéro puis dépasse son ancienne valeur dans un même intervalle n’est pas détecté comme une remise à zéro.
  • Utilisez increase sur le compteur brut, jamais sur une clé qui est déjà une quantité par intervalle ; utilisez sum pour celle-ci.

Utiliser les résumés

OùComment choisir
Cartes de graphiques des tableaux de bordLe réglage Agrégation de la carte et la fenêtre temporelle du tableau de bord. Voir Cartes de graphiques et Sources de données et paramètres.
L’onglet Telemetry de l’appareilToujours avg, avec la fenêtre que vous choisissez. Voir L’onglet Telemetry de l’appareil.
L’APIbucket et agg sur GET /api/telemetry/series. Voir L’API d’historique.
FluxLe bloc Statistics calcule des valeurs sur une fenêtre de messages dans le flux lui-même. Voir Compteurs, statistiques et chiens de garde.

Jours et mois locaux

Les cumuls journaliers sont des jours UTC. Pour un total journalier dans un autre fuseau horaire, lisez les intervalles 1h et additionnez vous-même les heures de chaque jour local ; pour les fuseaux au décalage d’une demi-heure, lisez les intervalles 1m (jusqu’à 31 jours en arrière). Voir l’exemple dans L’API d’historique.