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