Modifier historique d'une info virtuelle

Bonjour à tous,

Mon soucis se situe sur la modification de l’historique d’une info virtuelle.
Le contexte est le suivant, je récupère mes consommations de gaz sur le site de GRDF grâce au compteur « communiquant » Gaspar. Les conso sont dipso par mois et par jour, mais avec quelques jours de retard… Je récupère bien les infos (conso / date) et l’idée est d’injecter ça dans la base de données de Jeedom.

J’utilise « $cmd->addHistoryValue », cela change bien l’historique mais pas ne fais rien sur le « collectdate », je vous montre.

L’historique fonctionne bien :

Le soucis: la dernière valeur fournie est 35 et pourtant le virtuel reste à 45 qui est une très vieille valeur (cf datetime)

image

Que faire pour que le virtuel prenne la dernière valeur dispo en base ??

Merci par avance pour votre aide

Petit complément d’info, si je crée un virtuel et que je me contente de faire « addHistoryValue » cela modifie bien son historique mais je n’ai aucune valeur (même comportement addHistoryValue n’a aucun effet sur la valeur actuelle).

Je ne souhaite pas faire « event » car le collectDate ne serait pas bon (il serait celui du moment ou l’on fait le « event » alors que la valeur de conso peut daté de quelques jours suivant la réactivité de GRDF…)

bonjour,
et si tu rafraîchis. clic action
ou
test via sql sur la table history
sur équipement test

le message précédent te montre via scenario

Bonjour,

En effet je fais ça depuis un scénario. Tu veux dire par rafraîchir = la commande action du virtuel « Rafraichir » ? => idem ne change rien.

Pouquoi pas le faire directement avec une commande sql, mais il faut que je le fasse depuis un script alors ? Je ne suis pas chaud d’avoir un scénario jeedom qui appelle un script qui modifie la base de données. En fait j’ai peur de croûter ma base…

Je viens d’essayer par l’interface Jeedom => sans effet:

image

J’ai essayé également de cliquer sur la roue pour rafraichir en haut à droite de la tuile => sans effet

refait sur un équipement test
utilisé que la cmd que tu montres (sans scenario)
remplace history au lieu d’historyArch
historyarch c’est l’archivage > 1 jours
ton équipement rencontre un soucis d’actualisation pour moi
ou l’actu se fait sur la table history

Nouveau virtuel de test, pas de scénario, avec la table history:

et paf rien:

snif snif

Le virtuel est comme ça:

On voit pourtant bien la valeur 35 dans le graphe, mais 0 et pas de collectDate sur la tuile.

bonjour pour retour
j’ai testé hier idem que toi
donc je ne sais pas.

si tu veux de la bricole :
tu caches l’info A
tu créés une info B avec la cmd dernière valeur de l’info A
et via le widget de l’info B accès historique info A

Merci pour ton aide. Je m’en suis sorti avec ta proposition.
Pour moi c’est un bug de Jeedom, mais tant qu’on l’on peut bricoler !

bonjour , je cherche à faire exactement la même chose , mais je suis complétement à la ramasse en ce qui concerne les commande cmd et je ne comprend meme pas ce que vous voulez dire par

« tu caches l’info A
tu créés une info B avec la cmd dernière valeur de l’info A »

un petit tuto pour un noob svp ? :wink:

merci d’avance :wink:

EDIT: à défaut je veux bien un lien sur une doc concernant l’utilisation des commandes sus citée :wink:

« tu caches l’info A
tu créés une info B avec la cmd dernière valeur de l’info A »

un petit tuto pour un noob svp ? :wink:

2 info A et B
A étant réel (avec mauvaise actu)
B étant virtuel (afin de palier)
B non historisé
B via widget perso pointe sur l’historique de A

lors de l’ajout dans le temps passé (scenario)
adhistory sur valeur À
et formule de scénario sur À pour rechercher la dernière valeur de A et 'afficher « event » sur B

cas pratique
création de 2 info dans un virtuel

j’ajjoute 3 valeur via scenario code

$cmd=cmd::byString("#[krom77][info][info A]#");
$cmd->addHistoryValue(5, '2020-11-04 05:00:00');
$cmd->addHistoryValue(15, '2020-11-04 07:00:00');
$cmd->addHistoryValue(10, '2020-11-04 06:00:00');

un nouveau code qui va cherché la derniere valeur de l’info A pour la mettre dans l’info B

$commandes_infoA=cmd::byString("#[krom77][info][info A]#")->getId();
$commandes_infoB=cmd::byString("#[krom77][info][info B]#");
$value_last = scenarioExpression::lastBetween($commandes_infoA,today,now);
  $scenario->setLog("value =".$value_last);
$commandes_infoB->event($value_last);


image

edit
j’ajoute la possibilité d’historique de l’info B (à cocher image 1)
dans le parametrage avancé de l’info B

si je clic sur l’etat B j’ai l’historique de l’info A

merci beaucoup !! je met ça en pratique dès demain :wink:

Après avoir galéré, j’ai trouvé. Avec l’action event(), on peut passer la date directement et c’est ajoute un événement pour une date donnée:

$commande_conso_hier = cmd::byString("#[Appartement][Variables][Conso Hier]#");
$date_hier = date('Y-m-d H:i:s', strtotime("yesterday 00:01"));
$commande_conso_hier->event($conso_hier, $date_hier);
2 « J'aime »

Merci ! Ça fonctionne à la perfection :slight_smile: