[InfluxDB v1.8.x] Aller encore plus loin!

Alors c’est mieux!!


Seul hic a mon sens c’est qu’il prends la valeur a 1h du mat et du coup on est déjà dans le jours d’après, il faudrait faire une plage de minuit a 23h59 en gros non?

Alors mon compteur est un impulsionnel branché sur mon IPX, je ne peux pas le reset, par contre je recup les données via NR en effet:


Peut-être moyen de faire un truc de ce coté la?
J’ai aussi sous HA fait un utility_meter, peut-être faut utiliser cela plutôt que le compteur brut?

Bon j’ai bricolé un truc avec un panel_iframe (mais j’ai pris quelques libertés avec le x-frame-options, ça ne me plait pas)


Du coup, @Neuvidor j’ai regardé les valeurs min/max/moyenne

et ça semble cohérent avec les données de la veille comme attendu… joker ?

Hello,

En tout cas cela ressemble a mon problème de date ^^
Les import, ils importent quoi? J’ai pas bien compris…

Salut,
La question est pour moi ?

Oui, en effet, j’essaye de faire un truc similaire mais je comprends pas trop la philosophie lol :slight_smile:

Donc les imports, c’est simplement pour pouvoir utiliser les fonctions date.truncate() et experimental.addDuration()
Si on rapproche ça de NR, ça pourrait correspondre à 2 palettes date et experimental avec chacun un node , respectivement truncate et addDuration
Quant au bug
OK, j’avais un doute à cause du bug… (Que j’ai pas chez moi c’est le resultat normal :wink: ) avec juste l’image, c’est pas possible de dire quoique ce soit, on ne voit pas la requête faite … mais sur le principe, oui il faut calculer la date de la veille ou lancer l’action à 23H59

Pour le « souci » de date, tout est stocké en UTC et nous sommes en UTC+1 d’ou le décalage…

1 « J'aime »

J’ai suivi ce que tu as fait @Pulpy-Luke :


J’ai pas de courbe mais je suppose qu’il faut que j’ai deux jours de relevé?
Et comment peut-on faire ce relevé a une heure précise (23h59/jours)?

J’ai réussi a bricoler cela @SNoof :


Mais les données ne sont pas tout a fait juste car le relevé est à 1h du mat du coup, je trouve pas comment contourner le problème.

Surement que les deux choses sont liées ^^

Salut @Pulpy-Luke ,

J’ai à nouveau essayé et j’avoue ne pas reproduire le problème, étrange car je n’ai pas
J’ai aussi créé un second « Bucket » afin d’exporter le résultat et cela fonctionne bien, la valeur est bien exportée.

Voici mon code (sur la base du tien) :


import "date"
import "experimental"
TODAY = date.truncate(t: now(), unit: 1d )
YESTERDAY = experimental.addDuration(d: -1d, to: TODAY)
DATA = from(bucket: "DatabaseBaptisteV01")
  |> range(start: YESTERDAY, stop: TODAY)
  |> filter(fn: (r) => r["_measurement"] == "°C")
  |> filter(fn: (r) => r["_field"] == "value")
  |> filter(fn: (r) => r["instance"] == "Test")
  |> filter(fn: (r) => r["entity_id"] == "Jardin")
  |> filter(fn: (r) => r["city"] == "Lougres")
DATA
  |> mean()
  |> map(fn: (r) => ({r with _time: YESTERDAY}))
  |> set(key: "_measurement", value: "°C")
  |> set(key: "entity_id", value: "Jardin")
  |> set(key: "statistics", value: "mean")
  |> set(key: "source", value: "influxdb")
  |> set(key: "city", value: "Lougres")
  |> to(bucket: "DatabaseBaptisteV02")
DATA
  |> max()
  |> map(fn: (r) => ({r with _time: YESTERDAY}))
  |> set(key: "_measurement", value: "°C")
  |> set(key: "entity_id", value: "Jardin")
  |> set(key: "statistics", value: "max")
  |> set(key: "source", value: "influxdb")
  |> set(key: "city", value: "Lougres")
  |> to(bucket: "DatabaseBaptisteV02")
DATA
  |> min()
  |> map(fn: (r) => ({r with _time: YESTERDAY}))
  |> set(key: "_measurement", value: "°C")
  |> set(key: "entity_id", value: "Jardin")
  |> set(key: "statistics", value: "min")
  |> set(key: "source", value: "influxdb")
  |> set(key: "city", value: "Lougres")
  |> to(bucket: "DatabaseBaptisteV02")

Mes données dans le second bucket :

Le seul truc étrange est qu’il y a 1h de décalage entre le « _time » issue du script et celui réellement stocké dans le nouveau bucket alors que les 2 sont en UTC :

  • image

  • image

1 « J'aime »

Bizarre en effet… Bon après il faut voir l’impact 0H00 ou 1h00 c’est la même journée…

Je n’aime pas ne pas maîtriser mes requêtes, C’est surtout ça. Pourquoi le « to bucket » engendrerai un changement d’heure ?

Je suis pas sur que la cause ce soit le bucket…
En prenant les valeurs d’un bucket et en les écrivant direct dans l’autre, ça confirmera la piste

A mon avis il y a un UTC par défaut qui traine dans la manipulation des dates :
+1 à la lecture, mais le calcul de today/yesterday utilise du +0…

En exécutant le code suivant la date change très légèrement (insignifiant mais elle change) :

  • image

  • image

Le code :

from(bucket: "DatabaseBaptisteV01")
  |> range(start: -1d, stop: -20h)
  |> filter(fn: (r) => r["_measurement"] == "°C")
  |> filter(fn: (r) => r["_field"] == "value")
  |> filter(fn: (r) => r["instance"] == "Test")
  |> filter(fn: (r) => r["entity_id"] == "Jardin")
  |> to(bucket: "DatabaseBaptisteV02")

Calcul d’arrondi car pas un timestamp ?
En tout cas, ça semble confirmer la piste que le fuseau est inclus qq part dans les calculs de yesterday/today
Pas simple ce truc quand même

Pour le coup il y a bien un timestamp car j’ai importé la donnée via nodered justement en forçant le timestamp.

Un timestamp qui change d’un bucket à l’autre, c’est pas génial

Il y a forcément un truc que je loupe car ce serait surprenant quand même, surtout pour une base de données orientée séries temporelles

Bon tu me croiras ou pas mais en voulant créer un topic sur le forum influxdb dédié à ce bug, je n’ai pas réussi à le reproduire…

C’est mieux comme ça :wink:

Je vais finir par croire que je deviens fou, heureusement que les impressions d’écrans sont là pour me prouver à moi même que j’ai vu ces comportements :face_with_head_bandage: