Plugin neato

Salut,

Ce post est pour l’équipe Jeedom et Loic.

Je me suis pencher sur le plugin Neato pour pouvoir utiliser les cartes de navigation.

J’ai fait l’evolution sur le plugin en local chez moi. Souhaitez vous que je vous transfert les évo? Si oui je n’ai pas trouver le git pour faire une proposition d’évolution.

Ce que j’ai fait :
Evolution du code NeatoBotvacRobot.php pour prise en compte des différentes options de nettoyage.
Evolution du code neato.class.php pour ajout des variables necessaires

Bonne journée

Salut,
Tu peux poster le code ici, par contre le plugin neato est très capricieux en particulier au niveau des options de nettoyage qui change pour chaque model quasiment…

NeatoBotvacRobot.php (Les modifications se base sur la doc de neato)

public function startCleaning($eco = false,$_modelCleaning,$_maps=null,$_boundaryId=null) {
		var_dump($eco);
		echo $eco;
        switch ($_modelCleaning) {
            case 'basic-1';
                $params = array("category" => 2, "mode" => ($eco ? 1 : 2), "modifier" => 2);
                break;
            case 'minimal-2';
            case 'minimal-3';
                $params = array("category" => 2, 'navigationMode' => 1);
                break;
            case 'basic-3';
                if($_maps == 'advanced-1' ){
                    $params = array("category" => 4, "mode" => ($eco ? 1 : 2), 'navigationMode' => 1);
                }else {
                    $params = array("category" => 2, "mode" => ($eco ? 1 : 2), 'navigationMode' => 1);
                }   
                    break;
            case 'basic-4';
                if($_maps == 'basic-2'){
                    $params = array("category" => 4, "mode" => ($eco ? 1 : 2), 'navigationMode' => 1, 'boundaryId' => $_boundaryId );
                }else {
                    $params = array("category" => 2, "mode" => ($eco ? 1 : 2), 'navigationMode' => 1);
                } 
                break;
            default:
                $params = array("category" => 2, "mode" => ($eco ? 1 : 2), "modifier" => 2,'navigationMode' => 1);
                break;
        }   
		return $this->doAction("startCleaning", $params);
}

Et pour neato.class.php

public static function cron15($_eqlogic_id = null,$_data = null) {

Ajout des lignes suivant après
ligne 82 $modelCleaning = $result[‹ availableServices ›][‹ houseCleaning ›];
ligne 83 if ($neato->getConfiguration(‹ modelCleaning ›, ‹  ›) != $modelCleaning) {
ligne 84 $neato->setConfiguration(‹ modelCleaning ›, $modelCleaning);
ligne 85 $neato->save();
ligne 86 }
/* Ajout */

            $maps = $result['availableServices']['maps'];
			if ($neato->getConfiguration('maps', '') != $maps) {
				$neato->setConfiguration('maps', $maps);
				$neato->save();
			}

/* Ajout FIN */
…}

et

modification des lignes suivantes :

			case 'start':
			$result = $robot->startCleaning(true,$eqLogic->getConfiguration('modelCleaning', ''),$eqLogic->getConfiguration('maps', ''),$eqLogic->getConfiguration('boundaryId', ''));
			break;
			case 'starteco':
			$result = $robot->startCleaning(false,$eqLogic->getConfiguration('modelCleaning', ''),$eqLogic->getConfiguration('maps', ''),$eqLogic->getConfiguration('boundaryId', ''));
			break;

Pour la partie BoundaryId, elle permet de selectionner une carte pour le nettoyage. Mon robot ne le permet pas donc je n’ai pas pu creuser plus que ça. Pour avoir le BoundaryId il faut le mapid qui est fournie par le getRobot mais dans mon cas je n’ai que l’information ‹ persistent_maps › mais pas le ‹ maps › avec la liste des cartes disponibles.

Dis moi ce que tu en penses.

Ca me semble pas mal, surtout la refonte de startCleaning, ca sera dispo demain en beta je vais tester chez moi voir si tout est bon