Xiaomi Vaccum S50V1 et zones

Bonjour à vous,

pouvez vous m’aider a régler un soucis avec mon scénario de nettoyage de zones avec l’aspirateur xiaomi S50v1.

Voilà mon problème :
j’ai établi mon scénario en suivant le tuto de Sarakha63 que je remercie au passage et donc lors que lance une zone depuis le virtuel (après avoir lancer le nettoyage de tout mon appartement donc carte visible sur l’application mihome) le scénario se passe bien, l’aspirateur effectue bien la zone choisi et retourne bien à la base.
Ensuite j’essaye de lancer une autre zone, l’aspirateur fait 20 cm puis retourne à la base en me disant la zone n’a pas pu être atteinte. je verifie la carte sur l’application mihome, il n’y a que la zone précédemment effectué qui apparaît.

Avez vous une idée ? Merci par avance

//Script de contournement des problèmes de rotations de cartes
//définition des zones (cleanZone) et des positions sur la carte (goThere):
$coordonnees = array();
$coordonnees[‹ Roborock_NULL ›][] = «  »;
$coordonnees[‹ Roborock_SALON ›][] = « 25117,20058,29467,23258,1 »;
$coordonnees[‹ Roborock_CUISINE ›][] = « 25052,23229,29702,25779,1 »;
$coordonnees[‹ Roborock_CHAMBRE_D AMIS ›][] = « 24088,17111,27188,19211,1 »;
$coordonnees[‹ Roborock_CHAMBRE_PARENTALE ›][] = « 24072,14174,27672,17074,1 »;
$coordonnees[‹ RoborockK_SALLE_DE_BAINS ›][] = « 27860,14046,29910,15896,1 »;
$coordonnees[‹ Roborock_COULOIR ›][] = « 28371,18153,30071,20053,1 »;
$coordonnees[‹ Roborock_COULOIR ›][] = « 27803,15889,28853,18289,1 »;

//Coordonnees des goThere
$coordonnees[‹ Roborock_Poubelle ›][] = « 28518,25845 »;

//Zones de regroupement plusieurs autres zones :
$coordonnees[‹ Roborock_Appartement ›][] = $coordonnees[‹ Roborock_COULOIR ›][0];
$coordonnees[‹ Roborock_Appartement ›][] = $coordonnees[‹ Roborock_COULOIR ›][1];

// Récupération des paramètres stockés dans le virtuel :
// rotation relative de la carte == 0 lors de la création initiale des zones
$cmd = cmd::byString(« #[Appartement][ACTION Roborock][rotation_map]# »);
$rotation = $cmd->execCmd();
// centre X de la carte :
$cmd = cmd::byString(« #[Appartement][ACTION Roborock][centre_x]# »);
$centre_x = $cmd->execCmd();
// centre Y de la carte :
$cmd = cmd::byString(« #[Appartement][ACTION Roborock][centre_y]# »);
$centre_y = $cmd->execCmd();
$centre = array($centre_x,$centre_y); // centre X, Y de la carte (25000,25000)

function rotate($x,$y, $angle,$centre) {
if($angle == 0)
{
// ajustement facultatif du centre par défaut en cas de léger déplacement de la base :
// $x = $x - 80;
// $y = $y + 80;
return array($x,$y);
}
$angle *= M_PI / 180;
$xM = $x - $centre[0];
$yM = $y - $centre[1];
$x = $xM * cos($angle) + $yM * sin($angle) + $centre[0];
$y = - $xM * sin($angle) + $yM * cos($angle) + $centre[1];
return array(round($x), round($y));

}

function generer($coordonnees,$quoi,$rotation,$centre)
{
if( count($coordonnees[$quoi])<1 ) return « AUCUN »;
$zonedef=array();
foreach($coordonnees[$quoi] as $lazone)
{ // pour chaque zone
$zone=explode(‹ , ›, $lazone);
$coord=array();
list( $xa , $ya ) = rotate($zone[0],$zone[1],$rotation,$centre); // Renvoi position debut array(x,y)
if( $zone[2] > 0 )
{ // Clean zone
list( $xb , $yb ) = rotate($zone[2],$zone[3],$rotation,$centre); // renvoi position fin array(x,y)
if( $xa < $xb )
{
$coord[0] = $xa;
$coord[1] = 0;
$coord[2] = $xb;
}
else{
$coord[0] = $xb;
$coord[1] = 0;
$coord[2] = $xa;
}
if( $ya < $yb )
{
$coord[1] = $ya;
$coord[3] = $yb;
}
else{
$coord[1] = $yb;
$coord[3] = $ya;
}
$coord[4]=$zone[4];
$zonedef[]=‹ [ ›.implode(‹ , ›,$coord).‹ ] ›;
}
else{ // Gothere
$zonedef[] = $xa . « , » . $ya;
}
}
return implode(‹ , ›,$zonedef);
}

$cmd = cmd::bystring(« #[Appartement][ACTION Roborock][Ordre]# »);
$job = $cmd->execCmd(); // contient le nom de la zone ou position demandée (tel que défini dans notre tableau)

// on génère les coordonnées corrigées :
$newpos = generer($coordonnees,$job,$rotation,$centre);

// et on sauve ces coordonnées dans notre virtuel (pour qu’ils soient exploitables hors de notre bloc de code)
$cmd = cmd::byString(« #[Appartement][ACTION Roborock][coordonnees]# »);
$cmd->event($newpos);

// FIN DU SCRIPT

salut

as tu résolu ton problème ?

Slt,

non toujours pas