Bon, deux questions.
La première. Pour éviter de renvoyer systématiquement toutes les valeurs et n'envoyer que les nouvelles dans la db, je lis le temps du fichier JSON. Ensuite je déduis les bornes à 1min avant/après, je cherche la valeur entre début et fin (j'ai tout essayé min, max, last etc).
Si j'ai une valeur d'où le sizeof (et pas =0 car la production peut être nulle) c'est qu'elle est déjà en DB, donc pas besoin de la renvoyer.
Sauf que systématiquement ma demande de statistiques renvoie une valeur "vide".
Code : Tout sélectionner
for($i = 0; $i < sizeof($etime); $i++)
{
// conversion date du jour + heure du fichier
$timeread = date("Y-m-d H:i:s", strtotime("$today $etime[$i]"));
$scenario->setLog("valeur à lire : $timeread");
// si le fichier n'est pas vide
if ($timeread != "1970-01-01 01:00:00") {
// on teste si l'enregistrement est déjà présent en db
// bornes 1min avant/après
$debut = date("Y-m-d H:i:s", strtotime($timeread)-60);
$fin = date("Y-m-d H:i:s", strtotime($timeread)+60);
$scenario->setLog("demande valeur $debut à $fin");
// recherche de la valeur
$value = history::getStatistique($cmdIdpower, $debut, $fin)["last"];
$scenario->setLog("valeur lue :$value");
// si la valeur est non nulle alors j'ai pas de valeur à réin
if (sizeof($value) != 0) {
$scenario->setLog("Pas de valeur à ajouter car de $debut à $fin, valeur lue $value");
}
else
{
$cmdpower->addHistoryValue($eqpow[$i],$etime[$i]);
$scenario->setLog("Ajout de la valeur $eqpow[$i] à $cmdIdpower pour $etime[$i]" );
}
}
else {
$scenario->setLog("Pas de valeur à ajouter" );
}
}
Plus particulièrement ce bout de code :
Code : Tout sélectionner
// on teste si l'enregistrement est déjà présent en db
// bornes 1min avant/après
$debut = date("Y-m-d H:i:s", strtotime($timeread)-60);
$fin = date("Y-m-d H:i:s", strtotime($timeread)+60);
$scenario->setLog("demande valeur $debut à $fin");
// recherche de la valeur
$value = history::getStatistique($cmdIdpower, $debut, $fin)["last"];
$scenario->setLog("valeur lue :$value");
// si la valeur est non nulle alors j'ai pas de valeur à réinsérer
if (sizeof($value) != 0) {
$scenario->setLog("Pas de valeur à ajouter car de $debut à $fin, valeur lue $value");
}
else
{
$cmdpower->addHistoryValue($eqpow[$i],$etime[$i]);
$scenario->setLog("Ajout de la valeur $eqpow[$i] à $cmdIdpower pour $etime[$i]" );
}
Le log m'indique rien ... donc je ne sais pas comment identifier si la donnée est déjà en db.
Second point, même si je force l'import de la donnée en DB, il ne se passe rien. Aucune donnée est insérée ! Donc je n'ai aucune idée comme débloquer la db ...