Calcul pluviométrie Jour/Semaine/Mois à partir d'un index

Bonjour à tous
J’ai un souci sur mes formules de calcul de pluviométrie.
J’ai un compteur sous forme d’un index qui s’incrémente en fonction de la pluie. Chaque pas vaut 0,2mm.
J’ai fait un virtuel qui avec des formules permet de calculer différentes valeurs
Pluie total journée, semaine, semaine -1, mois, mois -1,…
J’ai une remise à 0 de ces valeurs (journée, mois,…) chaque jour à minuit pour la pluviométrie jour, chaque semaine lundi à 0h00 pour la pluviométrie semaine,…

Pour le calcul du mois en cours, j’utilise cette formule dans la commande mais qui me donne des valeurs négatives lors de la remise à 0 de l’index
#[Exterieur][Pluviomètre][Index Pluviometre]# - min(#[Exterieur][Pluviomètre][Index Pluviometre]#, first day of this month midnight)

Exemple
Capture
En gros la pluviométrie mois passe de 80mm (si il est tombé 80 sur le mois) à 0 en début de chaque mois. Et la formule utilisée plus haut calcule du négatif forcément en début de mois…

Sauriez vous comment régler ce problème ?

Le plus simple est de faire des variables
jour
semaine
mois
ans
et de les mettre a la valeur de ton index au fil du temps
puis de faire une différence entre l’index du moment et la mémoire choisie

1 « J'aime »

Peux tu expliquer plus en détail ?
C’est à dire que

  • chaque heure, je copie l’index global dans la variable heure
  • idem heure -1, 2
    -chaque jour à 0h00 je prends l’index global et le copie dans la variable jour
  • idem pour les semaines et mois

Ca OK mais pas compris pour la différence ? Avec la formule ? Dans la commande info tu fais cette différence simple sans utiliser de formule ?
Tu arrives à avoir les historiques simples avec les graphes par variation jour, mois, année avec cette méthode ?
Si tu l’as fait, peux tu me faire un export de ton scénario ?

Je ne le fait pas sur de la pluviométrie :wink:
mais sur de la consomatio/production
le principe reste le même
prenons par exemple par jour
tout les soir a minuit
tu recopie



j-2 dans j-3
J-1 dans j-2
J dans J-1
et tu met ton index dans la mémoirejour

pareil sur heures, semaines mois années …

J’ai du mal à saisir comment il faut procéder.
Faut -il que je fasse un scénario avec comme déclencheur mon index eau froide ?
A quel moment dois je mettre mon index dans la mémoire jour.
L’index étant un index comment savoir la pluviometrie sur une journée ? Faire une différence dans un virtuel ?

Ben cela nécessite plusieurs scenario
on va dire 5 pour les mises en memoire de heure jour semaine mois année
puis 5 pour actualisé /afficher la valeur courante.

le scenario qui s’occupe de mettre en mémoire avant de le faire
scroll a la valeur courante dans valeur-X = valeur -2 = valeur-1 = valeur courante (autant de fois que tu veut conserver un visuel.

Merci pour ton retour
Oui j’ai fait quelques tests mais suite info trouvée ici

J’ai finalement opté pour un fonctionnement sans scénario et sans variable.
Voici un petit tuto à partir d’un index qui s’incrémente dès que la pluie tombe

Dans le testeur d’expression, ne pas hésiter à comprendre le fonctionnement des expressions.
Par exemple

date('d M Y H:i:s', strtotime('this month midnight'))

Renvoi la date du jour en cours minuit

Il est aussi important de rafraichir les données toutes les heures au cas ou il n’y aurait pas de nouvelles données.
Ceci est fait par l’actualisation du CRON du virtuel

0 * * * *

Dernière heure

#[Terrasse][Pluviomètre][Index Pluviometre]# - min(#[Terrasse][Pluviomètre][Index Pluviometre]#, 60 minute)

Jour en cours

statisticsBetween(#[Terrasse][Pluviomètre][Index Pluviometre]#,max,this day midnight,now)-statisticsBetween(#[Terrasse][Pluviomètre][Index Pluviometre]#,min,this day midnight,now)

Cumul Dernier jour glissant (dernière 24 heures)

statisticsBetween(#[Terrasse][Pluviomètre][Index Pluviometre]#,max,last day, now)-statisticsBetween(#[Terrasse][Pluviomètre][Index Pluviometre]#,min,last day, now)

Cumul 48 dernières heures

statisticsBetween(#[Terrasse][Pluviomètre][Index Pluviometre]#,max,- 2 day, now)-statisticsBetween(#[Terrasse][Pluviomètre][Index Pluviometre]#,min,- 2 day, now)

Cumul Jour + Hier

statisticsBetween(#[Terrasse][Pluviomètre][Index Pluviometre]#,max,last day midnight,now)-statisticsBetween(#[Terrasse][Pluviomètre][Index Pluviometre]#,min,last day midnight,now)

Cumul Jour - 1

statisticsBetween(#[Terrasse][Pluviomètre][Index Pluviometre]#,max,last day midnight,this day midnight)-statisticsBetween(#[Terrasse][Pluviomètre][Index Pluviometre]#,min,last day midnight,this day midnight)

Cumul Semaine (glissant) Derniers 7 jours

statisticsBetween(#[Terrasse][Pluviomètre][Index Pluviometre]#,max,-7 day, now)-statisticsBetween(#[Terrasse][Pluviomètre][Index Pluviometre]#,min,-7 day, now)

Cumul Semaine (non glissant)

statisticsBetween(#[Terrasse][Pluviomètre][Index Pluviometre]#,max,Monday this week midnight , now)-statisticsBetween(#[Terrasse][Pluviomètre][Index Pluviometre]#,min,Monday this week midnight, now)

Cumul Mois (au 1er du mois)

statisticsBetween(#[Terrasse][Pluviomètre][Index Pluviometre]#,max,first day of this month midnight, now) - statisticsBetween(#[Terrasse][Pluviomètre][Index Pluviometre]#,min,first day of this month midnight, now)

Cumul Mois Glissant (Derniers 30 jours)

statisticsBetween(#[Terrasse][Pluviomètre][Index Pluviometre]#,max,last month, now)-statisticsBetween(#[Terrasse][Pluviomètre][Index Pluviometre]#,min,last month, now)

Cumul Année en cours (au 1er janvier)

statisticsBetween(#[Terrasse][Pluviomètre][Index Pluviometre]#,max,first day of January midnight, now)-statisticsBetween(#[Terrasse][Pluviomètre][Index Pluviometre]#,min,first day of January midnight, now)

Cumul An Glissant ou Dernier 365 jours

statisticsBetween(#[Terrasse][Pluviomètre][Index Pluviometre]#,max,last year midnight, now)-statisticsBetween(#[Terrasse][Pluviomètre][Index Pluviometre]#,min,last year midnight, now)
2 « J'aime »

Fait juste gaffe a tes historiques et sur combien de temps.
ça peut réserver quelques surprises …

C’est à dire ? Temps de calcul ?
PS : je complète mes formules au fur et à mesure dans le post précédent

Non a la façon dont tu conserve tes historiques dans le temps
(si tu garde 8 jours 1 mois un ans …)
et au compactage du history archive …

Oui sur l’index, j’ai pas de mode le lissage et 3 ans d’historique.
Qu’est ce le compactage history archive ?

regarde une courbe sur des donner qui sont passées dans la partie archive
il y a beaucoup moins de points !


en bleu du jeedom 1 point par heure
en dessous influxdb
tous les points
on voir biens les ruptures …

Merci pour ce recap.
Ca fait plusieur jours que je galére avec ces formules.
Maintenance ca fonctionne :slight_smile:

1 « J'aime »

Et ça peut facilement être décliné pour tout type d’index… Conso eau, elec, production,…
L’importance est d’avoir un index en entrée avec ce type de formule.
Je peux le fournir sous forme d’export si besoin.
Si jamais vous déjà en entrée des données temporelle (exemple mm de pluie par jour), il faudra adapter les formules

Pour suivi, j’ai mis à jour mon virtuel suite à quelques erreurs.
Tout est nickel là. J’ai mis à jours mon post un peu au dessus.
Il faut bien mettre le CRON du virtuel à chaque heure.
Et bien penser à ne pas mettre d’archivage ni de lissage sur la commande d’index qui sert de base au calcul.
Après on peut également mettre un historique (configurée sur maximum et non moyenne) sur les commandes infos jour en cours, semaine en cours, mois en cours,… Cela permet d’avoir une courbe de cumul par jour, semaine, mois,…
Bonne utilisation

Bonjour.
j’ai tenté d’appliquer les calculs de ce sujet, qui ont l’air de faire exactement ce que je recherche, mais cela ne fonctionne pas chez moi.
C’est pour mesurer une consommation d’eau, mais c’est pareil.

J’ai une variable « IndexEauFroide » qui me donne le nombre de litre consommé.
Elle ne se remet jamais à 0.
Elle s’incrémente bien à chaque litre.
J’ai créé une variable « EauFroideJour ». Je voudrai que cette variable me donne en instantané le nombre de litre consommé depuis minuit.
J’ai aussi créé une variable « EauFroideHier ». J’aimerai qu’elle me donne la consommation j-1.
Une idée de la formule à appliquer ?

Si ton index est bon zt incremental tu peux applique ma formule jours en cours.
Elle marchera.
Testes la dans le testeur d’expression et remplaces bien ton index.

Merci.
Je n’avais jamais utilisé le testeur d’expression.
Il me donnait une valeur à 0.
J’ai vu que le calcul se basait sur l’historique de la valeur index.
J’ai donc activer l’archivage de cette valeur.
Et maintenant, tout fonctionne.
Encore merci.

Ah oui effectivement j’ai oublié de preciser qu’il fallait l’historique sur chaque index

« Et bien penser à ne pas mettre d’archivage ni de lissage sur la commande d’index qui sert de base au calcul. »

C’est ce texte qui m’a induit en erreur. :wink: