Ce Forum passera en lecture seule en janvier 2020
Image
Merci de vous rendre sur https://community.jeedom.com maintenant pour vos prochains postes ;)

Aspirateur Roborock S50 => définir les zones de la maison?

Avatar de l’utilisateur
toma
Timide
Messages : 452
Inscription : 07 oct. 2014, 23:29
Localisation : Haute Savoie

Re: Aspirateur Roborock S50 => définir les zones de la maison?

Message par toma » 03 mai 2019, 18:34

Theking31 a écrit :Au final je pense que chaque erreur de l'aspi génére le recalcul de la carte !
J'ai eu une erreur hier : coincé dans la ficelle d'un ballon et la carte n'a pas tournée pour la part

Envoyé de mon Pixel 3 en utilisant Tapatalk

Freebox mini - Synology DS214 - APC UPS BX700FR - Lametric
RPI 2 + PiDrive + Hue x 6 lumières, Ecodevice, 2x wall-plug + 2x FGK-105 + 4x FGSD-002 + 1x FGS-211, Xiaomi + 6xT° + 3xcapteurs portes+ yeelight + 2x motion, GH mini

Rvitch
Actif
Messages : 674
Inscription : 21 juin 2016, 10:31

Re: Aspirateur Roborock S50 => définir les zones de la maison?

Message par Rvitch » 03 mai 2019, 19:58

toma a écrit :
Theking31 a écrit :Au final je pense que chaque erreur de l'aspi génére le recalcul de la carte !
J'ai eu une erreur hier : coincé dans la ficelle d'un ballon et la carte n'a pas tournée pour la part

Envoyé de mon Pixel 3 en utilisant Tapatalk
Tout a fait d'accord.
Il tourne uniquement au démarrage d'une nouvelle demande de nettoyage complet.
Et d'après mes tests la carte tourne quand l'aspirateur retourne à sa base dans un autre Angle que la normale.
Si ma carte tourne, il me suffit de placer l'aspirateur à 30 cm de la base dans le bon angle et de lui demander de rentrer.
Après ça le nouveau nettoyage demandé sera dans la bonne orientation.


tapatalké depuis une cabine téléphonique.


djo074
Timide
Messages : 50
Inscription : 19 janv. 2018, 14:59

Re: Aspirateur Roborock S50 => définir les zones de la maison?

Message par djo074 » 07 mai 2019, 16:47

Bonjour à tous!

Avec la sortie du Roborock S6, peut on s'attendre à votre avis aux mêmes fonctionnalités voir en mieux, avec par exemple plusieurs cartes en mémoire?

Djo

mortyre
Actif
Messages : 1247
Inscription : 17 mai 2016, 16:51

Re: Aspirateur Roborock S50 => définir les zones de la maison?

Message par mortyre » 08 mai 2019, 13:23

J'y crois pas trop ça ferait de l'ombre au S50, alors que le S6 va un peu plus vite, un peu plus silencieux et cette fonction de zone dans l'app il n'y a rien de vraiment nouveau, il s'agit plutôt d'un lifting.

Donc s'ils intègrent la gestion de zone sur le S50 qui achètera le S6 vu qu'il est beaucoup plus cher ?

Dommage car c'était bien de les avoir sur l'api directement

Image
PROD: NAS1815+ VMM Buster 10.2 / Jeedom 4.0.31 / MariaDB 10.3.18 / PHP 7.3.9
DEV: DIY Odroid C2 16gb Strech 9.11 / Jeedom 4.x Alpha / MariaDB 10.1.41 / PHP 7.0.33

Ap0p0
Timide
Messages : 38
Inscription : 10 mars 2017, 12:26

Re: Aspirateur Roborock S50 => définir les zones de la maison?

Message par Ap0p0 » 08 mai 2019, 17:18

J'ai suivi ce fil pour l'intégration des zone_clean. Tout fonctionne à merveille avec intéraction GH sur un S50.

Merci à tous pour ce travail :)

Qben
Timide
Messages : 27
Inscription : 01 janv. 2018, 17:26

Re: Aspirateur Roborock S50 => définir les zones de la maison?

Message par Qben » 17 mai 2019, 10:29

Bonjour,

Merci pour le boulot !
Je suis possesseur de la version 1 de Xiaomi.
Lorsque je met en pause une "zone de nettoyage" lancé par Jeedom, je n'ai pas trouvé le moyen de redémarrer la ou il en était. Le bouton "lecture" le fait démarrer comme si l'on appuyait sur le bouton "clean" de l'application.

Quelqu'un a une astuce pour faire un redémarrage de l'aspirateur sans tout recommencer ?

=> ce que je cherche à faire :
Démarrage de l'aspirateur d'une zone de nettoyage lors de l’activation de l'alarme => OK
Mise en pause si l'aspi n'a pas fini et que l'alarme est desactivé => OK
Reprise de l'aspi à la remise de l'alarme => NOK

Benoit

__pandi__
Timide
Messages : 3
Inscription : 25 mars 2019, 11:32

Re: Aspirateur Roborock S50 => définir les zones de la maison?

Message par __pandi__ » 17 mai 2019, 12:20

Bonjour à tous,

mon nettoyage de zone fonctionne parfaitement. Je pilote le tout avec la google home. C'est vraiment extra.
Par contre ce matin, ma carte a tourné. Du coup, mes zones définies sont inopérantes.

Une solution ?

Merci

sebfar
Timide
Messages : 440
Inscription : 17 sept. 2018, 13:34

Re: Aspirateur Roborock S50 => définir les zones de la maison?

Message par sebfar » 17 mai 2019, 13:27

__pandi__ a écrit :
17 mai 2019, 12:20
Bonjour à tous,

mon nettoyage de zone fonctionne parfaitement. Je pilote le tout avec la google home. C'est vraiment extra.
Par contre ce matin, ma carte a tourné. Du coup, mes zones définies sont inopérantes.

Une solution ?

Merci
Salut
Avec un peu de recherche: http://sarakha63-domotique.fr/piloter-v ... -la-carte/

Rvitch
Actif
Messages : 674
Inscription : 21 juin 2016, 10:31

Re: Aspirateur Roborock S50 => définir les zones de la maison?

Message par Rvitch » 17 mai 2019, 15:25

__pandi__ a écrit :Bonjour à tous,

mon nettoyage de zone fonctionne parfaitement. Je pilote le tout avec la google home. C'est vraiment extra.
Par contre ce matin, ma carte a tourné. Du coup, mes zones définies sont inopérantes.

Une solution ?

Merci
viewtopic.php?p=726355#p726355

tapatalké depuis une cabine téléphonique.


mounik34
Timide
Messages : 34
Inscription : 25 juin 2018, 11:04

Re: Aspirateur Roborock S50 => définir les zones de la maison?

Message par mounik34 » 21 mai 2019, 08:14

Pour la rotation de la carte : depuis que j'ai rajouté un mur virtuel (v2) la carte n'a jamais plus changée/tournée! Essayez de mettre un mur (meme en dehors de la carte ....

chboc85
Timide
Messages : 55
Inscription : 16 déc. 2015, 11:18

Re: Aspirateur Roborock S50 => définir les zones de la maison?

Message par chboc85 » 22 mai 2019, 14:15

Bonjour a tous,

Je rencontre beaucoup de difficulté à mettre en place le nettoyage de zone...
Je vous explique tout ça depuis le début...

Donc je me suis lancé dans un premier temps dans le repérage des points bas-gauche et haut-droit afin de définir toute mes zones, en testant chaque zone sur l'appli Mi Home voir si ça correspondait bien et tout été OK.

Ensuite, je continu de recopier les lignes de code en adaptant à mes commandes, une fois tout fini, ça ne fonctionnait pas... Je me lance donc à la recherche de toutes les erreurs de syntaxe que j'ai pu commettre et en trouve un bon paquets... Après une bonne dizaine de relecture, je pense que mon script et bon et mon virtuel aussi sauf que ça ne fonctionne toujours pas correctement. Je continu de chercher sur ce forum, comparer voir ce qui cloche dans mon scipt et virtuel mais je ne trouve rien...

Je décide donc de retester mes zones pour voir si mes coordonnées sont toujours ok et la je rencontre un problème qui apparemment n'a pas été rencontrer par une autre personne sur ce forum ou je n'ai pas vu.
Donc, pour tester ma zone, je vérifie mes points bas-gauche et haut-droit en utilisant la commande GoThere, les points cible bien ou je le veux sur l'application Mi Home. ensuite lorsque je veux tester la Zone avec la commande CleanZone, je reprend mes 2 points bas gauche et haut droit + le nb de passage désiré, ce qui donne => 30450,22800,34250,25400,1 et la l'aspirateur se lance en cleanZone mais elle ne correspond pas du tout à la zone voulu ET je ne vois pas le carré représentant la zone sur l'application Mi Home. Bref, il lance une CleanZone qui n'a rien a voir avec ce que je lui demande...

Aujourd'hui je me dit que mon scénario ne risque pas de fonctionner si la commande CleanZone ne fonctionne pas correctement chez moi. je ne sais pas du tout pourquoi cette commande ne fonctionne plus chez moi car elle a toujours très bien fonctionné auparavant...

voici le log d'un scenario lancé manuellement: juste une commande ACTION qui lance un CLeanZone
------------------------------------
[2019-05-22 13:56:54][SCENARIO] Start : Scenario lance manuellement.
[2019-05-22 13:56:54][SCENARIO] Exécution du sous-élément de type [action] : action
[2019-05-22 13:56:54][SCENARIO] Exécution de la commande [Salon][Aspirateur][CleanZone] avec comme option(s) : {"background":"0","title":"","message":"30450,22800,34250,25400,1"}
[2019-05-22 13:56:55][SCENARIO] Fin correcte du scénario

Les Coordonnées de la zone sont bien envoyé mais l'aspirateur n'en tient pas du tout compte... il nettoie une zone qui n'a rien a voir...

Merci d'avance pour votre aide, si quelqu'un à déjà rencontré ce soucis et sait de ou ça vient.

jfr
Timide
Messages : 97
Inscription : 19 nov. 2017, 00:45

Re: Aspirateur Roborock S50 => définir les zones de la maison?

Message par jfr » 22 mai 2019, 20:55

chboc85 a écrit :
22 mai 2019, 14:15
Les Coordonnées de la zone sont bien envoyé mais l'aspirateur n'en tient pas du tout compte... il nettoie une zone qui n'a rien a voir...

Merci d'avance pour votre aide, si quelqu'un à déjà rencontré ce soucis et sait de ou ça vient.
Ca ressemble à une carte qui a tourné ça non ? Dans Mi Home rien d'anormal ?
JF

chboc85
Timide
Messages : 55
Inscription : 16 déc. 2015, 11:18

Re: Aspirateur Roborock S50 => définir les zones de la maison?

Message par chboc85 » 23 mai 2019, 08:59

jfr a écrit :
22 mai 2019, 20:55
chboc85 a écrit :
22 mai 2019, 14:15
Les Coordonnées de la zone sont bien envoyé mais l'aspirateur n'en tient pas du tout compte... il nettoie une zone qui n'a rien a voir...

Merci d'avance pour votre aide, si quelqu'un à déjà rencontré ce soucis et sait de ou ça vient.
Ca ressemble à une carte qui a tourné ça non ? Dans Mi Home rien d'anormal ?
JF
Je ne pense pas qu'il s'agisse d'une rotation de la carte car lorsque je lance un GoThere avec les points bas-gauche ou haut-droit de ma zone, il va au bon endroit... C'est la fonction CleanZone qui ne marche plus correctement chez moi et je ne vois pas ce que j'ai bien pu faire pour qu'elle ne fonctionne plus... Au début elle marchait très bien. Sinon sur Mi Home il n'y a rien de changé.
Je pense que je vais supprimer la carte de Mi home est relancer mon aspirateur pour qu'il régénère la carte au complet et repartir sur une carte "neuve", suite a cela redéfinir mes zones a partir de cette "nouvelle" carte.

chboc85
Timide
Messages : 55
Inscription : 16 déc. 2015, 11:18

Re: Aspirateur Roborock S50 => définir les zones de la maison?

Message par chboc85 » 23 mai 2019, 11:53

chboc85 a écrit :
23 mai 2019, 08:59
jfr a écrit :
22 mai 2019, 20:55
chboc85 a écrit :
22 mai 2019, 14:15
Les Coordonnées de la zone sont bien envoyé mais l'aspirateur n'en tient pas du tout compte... il nettoie une zone qui n'a rien a voir...

Merci d'avance pour votre aide, si quelqu'un à déjà rencontré ce soucis et sait de ou ça vient.
Ca ressemble à une carte qui a tourné ça non ? Dans Mi Home rien d'anormal ?
JF
Je ne pense pas qu'il s'agisse d'une rotation de la carte car lorsque je lance un GoThere avec les points bas-gauche ou haut-droit de ma zone, il va au bon endroit... C'est la fonction CleanZone qui ne marche plus correctement chez moi et je ne vois pas ce que j'ai bien pu faire pour qu'elle ne fonctionne plus... Au début elle marchait très bien. Sinon sur Mi Home il n'y a rien de changé.
Je pense que je vais supprimer la carte de Mi home est relancer mon aspirateur pour qu'il régénère la carte au complet et repartir sur une carte "neuve", suite a cela redéfinir mes zones a partir de cette "nouvelle" carte.
Je reviens avec de bonne nouvelle!!!! Ça marche enfin!!!

Pour mon soucis de CleanZone au lancement via le dashboard, il suffisait de rajouter les [ ] de chaque coté de mes coordonnées, truc que je faisais pas avant il me semble, enfin bref ça marche comme ça.

Ensuite le plus important, après 350654641 relecture du script, j'ai enfin trouvé ma boulette, à la ligne $zonedef[]='['.implode(',',$coord).']'; j'avais oublié le = après le $zondedef[] ....

Je vous dit pas l'émotion que j'ai ressenti lorsqu'au lancement de ma commande j'ai vu s'afficher ma zone sur MiHOME et j'ai vu le robot partir vers cette direction. YYYEESSSS!!!!!! CA MARCHE !!!!! (en plus je suis au boulo, j'ai du contenir mon enthousiasme même si ya un "OH PUT... CA MARCHE!! qui s'est échappé de ma bouche, les collègues m'ont regardé d'un drôle d'air, ils ont pas compris. Je suis sur que sur ce forum beaucoup de personne me comprennent MDR

Un grand merci a tous pour l'aide et surtout a Mr Sarakha pour ce code et le tuto. A moi les joies du zonage, mon fils de 3 ans va pouvoir remanger de la semoule et en mettre partout, c'est avec plaisir que je dirais "Ok Google, passe l'aspirateur dans la cuisine" MDR => Bonne journée a TOUS

Avatar de l’utilisateur
toma
Timide
Messages : 452
Inscription : 07 oct. 2014, 23:29
Localisation : Haute Savoie

Re: Aspirateur Roborock S50 => définir les zones de la maison?

Message par toma » 23 mai 2019, 16:36

mounik34 a écrit :Pour la rotation de la carte : depuis que j'ai rajouté un mur virtuel (v2) la carte n'a jamais plus changée/tournée! Essayez de mettre un mur (meme en dehors de la carte ....
J'ai effectivement deux murs virtuel depuis le début et la carte n'a jamais tournée chez moi.... Un rapport ou pas je sais pas ....

Envoyé de mon Pixel 3 en utilisant Tapatalk

Freebox mini - Synology DS214 - APC UPS BX700FR - Lametric
RPI 2 + PiDrive + Hue x 6 lumières, Ecodevice, 2x wall-plug + 2x FGK-105 + 4x FGSD-002 + 1x FGS-211, Xiaomi + 6xT° + 3xcapteurs portes+ yeelight + 2x motion, GH mini

splog22780
Timide
Messages : 42
Inscription : 11 juin 2018, 18:40

Re: Aspirateur Roborock S50 => définir les zones de la maison?

Message par splog22780 » 27 mai 2019, 18:32

Bonjour,
Je pense avoir suivi comme il faut le tuto de sarakha63, mais cela ne marche pas...Dans le log du scénario j'ai ce message:

Code : Tout sélectionner

------------------------------------
[2019-05-27 18:16:03][SCENARIO] Start : Scenario lance manuellement.
[2019-05-27 18:16:04][SCENARIO] Exécution du sous-élément de type [action] : code
[2019-05-27 18:16:04][SCENARIO] Exécution d'un bloc code
[2019-05-27 18:16:04][SCENARIO] syntax error, unexpected ':'
[2019-05-27 18:16:04][SCENARIO] Exécution du sous-élément de type [condition] : if
[2019-05-27 18:16:04][SCENARIO] Evaluation de la condition : ["" == "ASPI_CHAMBRE"] = Faux
[2019-05-27 18:16:04][SCENARIO] Exécution du sous-élément de type [action] : else
[2019-05-27 18:16:04][SCENARIO] Fin correcte du scénario
J'ai relu le code de mon scénario mais je ne vois pas où se trouve l'erreur...

Code : Tout sélectionner

$coordonnees = array();
$coordonnees['ASPI_CHAMBRE'][] = "21000,22000,25000,25500,1";
$coordonnees['ASPI_SALON'][] = "25000,24000,30000,30500,1";
$coordonnees['ASPI_CUISINE'][] = "22300,28500,23950,31000,1";
$coordonnees['ASPI_POUBELLE'][] = "23000,27500";

//Récupération des paramètres stockés dans le virtuel
//Rotation relative de la carte  == Lors de la création initiale des zones
$cmd = cmd: :byString("#[Aucun][Info_aspi][rotation_map]#");
$rotation = $cmd->execCmd();
//centre X de la carte:
$cmd = cmd: :byString("#[Aucun][Info_aspi][centre_x]#");
$centre_x = $cmd->execCmd();
//centre Y de la carte
$cmd = cmd: :byString("#[Aucun][Info_aspi][centre_y]#");
$centre_x = $cmd->execCmd();
$centre = array($centre_x,$centre_y); //centreX,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)
		{ // CleanZone 
		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("#[Aucun][Info_aspi][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és : 
$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("#[Aucun][Info_aspi][coordonnees]#"); 
$cmd->event($newpos); 

Est ce qu'il serait possible de me dire où se trouve l'erreur?
Merci d'avance

Avatar de l’utilisateur
noodom
Actif
Messages : 980
Inscription : 13 juil. 2014, 17:25
Contact :

Re: Aspirateur Roborock S50 => définir les zones de la maison?

Message par noodom » 27 mai 2019, 23:31

splog22780 a écrit :
27 mai 2019, 18:32
Bonjour,

J'ai relu le code de mon scénario mais je ne vois pas où se trouve l'erreur...

Code : Tout sélectionner

$coordonnees = array();
$coordonnees['ASPI_CHAMBRE'][] = "21000,22000,25000,25500,1";
$coordonnees['ASPI_SALON'][] = "25000,24000,30000,30500,1";
$coordonnees['ASPI_CUISINE'][] = "22300,28500,23950,31000,1";
$coordonnees['ASPI_POUBELLE'][] = "23000,27500";

//Récupération des paramètres stockés dans le virtuel
//Rotation relative de la carte  == Lors de la création initiale des zones
$cmd = cmd: :byString("#[Aucun][Info_aspi][rotation_map]#");
$rotation = $cmd->execCmd();
//centre X de la carte:
$cmd = cmd: :byString("#[Aucun][Info_aspi][centre_x]#");
$centre_x = $cmd->execCmd();
//centre Y de la carte
$cmd = cmd: :byString("#[Aucun][Info_aspi][centre_y]#");
$centre_x = $cmd->execCmd();
$centre = array($centre_x,$centre_y); //centreX,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)
		{ // CleanZone 
		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("#[Aucun][Info_aspi][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és : 
$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("#[Aucun][Info_aspi][coordonnees]#"); 
$cmd->event($newpos); 

Est ce qu'il serait possible de me dire où se trouve l'erreur?
Merci d'avance
Salut,

Pour les lignes 9 et 12, il ne faut pas d'espaces entre les ':'
$cmd = cmd::byString

splog22780
Timide
Messages : 42
Inscription : 11 juin 2018, 18:40

Re: Aspirateur Roborock S50 => définir les zones de la maison?

Message par splog22780 » 28 mai 2019, 14:18

C'est corrigé..

Code : Tout sélectionner

------------------------------------
[2019-05-28 13:57:46][SCENARIO] Start : Scenario lance manuellement.
[2019-05-28 13:57:46][SCENARIO] Exécution du sous-élément de type [action] : code
[2019-05-28 13:57:46][SCENARIO] Exécution d'un bloc code
[2019-05-28 13:57:46][SCENARIO] syntax error, unexpected ':'
[2019-05-28 13:57:46][SCENARIO] Exécution du sous-élément de type [condition] : if
[2019-05-28 13:57:46][SCENARIO] Evaluation de la condition : ["" == "ASPI_CHAMBRE"] = Faux
[2019-05-28 13:57:46][SCENARIO] Exécution du sous-élément de type [action] : else
[2019-05-28 13:57:46][SCENARIO] Fin correcte du scénario

Code : Tout sélectionner

$coordonnees = array();
$coordonnees['ASPI_CHAMBRE'][] = "21000,22000,25000,25500,1";
$coordonnees['ASPI_SALON'][] = "25000,24000,30000,30500,1";
$coordonnees['ASPI_CUISINE'][] = "22300,28500,23950,31000,1";
$coordonnees['ASPI_POUBELLE'][] = "23000,27500";

//Récupération des paramètres stockés dans le virtuel
//Rotation relative de la carte  == Lors de la création initiale des zones
$cmd = cmd::byString("#[Aucun][Info_aspi][rotation_map]#");
$rotation = $cmd->execCmd();
//centre X de la carte:
$cmd = cmd::byString("#[Aucun][Info_aspi][centre_x]#");
$centre_x = $cmd->execCmd();
//centre Y de la carte
$cmd = cmd::byString("#[Aucun][Info_aspi][centre_y]#");
$centre_x = $cmd->execCmd();
$centre = array($centre_x,$centre_y); //centreX,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)
		{ // CleanZone 
		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("#[Aucun][Info_aspi][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és : 
$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("#[Aucun][Info_aspi][coordonnees]#"); 
$cmd->event($newpos); 
Même retour...

Et concernant le widget de gestion de rotation de map pour de centrage de la carte, il se présente sous cette forme
Image

Est ce que j'ai une erreur dans mes virtuels?
Image

Merci d'avance

goldjoy40
Timide
Messages : 7
Inscription : 22 août 2018, 21:49

Re: Aspirateur Roborock S50 => définir les zones de la maison?

Message par goldjoy40 » 30 mai 2019, 21:32

Avant tout merci à tous pour vos contributions cela m'a permis de mettre en place l'activation des zones à la voix :)

Je cherche maintenant à avoir une alerte pour vider roborock (après une certaine surface nettoyée) mais je ne vois pas quel trigger mettre dans mon script. En effet j'incrémente la surface sur le statut "retour à la base" mais cela ne fonctionne pas toujours du fait de mes cas d'usage.
Avez vous implémenté cette fonction ? des idées ?

MErci !

maxime079
Timide
Messages : 20
Inscription : 08 mars 2019, 11:38

Re: Aspirateur Roborock S50 => définir les zones de la maison?

Message par maxime079 » 18 juin 2019, 11:15

Bonjour,
De mon côté mon script marche toujours parfaitement depuis plusieurs semaines , merci encore .

J'ai une question " tiers " , j'utilise actuellement ifttt + google home pour le commander , et cela marche très bien .

Cependant j'ai vu que dès que je désactivais l'option "Activité sur le Web et les applications" sur mon compte google , cela ne marchait plus ( logique vous allez me dire ! ) , mais ce qui me fait ch*** , c'est surtout que c'est option qui est liée à l'historique des activités / recherches , j'aimerai en fait désactiver ces dernières mais garder ma liaison ifttt ....:(

Image

Répondre

Revenir vers « [Plugin Tiers] Xiaomi Home »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 1 invité