Hello
Depuis la MAJ beta du 2022-05-02 j’ai ce message d’erreur:
Erreur sur la fonction cron du plugin : Call to a member function getConfiguration() on null
Merci
Hello
Depuis la MAJ beta du 2022-05-02 j’ai ce message d’erreur:
Erreur sur la fonction cron du plugin : Call to a member function getConfiguration() on null
Merci
Bonjour idem pour moi
Bonjour à tous, j’ai eu le même problème.
Après avoir fait pas mal de debug ce matin je crois que j’ai trouvé où c’est:
dans la fonction updateLocation() du fichier plugins/ioscore/class/ioscloud.class.php
remplacer
$geofence->updateGeofenceValues($device->getId(), $location);
par
$geofence->updateGeofenceValues($geofence->getId(), $location);
Pour info le code complet avec des rajouts de debug chez moi
Au départ je cherchais une erreur dans la fonction updateGeofenceValues() mais j’ai finis par comprendre que c’est son appel qui semble faux.
public function updateLocation($_options = false) {
($_options) ? $eq= ioscloud::byId($_options['cloud_id']) : $eq = $this;
log::add('ioscloud','debug', '------------------- updateLocation : ' . $eq->getId() . '---------------------- ' . $eq->getName());
$FindMyPhone = new FindMyPhone($eq->getConfiguration('iosadr'), $eq->getConfiguration('iospass'));
$devices = $FindMyPhone->devices;
$c = new Cron\CronExpression($eq->getConfiguration('refreshCron'), new Cron\FieldFactory);
$c->isDue();
if(is_array($devices)) {
foreach (ioscloud::byType('ioscloud') as $device) {
if ($device->getConfiguration('type') == 'devices' && $device->getIsEnable() == 1 && $device->getConfiguration('id_cloud') == $eq->getId() ) {
$id = $device->getConfiguration('id');
if ($devices[$id]->id == $device->getLogicalId()) {
log::add('ioscloud','debug', print_r($devices[$id],true));
if($devices[$id]->deviceStatus == "203" && $device->getConfiguration('stateOff') != "") {
log::add('ioscloud','debug', ' --- Status 203 --- ' . $device->getHumanName() );
$delay = $device->getConfiguration('stateOff') * 60;
if(((int)($devices[$id]->location->timeStamp/1000)+$delay) < time()) {
$messages = message::byPluginLogicalId('ioscloud', 'stateFailed' . $device->getId());
if(count($messages) == 0) {
message::add('ioscloud', __('Device hors ligne : ', __FILE__) . $device->getHumanName(), '', 'stateFailed$
}
$device->checkAndUpdateCmd('state', 0);
} else {
$device->checkAndUpdateCmd('state', 1);
foreach (message::byPluginLogicalId('ioscloud', 'stateFailed' . $device->getId()) as $message) {
$message->remove();
}
}
$device->refreshWidget();
} else {
foreach (message::byPluginLogicalId('ioscloud', 'stateFailed' . $device->getId()) as $message) {
$message->remove();
}
$device->checkAndUpdateCmd('state', 1);
$device->refreshWidget();
}
if($devices[$id]->location) {
log::add('ioscloud','debug', ' --- horizontalAccuracy --- ' . $devices[$id]->location->horizontalAccuracy);
log::add('ioscloud','debug', ' --- locationFinished --- ' . $devices[$id]->location->locationFinished);
if($devices[$id]->location->locationFinished != 1 && $c->getNextRunDate()->format('H:i') != date('H:i',strtotime("+1 min$
log::add('ioscloud','debug', ' --- getNextRunDate --- ' . $c->getNextRunDate()->format('H:i'));
log::add('ioscloud','debug', ' --- timestamp --- ' . date('H:i',strtotime("+1 minutes")));
$cron = cron::byClassAndFunction('ioscloud', 'updateLocation', array('cloud_id' => intval($eq->getId())));
if (!is_object($cron)) {
$cron = new cron();
$cron->setClass('ioscloud');
$cron->setFunction('updateLocation');
$cron->setOption(array('cloud_id' => intval($eq->getId())));
}
$cron->setEnable(1);
$cron->setOnce(1);
$cron->setSchedule(date('i',strtotime("+1 minutes")).' '. date('H',strtotime("+1 minutes")).' * * *');
$cron->save();
log::add('ioscloud','debug', ' --- Cron --- ' . date('i',strtotime("+1 minutes")).' '. date('H',strtotime("+1 min$
continue;
}
if ($device->getConfiguration('horizontalAccuracy') != "" && $devices[$id]->location->horizontalAccuracy >= $device->getC$
log::add('ioscloud','debug', ' --- hot horizontalAccuracy --- ');
log::add('ioscloud','debug', ' --- location: ' . $latitude = $devices[$id]->location->latitude . ',' . $latitude $
continue;
}
log::add('ioscloud','debug', ' --- location: ' . $latitude = $devices[$id]->location->latitude . ',' . $latitude = $devic$
if($devices[$id]->deviceStatus != "203") {
$battery = $devices[$id]->batteryLevel * 100;
$changed = false;
$changed = $device->checkAndUpdateCmd('battery', round($battery)) || $changed;
if ($changed) {
log::add('ioscloud','debug', 'Update Battery ' . round($battery) );
$device->setConfiguration('battery',round($battery));
$device->save();
$device->batteryStatus(round($battery));
}
}
$latitude = $devices[$id]->location->latitude;
$longitude = $devices[$id]->location->longitude;
if($latitude == '' || $longitude == '') {
log::add('ioscloud','debug', 'Localisation impossible pour ' . $device->getName());
$device->refreshWidget();
continue;
}
$location = $latitude .','.$longitude;
$changed = false;
$changed = $device->checkAndUpdateCmd('location', $location);
$changed = $device->checkAndUpdateCmd('timestamp',$devices[$id]->location->timeStamp) || $changed;
if ($changed) {
log::add('ioscloud','debug', 'Update location timestamp ' . $device->getName() . ' : ' . $devices[$id]->location-$
log::add('ioscloud','debug', 'location ' . $device->getName() . ' update : ' .$location );
log::add('ioscloud','debug', '---------------------------------------------');
if($device->getConfiguration("cmdLocal") != "") {
$cmd_id = str_replace('#', '', $device->getConfiguration("cmdLocal"));
$cmd = cmd::byId($cmd_id);
if (is_object($cmd)) {
$cmd->event($location);
}
}
$geofences = ioscloud::byTypeAndSearchConfiguration( 'ioscloud', 'geofence_dist');
foreach ($geofences as $geofence) {
if($geofence->getConfiguration('geofence:' . $device->getId()) == 1) {
log::add('ioscloud','debug', 'location device : ' . $location );
$geofence->updateGeofenceValues($geofence->getId(), $location);
}
}
$device->refreshWidget();
log::add('ioscloud','debug', '---------------------------------------------'); $
}
}
}
}
}
}
}
Avec ça mon objet distance se remet à jour
Mille mercis ! Vous me sauvez la vie tellement ce plugin est central dans mon installation. Je confirme que votre solution corrige bien le problème.
Tant mieux!
Bonjour
vous pouvez me dire comment faire pour modifier le fichier svp ?
merci
salut
c’est bon j’ai trouvé et ça fonctionne
merci
Merci bcp pour ce commentaire ultra précis. Ca fonctionne !
Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.