Hello
Alors le message d'erreur dans le log est le suivant : Erreur sur enphase_prod::RefreshInformation() : Call to a member function refreshWidget() on null.
Du coup je suis allé voir dans la fonction RefreshInformation, et effectivement, hors du foreach la variable $Equipement n'existe pas, du coup je l'ai mise dans le foreach, à la fin :
Avant :
Code : Tout sélectionner
public static function RefreshInformation()
{
while (true) {
foreach (eqLogic::byType('enphase_prod') as $Equipement) {
if ($Equipement->getIsEnable()) {
// Recuperation des infos des X panneau
log::add('enphase_prod', 'debug', 'Recuperation des infos des X panneau');
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $Equipement->getConfiguration('ip') . '/api/v1/production/inverters');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($ch, CURLOPT_USERPWD, $Equipement->getConfiguration('user') . ":" . $Equipement->getConfiguration('pass'));
$response = curl_exec($ch);
curl_close($ch);
$json_data = json_decode($response, true);
$c = count($json_data);
log::add('enphase_prod', 'debug', 'Nombre entree ' . $c);
for ($p = 1; $p <= intval($c); $p++) {
$i = $p - 1;
log::add('enphase_prod', 'debug', 'Recuperation des infos du panneau ' . $p);
$Equipement->checkAndUpdateCmd('pan' . $p . 'nbserie', $json_data[$i]["serialNumber"]);
log::add('enphase_prod', 'debug', 'Recuperation numero de serie du panneau ' . $p . ' : ' . $json_data[$i]["serialNumber"]);
$Equipement->checkAndUpdateCmd('pan' . $p . 'lastwatt', $json_data[$i]["lastReportWatts"]);
log::add('enphase_prod', 'debug', 'Recuperation derniere puissance du panneau ' . $p . ' : ' . $json_data[$i]["lastReportWatts"]);
$Equipement->checkAndUpdateCmd('pan' . $p . 'maxwatt', $json_data[$i]["maxReportWatts"]);
log::add('enphase_prod', 'debug', 'Recuperation max de puissance du panneau ' . $p . ' : ' . $json_data[$i]["maxReportWatts"]);
}
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $Equipement->getConfiguration('ip') . '/api/v1/production');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($ch, CURLOPT_USERPWD, $Equipement->getConfiguration('user') . ":" . $Equipement->getConfiguration('pass'));
$response = curl_exec($ch);
curl_close($ch);
$json_data = json_decode($response, true);
$Equipement->checkAndUpdateCmd('now', $json_data['wattsNow']);
log::add('enphase_prod', 'debug', 'Energie instantané : ' . $json_data['wattsNow']);
$Equipement->checkAndUpdateCmd('daily', $json_data['wattHoursToday']);
log::add('enphase_prod', 'debug', 'Energie produit du jour : ' . $json_data['wattHoursToday']);
$Equipement->checkAndUpdateCmd('lifetime', $json_data['wattHoursLifetime']);
log::add('enphase_prod', 'debug', 'Energie produit depuis le mise en service :' . $json_data['wattHoursLifetime']);
$Equipement->checkAndUpdateCmd('SevenDays', $json_data['wattHoursSevenDays']);
log::add('enphase_prod', 'debug', 'Energie produit sur 7 jours : ' . $json_data['wattHoursSevenDays']);
}
}
$Equipement->refreshWidget();
sleep(20);
}
self::deamon_stop();
}
Après :
Code : Tout sélectionner
public static function RefreshInformation()
{
while (true) {
foreach (eqLogic::byType('enphase_prod') as $Equipement) {
if ($Equipement->getIsEnable()) {
// Recuperation des infos des X panneau
log::add('enphase_prod', 'debug', 'Recuperation des infos des X panneau');
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $Equipement->getConfiguration('ip') . '/api/v1/production/inverters');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($ch, CURLOPT_USERPWD, $Equipement->getConfiguration('user') . ":" . $Equipement->getConfiguration('pass'));
$response = curl_exec($ch);
curl_close($ch);
$json_data = json_decode($response, true);
$c = count($json_data);
log::add('enphase_prod', 'debug', 'Nombre entree ' . $c);
for ($p = 1; $p <= intval($c); $p++) {
$i = $p - 1;
log::add('enphase_prod', 'debug', 'Recuperation des infos du panneau ' . $p);
$Equipement->checkAndUpdateCmd('pan' . $p . 'nbserie', $json_data[$i]["serialNumber"]);
log::add('enphase_prod', 'debug', 'Recuperation numero de serie du panneau ' . $p . ' : ' . $json_data[$i]["serialNumber"]);
$Equipement->checkAndUpdateCmd('pan' . $p . 'lastwatt', $json_data[$i]["lastReportWatts"]);
log::add('enphase_prod', 'debug', 'Recuperation derniere puissance du panneau ' . $p . ' : ' . $json_data[$i]["lastReportWatts"]);
$Equipement->checkAndUpdateCmd('pan' . $p . 'maxwatt', $json_data[$i]["maxReportWatts"]);
log::add('enphase_prod', 'debug', 'Recuperation max de puissance du panneau ' . $p . ' : ' . $json_data[$i]["maxReportWatts"]);
}
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $Equipement->getConfiguration('ip') . '/api/v1/production');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($ch, CURLOPT_USERPWD, $Equipement->getConfiguration('user') . ":" . $Equipement->getConfiguration('pass'));
$response = curl_exec($ch);
curl_close($ch);
$json_data = json_decode($response, true);
$Equipement->checkAndUpdateCmd('now', $json_data['wattsNow']);
log::add('enphase_prod', 'debug', 'Energie instantané : ' . $json_data['wattsNow']);
$Equipement->checkAndUpdateCmd('daily', $json_data['wattHoursToday']);
log::add('enphase_prod', 'debug', 'Energie produit du jour : ' . $json_data['wattHoursToday']);
$Equipement->checkAndUpdateCmd('lifetime', $json_data['wattHoursLifetime']);
log::add('enphase_prod', 'debug', 'Energie produit depuis le mise en service :' . $json_data['wattHoursLifetime']);
$Equipement->checkAndUpdateCmd('SevenDays', $json_data['wattHoursSevenDays']);
log::add('enphase_prod', 'debug', 'Energie produit sur 7 jours : ' . $json_data['wattHoursSevenDays']);
}
$Equipement->refreshWidget();
}
sleep(20);
}
self::deamon_stop();
}