Voici tous les traitements à faire pour effacer un équipement.
public function remove() {
foreach (($this->getCmd()) as $cmd) {
$cmd->remove();
}
viewData::removeByTypeLinkId('eqLogic', $this->getId());
dataStore::removeByTypeLinkId('eqLogic', $this->getId());
$this->emptyCacheWidget();
cache::delete('eqLogicCacheAttr' . $this->getId());
cache::delete('eqLogicStatusAttr' . $this->getId());
jeedom::addRemoveHistory(array('id' => $this->getId(), 'name' => $this->getHumanName(), 'date' => date('Y-m-d H:i:s'), 'type' => 'eqLogic'));
return DB::remove($this);
}
Vouloir le faire directement dans la base de données avec des commandes SQL va être difficile surtout qu’il y a aussi des traitements à faire dans le cache (hors base de données).
Il vaut mieux passer par le core qui a tous les outils pour faire ce que l’on fait avec l’interface web.
Dans un bloc code de scénario.
La ligne « remove » est à décommenter une fois que tu es sur de ton coup.
$exclure = array(816, 815, 821); //id des équipements à exclure du traitement
$allEqLogic = eqLogic::byType('jMQTT'); //jMQTT est l'id du plugin jMQTT, je ne connais pas l'id du plugin MQTT
foreach ($allEqLogic as $eqLogic) {
if (in_array($eqLogic->getId(), $exclure)) {
continue;
}
$scenario->setLog('Equipement à effacer : ' . $eqLogic->getId() . ' ==> ' . $eqLogic->getHumanName());
//$eqLogic->remove();
}
ATTENTION, je n’ai pas testé ce code sur la partie « remove », à faire valider par un développeur.