Historiser datas à une heure précédente?

Bonjour,

pour mon plugin suiviCO2, j’utilise une API qui me donne les infos des émissions CO2 par kWh pour la production d’électricité en France. L’API fournie 1 donnée toutes les 15min, mais en décalé. C’est à dire que la valeur de 21:00 sera fournie vers 22:00. Et parfois il y a 3 ou 4 données précédentes qui arrivent ensemble. Dans le json ils donnent donc chaque valeur avec sa date et heure.

J’aimerai pouvoir archiver ces valeurs à la date et heure de validité donnée par l’API et non par la date et heure à laquelle jeedom récupère la valeur.

Pour cela j’ai le code suivant dans un cron :

// les infos de l'API : 
$record_date = $record['fields']['date']; // format "2020-02-20"
$record_time = $record['fields']['heure']; // format "21:45"
$record_tauxco2 = $record['fields']['taux_co2'];

// l'enregistrement en DB :
$cmd = $suiviCO2->getCmd(null, 'co2kwhfromApi');
if (is_object($cmd)) {
    $cmd->setCollectDate($record_date . ' ' . $record_time . ':00');
    $cmd->event($record_tauxco2);
                  
    log::add('suiviCO2', 'debug', 'Taux_Co2 : ' . $record_tauxco2 . ' à : ' . $record_date . ' ' . $record_time . ':00'); // ca loggue bien au format "2020-02-20 21:45:00"
}

Or le setCollectDate n’est pas pris en compte dans la DB : dans la table « history », le « datatime » correspond toujours à la date de collecte par Jeedom.

Le code complet est disponible ici : https://github.com/AgP42/suiviCO2

Dans la doc il est écrit concernant le setCollectDate :

au moment de la fonction event (qui permet de signaler à Jeedom une nouvelle mise à jour de la valeur, avec déclenchement de toutes les actions qui doivent être faites : mise à jour du dashboard, vérification des scénarios…​), Jeedom regarde si la date de collecte est ancienne et, si c’est le cas, va refuser la nouvelle valeur, d’où la remise à 0.

Chez moi ça n’est pas refusé, juste pas la bonne date qui est enregistrée.

Auriez-vous une solution ?

Merci d’avance !
AgP

La nuit porte conseil, j’ai trouvé ! :

Au lieu de jouer avec « setCollectDate » et « event » je vais utiliser les fonctions pour l’historique :

$cmd->addHistoryValue('123', '2020-02-20 18:12:00');

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.