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?

thomious
Timide
Messages : 201
Inscription : 15 sept. 2014, 22:53

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

Message par thomious » 21 juin 2019, 16:51

bonjour,

merci pour le tuto c'est top le lancement de zone via google assistance.
sur quel serveur vous vous connecter?
sur singapore ca fonctionne bien.

mais avec une ancienne version de mi home on ne peut pas choisir France pour récupérer le token

Avatar de l’utilisateur
Patrick
Helper
Messages : 1019
Inscription : 29 août 2014, 15:21
Localisation : Savoie

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

Message par Patrick » 21 juin 2019, 17:41

thomious a écrit :
21 juin 2019, 16:51
bonjour,

merci pour le tuto c'est top le lancement de zone via google assistance.
sur quel serveur vous vous connecter?
sur singapore ca fonctionne bien.

mais avec une ancienne version de mi home on ne peut pas choisir France pour récupérer le token
De rien ;)
Heureux que cela ai pu améliorer le coté WAF de ton installation domotique :lol:

Pour le serveur, tu as la possibilité de changer de serveur en changeant le firmware de ton aspi ;)
ßêta-Testeur / Développeur plugin / Modérateur du Forum EnOcean

En domotique ou en informatique, il n'y a pas de problème, mais seulement des solutions à trouver...
Pour contribuer au développement des plugins et tutos : Paypal

Avatar de l’utilisateur
Theking31
Actif
Messages : 1182
Inscription : 21 sept. 2017, 11:13
Localisation : Toulouse - Le Vernet

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

Message par Theking31 » 21 juin 2019, 17:50

De mon côté, l'aspirateur se range dans un endroit confiné (étroit) et j'ai souvent des rotations de carte de 180°... Vous pensez que cela peut être une cause à effet ?
Jeedom 4.0.23 sur Intel NUC 6CAYH | Linux 4.9.0-11-amd64 | Debian 9.11
Rfxcom | Z-Wave Plus Z-Stick GEN5 | Conbee 2 | => sur hub alimenté
Blea| Brodlink | Xiaomi |ESPeasy | Wifilightv2

Avatar de l’utilisateur
Patrick
Helper
Messages : 1019
Inscription : 29 août 2014, 15:21
Localisation : Savoie

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

Message par Patrick » 21 juin 2019, 17:55

Oui, il semblerait que de le placer dans un angle, mais avec 1 mètre à droite et à gauche de la base, limite les problèmes de rotation...
ßêta-Testeur / Développeur plugin / Modérateur du Forum EnOcean

En domotique ou en informatique, il n'y a pas de problème, mais seulement des solutions à trouver...
Pour contribuer au développement des plugins et tutos : Paypal

thomious
Timide
Messages : 201
Inscription : 15 sept. 2014, 22:53

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

Message par thomious » 21 juin 2019, 19:29

Theking31 a écrit :
21 juin 2019, 17:50
De mon côté, l'aspirateur se range dans un endroit confiné (étroit) et j'ai souvent des rotations de carte de 180°... Vous pensez que cela peut être une cause à effet ?
pour moi il est très confiné et pas de soucis!.

j'ai enlever un morceau de plinthe de mon meuble de cuisine comme sa il passe dessous

maintenant avec google home j'ai juste a dire "vider le bac" et il se positionne auprès de la poubelle! c'est top!

thomious
Timide
Messages : 201
Inscription : 15 sept. 2014, 22:53

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

Message par thomious » 21 juin 2019, 19:30

Patrick a écrit :
21 juin 2019, 17:41
thomious a écrit :
21 juin 2019, 16:51
bonjour,

merci pour le tuto c'est top le lancement de zone via google assistance.
sur quel serveur vous vous connecter?
sur singapore ca fonctionne bien.

mais avec une ancienne version de mi home on ne peut pas choisir France pour récupérer le token
De rien ;)
Heureux que cela ai pu améliorer le coté WAF de ton installation domotique :lol:

Pour le serveur, tu as la possibilité de changer de serveur en changeant le firmware de ton aspi ;)
ok merci pour l'info ! je vais rester comme ça!
ça marche plutôt bien!

Nako
Timide
Messages : 20
Inscription : 13 nov. 2018, 09:59

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

Message par Nako » 18 juil. 2019, 11:30

Bonjour,

Merci pour le tuto et aux intervenants de ce post, j'ai réussi a faire mes zones grâce a vous.

Avatar de l’utilisateur
Patrick
Helper
Messages : 1019
Inscription : 29 août 2014, 15:21
Localisation : Savoie

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

Message par Patrick » 18 juil. 2019, 12:02

De rien :-)
Note que j'ai mis à jour le tuto (avec de petites corrections) que j'avais initialement diffusé sur le site de Sarakha.
Le lien tuto est dans ma signature... ;-)
ßêta-Testeur / Développeur plugin / Modérateur du Forum EnOcean

En domotique ou en informatique, il n'y a pas de problème, mais seulement des solutions à trouver...
Pour contribuer au développement des plugins et tutos : Paypal

laWerss
Timide
Messages : 3
Inscription : 31 juil. 2019, 15:07

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

Message par laWerss » 31 juil. 2019, 16:41

Bonjour,

Tout d'abord je remercie les développeurs des solutions qui nous facilitent la vie au quotidien :)

J'ai récemment acquis le robot xiaomi V1 et je me suis attelé à sa domotisation dans Jeedom. Le tuto s'est très bien déroulé et j'étais content d'avoir mes zones bien dessinées et un aspi connecté fonctionnel!

Mais voilà, j'ai commencé à expérimenter le principe de rotation_map et c'est là que ça se complique. Mes angles me donnent des zones plus petites et surtout je m'aperçois que le centre (25000,25000) qui devrait se situer non loin de la base, peut se retrouver au milieu du nouveau plan! Je ne déplace pas le robot manuellement, je veux dire que je fais tout via jeedom.

Je peux transmettre le code de la rotation:

Code : Tout sélectionner

$cmd = cmd::byString("#[Maison][robot Vacuum V1][rotation_map]#");
$rotation=$cmd->execCmd();
$scenario->setLog("rotation: ".$rotation);
$cmd = cmd::byString("#[Maison][robot Vacuum V1][centre_x]#");
$centre_x=$cmd->execCmd();
$scenario->setLog("centre_x: ".$centre_x);
$cmd = cmd::byString("#[Maison][robot Vacuum V1][centre_y]#");
$centre_y=$cmd->execCmd();
$scenario->setLog("centre_y: ".$centre_y);
$centre = array($centre_x,$centre_y);

