Ne prendre en compte un historique qu'à certains moment

Bonjour à tous,

J’ai une sonde de température pour la température de l’eau et une sonde Redox pour la désinfection de la piscine. Tout cela fonctionne très bien. Mais les valeurs ne sont justes que quand la pompe tourne.
J’ai mis un capteur jus qui me dit quand la pompe tourne ou ne tourne pas.

Ma question est la suivante: comment avoir un historique quand la pompe tourne et pas de valeur quand la pompe ne tourne pas.

Je réfléchis avec un virtuel en interface ou avec des conditions, j’utilise EspEasy pour remonter les infos, je pourrais aussi faire des règles. Mais je cale un peu et ne trouve rien de satisfaisant.

Quelqu’un aurait une idée ?

Pour ceux qui veulent voir l’installation c’est ici : Contrôle domotique Redox (ORP) ou Ph d'une piscine vers Jeedom (80€) - Sigalou Domotique

Merci pour vos idées.

Hello @sigalou,

Tu dois pouvoir y parvenir avec un scénario en bloc code et la fonction setIsHistorized :

https://jeedom.github.io/documentation/phpdoc/classes/cmd.html#method_setIsHistorized

Dans ESP Easy, j’ai aussi l’état de fonctionnement de la pompe récupéré sur le relai qui la commande. J’ai fait un « dummy device » qui met à jour ou non une valeur. Si la valeur ne change pas, Jeedom ne crée pas de nouveaux points d’historique (sauf peut-être en mettant "Toujours répéter et encore, je ne suis pas sûr).

////
// Mise à jour de la température et de la pression filtre lorsque la pompe est en marche
////

on System#Boot do
  timerSet 1,600 // Lancer timer 1 dans 10 min
endon

on Rules#Timer=1 do
 if [pompe#pompe_en_marche]=1 // Si la pompe fonctionne...
  timerSet 2,2700 // ...on attend 45 min (stabilisation de temperature) pour initialiser timer2
  timerSet 1,3600 // On relance timer 1 dans 60 min (>45 min)
 else
   //timerSet 1,600 // Si pompe a l'arret, on relance la verification toutes les 10 min
   timerSet 1,300 // Si pompe a l'arret, on relance la verification toutes les 5 min
 endif
endon

on Rules#Timer=2 do
 if [pompe#pompe_en_marche]=1 // Si la pompe fonctionne...
   timerSet 3,10 // Lancer la boucle de maj avec timer 3
 endif
endon

on Rules#Timer=3 do
 if [pompe#pompe_en_marche]=1 // Si la pompe fonctionne...
  TaskValueSet 3,1,[ds18b20_3m#t_aspiration] // Mise a jour de la temperature
  TaskValueSet 3,2,[A0#p_filtre] // Mise a jour pression filtre
  timerSet 3,300 // On relance la mise a jour toutes les 5 min
 endif
endon

on pompe#pompe_en_marche=0 do // Sur arret de la pompe, on arrete le timer 2 et 3
  timerSet 2,0
  timerSet 3,0
endon

On doit pouvoir faire pareil avec un virtuel et un opérateur ternaire côté Jeedom qui renvoie soit la valeur du capteur soit le virtuel lui-même. Quelque chose de ce genre :
([Piscine][Pompe] == on)?[Piscine][Capteur temperature]:[Piscine][Temperature en marche]

Edit :

En beaucoup plus simple - parce que dans l’exemple précédent j’ai des tempos pour ne pas mesurer tout de suite la température qui est souvent fausse au début - ça devrait être ça (mais il faut passer par les règles quand même) :

on [ds18b20_3m#t_aspiration]
 if [pompe#pompe_en_marche]=1 // Si la pompe fonctionne...
  TaskValueSet 3,1,[ds18b20_3m#t_aspiration] // Mise a jour de la temperature
 endif
endon

Merci @Salvialf pour ton info, je la garde derrière l’oreille, mais je vais prendre la config dans EspEasy par simplicité.

@seb821 Génial ta règle, je prends telle qu’elle ! Vraiment bien pensé.
Je n’ai pas trop compris pourquoi tu fais le timerSet 1,3600 Il doit y avoir un cas de figure auquel je n’ai pas pensé.

Encore merci à vous deux !

C’est pour relancer la boucle sur Timer 1 lorsque la pompe est arrêtée il me semble. Peut-être que j’aurais pu le mettre en même temps que je mets à zéro les timer 2 et 3. Mais j’étais plutôt parti sur une philosophie basée sur du temps.

Et puis, en travaillant avec les états, on a parfois des surprises. Par exemple pour l’état de la pompe, j’ai aussi mis un interval à 600s pour remonter l’information régulièrement en plus des changements. Et bien, cela déclenche l’événement on pompe#pompe_en_marche, et ça on y pense pas au début.

Par contre, impossible de comprendre pourquoi je passe par le timer 2 pour lancer le 3 et pas directement Dans le doute je ne touche pas, ça marche depuis plusieurs années :sweat_smile: