Supprimer des équipements Mqtt

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.