function rotate($x,$y,$angle,$centre){
  global $scenario;
  if ($angle ==0){
    // facultatif: au cas où on veut décaler le centre
    //$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 = $yM * cos($angle) - $xM * sin($angle)  + $centre[1];
  $scenario->setLog("x: ".$x);
  $scenario->setLog("y: ".$y);
  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("#[Maison][robot Vacuum V1][Ordre]#");
$job = $cmd->execCmd(); //contient le nom de la zone ou position demandée (tel que défini dans notre tableau)
$scenario->setLog("job: ".$job);
// 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("#[Maison][robot Vacuum V1][coordonnées]#");
$cmd->event($newpos);
Avez-vous une idée? Est-ce que ça vous est déjà arrivé?

Merci beaucoup!

Avatar de l’utilisateur
Patrick
Helper
Messages : 1019
Inscription : 29 août 2014, 15:21
Localisation : Savoie

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

Message par Patrick » 31 juil. 2019, 18:55

Je suis en vacances et donc trop loin de mon Jeedom pour regarder en détail...
Mais ma première question serait :
Quelles valeurs as tu mis dans $centre_x et y ainsi que dans $Rotation_map ?
ßêta-Testeur / Développeur plugin / Modérateur du Forum EnOcean

En domotique ou en informatique, il n'y a pas de problème, mais seulement des solutions à trouver...
Pour contribuer au développement des plugins et tutos : Paypal

laWerss
Timide
Messages : 3
Inscription : 31 juil. 2019, 15:07

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

Message par laWerss » 31 juil. 2019, 22:08

J’avais mis $centre_x=$centre_y=25000
Pour $rotation_map, je faisais varier l’angle entre 20 et 45 degrés à peu près...

Avatar de l’utilisateur
Patrick
Helper
Messages : 1019
Inscription : 29 août 2014, 15:21
Localisation : Savoie

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

Message par Patrick » 05 août 2019, 18:31

Les rotations de la carte se font par par tranches de 45° (0,45,90, etc...) .
Zéro degré correspond à la la position initiale de la carte lorsque tu as défini les coordonnées de tes zones.

Après une rotation de la carte, lance un nettoyage d'une de tes zones mémorisées en regardant sur la carte de mi-home si celle-ci correspond à bien à la position attendue.
Si celle-ci est un peut décalée, alors modifie légèrement tes centres X et Y (initialement à 25000) , et relance le nettoyage de ta zone pour éventuellement affiner...
Si par contre, la zone de nettoyage n'a rien à voir avec la zone attendue, alors soit la rotation que tu as indiquée n'est pas la bonne, soit tu as fait une /des erreurs dans le script...
ßêta-Testeur / Développeur plugin / Modérateur du Forum EnOcean

En domotique ou en informatique, il n'y a pas de problème, mais seulement des solutions à trouver...
Pour contribuer au développement des plugins et tutos : Paypal

laWerss
Timide
Messages : 3
Inscription : 31 juil. 2019, 15:07

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

Message par laWerss » 06 août 2019, 09:55

Merci Patrick, je vais continuer d'affiner tout ça :)

Pixou
Timide
Messages : 20
Inscription : 11 août 2019, 23:27

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

Message par Pixou » 11 août 2019, 23:35

Messieurs bonjour.

j'ai installé depuis peu jeedom sur ma cubox pour pouvoir controler mes volets.
Avant d'acheter une antenne pour faire la liaison je suis tombé sur votre poste.
Ayant un petit roborock S50 V2 il faut avouer que tout basculer sur jeedom ca m'a plu.

Mon soucis c'est que le gothere ne fonctionne pas (surement mal recopié quelque chose ?) et j'ai une jolie erreur dans les logs:
[2019-08-11 22:51:01][SCENARIO] Start : Scenario execute automatiquement sur evenement venant de : [Sejour][ACTIONS R2D2][Ordre].
[2019-08-11 22:51:01][SCENARIO] Exécution du sous-élément de type [action] : code
[2019-08-11 22:51:01][SCENARIO] Exécution d'un bloc code
[2019-08-11 22:51:01][SCENARIO] syntax error, unexpected end of file
[2019-08-11 22:51:01][SCENARIO] Exécution du sous-élément de type [condition] : if
[2019-08-11 22:51:01][SCENARIO] Evaluation de la condition : ["R2D2_POUBELLE" == "R2D2_POUBELLE" ] = Vrai
[2019-08-11 22:51:01][SCENARIO] Exécution du sous-élément de type [action] : then
[2019-08-11 22:51:01][SCENARIO] Exécution de la commande [Séjour][R2D2][GoThere] avec comme option(s) : {"background":"0","title":"","message":""}
[2019-08-11 22:51:01][SCENARIO] Exécution du sous-élément de type [condition] : if
[2019-08-11 22:51:01][SCENARIO] Evaluation de la condition : ["R2D2_POUBELLE" == "R2D2_SALON" ] = Faux
[2019-08-11 22:51:01][SCENARIO] Exécution du sous-élément de type [action] : else
[2019-08-11 22:51:01][SCENARIO] Fin correcte du scénario
voici mon code complet :

Code : Tout sélectionner

//definition des zones et des positions sur la carte:
$coordonnees=array();
$coordonnees['R2D2_CUISINE'][] = "16042,28104,20192,31054,1";
$coordonnees['R2D2_SALON'][] = "23816,24376,27966,31076,1";
$coordonnees['R2D2_ENTREE'][] = "15975,26400,20075,28300,1";
$coordonnees['R2D2_SALLE'][] = "20207,25061,23957,31111,1";
//coordonnées point cible :
$coordonnees['R2D2_POUBELLE'][] = "17550,30050";


// Recuperation des parametres stockes dans le virtuel:
// rotation relative de la carte == 0 lore de la creation initiale des zones
$cmd = cmd::byString("#[Séjour][ACTIONS R2D2][rotation_map]#");
$rotation = $cmd->execCmd();
// centre X de la carte :
$cmd = cmd::byString("#[Séjour][ACTIONS R2D2][centre_x]#");
$centre_x = $cmd->execCmd();
// centre Y de la carte :
$cmd = cmd::byString("#[Séjour][ACTIONS R2D2][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 )
			{ // 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("#[Séjour][ACTIONS R2D2][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("#[Séjour][ACTIONS R2D2][coordonnees]#");
$cmd->event($newpos);
// FIN DU SCRIPT
merci d'avance de votre aide ça fait plusieurs heures que je me tire les cheveux :(

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 » 12 août 2019, 02:27

Pixou a écrit :
11 août 2019, 23:35
Messieurs bonjour.

j'ai installé depuis peu jeedom sur ma cubox pour pouvoir controler mes volets.
Avant d'acheter une antenne pour faire la liaison je suis tombé sur votre poste.
Ayant un petit roborock S50 V2 il faut avouer que tout basculer sur jeedom ca m'a plu.

Mon soucis c'est que le gothere ne fonctionne pas (surement mal recopié quelque chose ?) et j'ai une jolie erreur dans les logs:

voici mon code complet :

Code : Tout sélectionner

$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)
	{
merci d'avance de votre aide ça fait plusieurs heures que je me tire les cheveux :(
Salut,

Tu as oublié de fermer l'accolade de la fonction rotate, ce qui provoque l'erreur remontée dans les logs.

Pixou
Timide
Messages : 20
Inscription : 11 août 2019, 23:27

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

Message par Pixou » 12 août 2019, 07:33

Bonjour noodom.

Merci en effet grosse erreur.
Je suis passé à coté sans voir ...

Par contre bizarrement que ce soit la fonction salon ou gothere plus rien ne fonctionne et le log ne me remonte rien :(

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 » 12 août 2019, 07:58

Tu as passé les scénarios en mode debug et regardé dans les logs pour scénario_execution ?

Pixou
Timide
Messages : 20
Inscription : 11 août 2019, 23:27

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

Message par Pixou » 12 août 2019, 08:23

noodom a écrit :
12 août 2019, 07:58
Tu as passé les scénarios en mode debug et regardé dans les logs pour scénario_execution ?
dans administration j'ai scenario et plugin en debug.
par contre comment fais tu pour regarder les log de scénario_execution ?
j'allais dans le scénario et je cliquais sur log moi (rien ici)

edit: ok il y a un menu général pour les logs ^^
j'ai rien dans scenario_execution

Pixou
Timide
Messages : 20
Inscription : 11 août 2019, 23:27

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

Message par Pixou » 12 août 2019, 17:43

bon j'ai copié le code de laWerss et ca fonctionne pour le salon mais toujours pas de réaction pour le gothere
(par contre aucun log dans scenario_execution)

edit: bon et bien après avoir cherché quelques pages avant j'ai modifié dans ordre comme l'a spécifié Patrick :
Dans ton virtuel, au bout de la ligne de la commande Ordre, tu as une roue crantée pour ouvrir la configuration avancée...
Modifie la répétition, en la passant sur "toujours répéter".
Ensuite refait un test et donne le log...
et ça fonctionne maintenant :D

plus qu'à trouver pour rendre compatible avec ok google :D (c'est bon :D)

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 » 12 août 2019, 22:06

Bonne nouvelle ça !
À te lire, je me suis en effet rappelé du coup de la répétition!
Pour le ok Google, ça va le faire, ce n'est pas si compliqué

Répondre

Revenir vers « [Plugin Tiers] Xiaomi Home »

Qui est en ligne ?

Utilisateurs parcourant ce forum : toynboys et 6 invités