Comme annoncé, ce forum est passé en lecture seule au 1er janvier 2020. Désormais nous vous invitons à vous rendre sur notre nouvelle page communauté :
Image

A très bientôt !

[Plugin Tiers][Sujet Principal] MyHOME Zigbee legrand

Pour échanger sur les plugins classés en catégorie "Protocoles domotiques"
Avatar de l’utilisateur
Seki
Actif
Messages : 746
Inscription : 06 sept. 2017, 21:50

Re: [Plugin Tiers][Sujet Principal] MyHOME Zigbee legrand

Message par Seki » 21 janv. 2018, 13:39

Bon ben ça été beaucoup plus vite que ce que je ne pensais. :lol:
J'ai taillé grave dans le code de gestion des volets, puisque je passe de 520 lignes à 124. Il y a certainement des petites choses qui pourraient être optimisées, mais je ne maîtrise pas bien toutes les subtilités des commandes Jeedom pour la partie plugin.

Désormais, les statuts sont cohérents et fonctionnent parfaitement, la position du volet (en %) est cohérente pour peu que vous paramétriez le temps de mouvement de votre volet dans la commande 'status'. Bon, ne vous attendez pas non plus à une précision au millimètre hein, la cohérence elle est juste visuelle. :lol:

Il me reste à tester avec un volet 'commande inversé' avant de donner les fichiers modifiés à ceux qui sont intéressés. Il vous suffira d'utiliser le plugin 'outilsdev' pour mettre ces fichiers là où il faut.

Je vais aussi rajouter des statuts supplémentaires afin de pouvoir interfacer le plugin Myhome avec le plugin voletProp de mika-nt28. Le but, pouvoir piloter mes volets non plus en tout ou rien, mais en positionnement.
Mes volets disposant de lames ajourées, ça me permettra de laisser passe la lumière l'été tout en empêchant la chaleur d'entrer. Pour ce faire, j'aurai juste à envoyer une commande avec la position souhaitée (10% par exemple) et les volets se positionneront à cette position grâce au plugin de mika.

Mon code simplifié:

Code : Tout sélectionner

	public static function updateStatusShutter($decrypted_trame, $scenarios=false) {
		/*
		// FONCTION : MISE A JOUR DU STATUS DES VOLETS
		// PARAMS : $decrypted_trame = array(
				"trame" => string,
				"mode" => string,
				"media" => 'string',
				"format" => 'string',
				"type" => 'string',
				"value" => string,
				"dimension" => string,
				"param" => string,
				"id" => string,
				"unit" => string,
				"date" => timestamp
		$scenarios => boolean (true si l'on doit recherche des scenarios associés)
		*/
		
		$def = new myhome_def();
		
		$myhome = myhome::byLogicalId($decrypted_trame["id"], 'myhome');
		$unit = $decrypted_trame["unit"];
		$deviceType = explode('::', $myhome->getConfiguration('device'));
		$subDeviceType = $deviceType[1];
		
		//Récupération de l'horodatage de la commande
		$timestampCmd = strtotime($decrypted_trame["date"]);
		
		//Récupération des derniers statuts
		$statusId = 'status'.$unit;
		$statusCmd = $myhome->getCmd('info', $statusId);
		$maxDuration = $statusCmd->getConfiguration('maxDuration');
		$lastStatus = $statusCmd->execCmd(null,2);
		$positionId = 'position'.$unit;
		$positionCmd = $myhome->getCmd('info', $positionId);
		$lastPosition = $positionCmd->getConfiguration('returnStateValue');
		$lastStatusUpdate = $statusCmd->getConfiguration('updatedate');
		log::add('myhome','debug','[date] =>'.$decrypted_trame["date"].' [cmd] => '.$decrypted_trame["value"].' [timestampCmd] => '.$timestampCmd);
		log::add('myhome','debug','[cmdId] => '.$statusCmd->getId().' [lastStatusUpdate] => '.$lastStatusUpdate.' [lastStatus] => '.$lastStatus.' [lastPosition] => '.$lastPosition.' [maxDuration] => '.$maxDuration);
		
		//Contrôle si update des statuts nécessaire
		if ($decrypted_trame["value"] == 'MOVE_UP'
			|| $decrypted_trame["value"] == 'MOVE_DOWN'
			|| $decrypted_trame["value"] == 'MOVE_STOP') {
			$shutterCmd = $decrypted_trame["value"];
		} 
		else {
			return;
		}

		//gestion des temps ouverture/fermeture en fonction de la date
		if (is_numeric($maxDuration)) {
			$maxMoveTime = $maxDuration;
		} 
		else {
			$maxMoveTime = 30;
		}
		
		//Mise à jour de la position et du statut du volet
		$movementTime = 0;
		$deplacement = 0;
		
		switch ($shutterCmd) {
			case "MOVE_UP" :
				if ($lastStatus == 'UP' || $lastStatus == 'OPEN') {
					log::add('myhome','debug','[cmd] => '.$decrypted_trame["value"].' [lastStatus] => '.$lastStatus.' Mise à jour du statut non nécéssaire!');
					return;
				}
				if ($lastStatus == 'DOWN') {
					$movementTime = $timestampCmd - $lastStatusUpdate;
					$deplacement = round($movementTime * 100 / $maxMoveTime);
				}
				$status = 'UP';
				break;		
			case "MOVE_DOWN" :
				if ($lastStatus == 'DOWN' || $lastStatus == 'CLOSED') {
					log::add('myhome','debug','[cmd] => '.$decrypted_trame["value"].' [lastStatus] => '.$lastStatus.' Mise à jour du statut non nécéssaire!');
					return;
				}
				if ($lastStatus == 'UP') {
					$movementTime = $timestampCmd - $lastStatusUpdate;
					$deplacement = round(-$movementTime * 100 / $maxMoveTime);
				}
				$status = 'DOWN';
				break;
			case "MOVE_STOP":
				if ($lastStatus != 'UP' && $lastStatus != 'DOWN') {
					log::add('myhome','debug','[cmd] => '.$decrypted_trame["value"].' [lastStatus] => '.$lastStatus.' Mise à jour du statut non nécéssaire!');
					return;
				}
				$movementTime = $timestampCmd - $lastStatusUpdate;
				$deplacement = round($movementTime * 100 / $maxMoveTime);
				if ($lastStatus == 'DOWN') {
					$deplacement = -$deplacement;
				}
				break;
			defaut :
				return;
		}
		
		log::add('myhome','debug','[movementTime] => '.$movementTime.' [deplacement] => '.$deplacement.'%'.' [lastPosition] => '.$lastPosition);

		$position = $lastPosition + $deplacement;
		if ($status != 'UP' && $status != 'DOWN') {
      		$status = $position;
			if ($position >= 100) {
				$position = 100;
				$status = 'OPEN';
			}
			if ($position <= 0) {
				$position = 0;
				$status = 'CLOSED';
			}
        }
		log::add('myhome','debug','[cmd] => '.$decrypted_trame["value"].' [lastStatus] => '.$lastStatus.' [newStatus] => '.$status.' [newPosition] => '.$position.' Mise à jour du statut!');
		
		$statusCmd->setConfiguration('updatedate',$timestampCmd);
		$statusCmd->setConfiguration('returnStateValue',$status);
		$statusCmd->setConfiguration('returnStateTime',$movementTime);
		$positionCmd->setConfiguration('updatedate',NULL);
		$positionCmd->setConfiguration('returnStateValue',$position);
		$positionCmd->setConfiguration('returnStateTime',$movementTime);
		$statusCmd->save();
		$positionCmd->save();
		$statusCmd->event($status);
		$positionCmd->event($position);
	}	

ecc
Timide
Messages : 65
Inscription : 09 juil. 2017, 11:59

Re: [Plugin Tiers][Sujet Principal] MyHOME Zigbee legrand

Message par ecc » 21 janv. 2018, 14:14

super, merci pour ton travail

Avatar de l’utilisateur
Seki
Actif
Messages : 746
Inscription : 06 sept. 2017, 21:50

Re: [Plugin Tiers][Sujet Principal] MyHOME Zigbee legrand

Message par Seki » 21 janv. 2018, 18:55

Fichier modifié mis à disposition.

Ce fichier est à mettre dans /plugins/myhome/core/class avec l'outil développeur (plugin Outilsdev). Pensez à faire une sauvegarde du fichier existant et de votre Jeedom, au cas où. Arrêtez aussi le demon du plugin avant la mise à jour. ;)

J'attends vos retours, notamment pour ceux qui utilisent le template inversé car je n'ai pas pu le tester en réel.

Si certains avaient téléchargé le fichier avant la date de parution de ce message, merci de faire une nouvelle mise à jour!

letoc
Timide
Messages : 42
Inscription : 23 oct. 2017, 00:02

Re: [Plugin Tiers][Sujet Principal] MyHOME Zigbee legrand

Message par letoc » 22 janv. 2018, 10:42

Seki a écrit :
21 janv. 2018, 18:55

J'attends vos retours, notamment pour ceux qui utilisent le template inversé car je n'ai pas pu le tester en réel.
Beau boulot Seki ! Chapeau !
J'ai installé ton fichier modifié et j'ai un peu joué avec les volets ce matin. J'utilise les templates inversés.

Les états des volets semblent corrects. Les statuts OPEN et CLOSED sont maintenant cohérents et stables. C'est l'essentiel pour moi !
Je suppose que les nombres s'affichant si je stoppe le volet avant montée ou descente complète correspondent au pourcentage d'ouverture calculé sur le temps total de la manœuvre tel qu'il faut le renseigner dans l'onglet "Commandes" (23 sec pour moi pour le volet de l'exemple ci-dessous), n'est ce pas ?
cmde volet.PNG
cmde volet.PNG (24.07 Kio) Consulté 1462 fois

Avatar de l’utilisateur
Seki
Actif
Messages : 746
Inscription : 06 sept. 2017, 21:50

Re: [Plugin Tiers][Sujet Principal] MyHOME Zigbee legrand

Message par Seki » 22 janv. 2018, 12:03

Oui, c'est bien là qu'il faut renseigner le temps de montée ou descente du volet. ;)
Après, c'est encore mieux si tes interrupteurs gèrent bien les butées, c'est à dire qu'ils émettent un STOP quand le volet arrive en butée, là tu auras un statut cohérent. Chez moi, pas possible de faire fonctionner la gestions de butées, donc il me faut pas loin d'une minute avant que les inter passent sur STOP et d'avoir les statuts OPEN ou CLOSED, alors que les volets sont déjà ouverts ou fermés depuis belle lurette. :lol:

C'est pour ça que je suis entrain de modifier encore un peu Myhome pour pouvoir le rendre compatible avec voletProp.

En tout cas, merci de ton retour. ;)

letoc
Timide
Messages : 42
Inscription : 23 oct. 2017, 00:02

Re: [Plugin Tiers][Sujet Principal] MyHOME Zigbee legrand

Message par letoc » 22 janv. 2018, 13:47

Je ne peux pas non plus faire fonctionner la gestion des butées. Aussi chez moi, les interrupteurs émettent le STOP 3min après l'ordre de montée ou descente. Donc le statut est incohérent durant environ 2 min 30sec lors d'une manœuvre complète (3 min moins le temps de montée / descente).
Dans les modifications sur lesquelles tu travailles, ne peux-tu pas envoyer un STOP au volet environ 10 sec après le temps supposé nécessaire à la dernière commande de montée ou descente ? Cela réduirait ce délai d'incohérence.
Et pour que ce soit parfait pour tout le monde, ce STOP devrait être optionnel (via un code ou un paramètre dans le profil du volet) pour permettre à ceux qui ont paramétré la gestion des butées avec les inter de garder un statut plus fiable basé sur le retour de la commande.

PICTURAL
Timide
Messages : 68
Inscription : 30 juin 2017, 21:33

Re: [Plugin Tiers][Sujet Principal] MyHOME Zigbee legrand

Message par PICTURAL » 22 janv. 2018, 17:13

Bonjour,
Beau travail, je testerais dès que mon système reproduira le pb.
J'ai refais le réseau Zigbee ce WE et, je croise les doigts, ca marche.

Avatar de l’utilisateur
Seki
Actif
Messages : 746
Inscription : 06 sept. 2017, 21:50

Re: [Plugin Tiers][Sujet Principal] MyHOME Zigbee legrand

Message par Seki » 22 janv. 2018, 17:28

letoc a écrit :
22 janv. 2018, 13:47
Je ne peux pas non plus faire fonctionner la gestion des butées. Aussi chez moi, les interrupteurs émettent le STOP 3min après l'ordre de montée ou descente. Donc le statut est incohérent durant environ 2 min 30sec lors d'une manœuvre complète (3 min moins le temps de montée / descente).
Dans les modifications sur lesquelles tu travailles, ne peux-tu pas envoyer un STOP au volet environ 10 sec après le temps supposé nécessaire à la dernière commande de montée ou descente ? Cela réduirait ce délai d'incohérence.
Et pour que ce soit parfait pour tout le monde, ce STOP devrait être optionnel (via un code ou un paramètre dans le profil du volet) pour permettre à ceux qui ont paramétré la gestion des butées avec les inter de garder un statut plus fiable basé sur le retour de la commande.
Pourrais-tu me fournir un log DEBUG de Myhome, je voudrais vérifier une chose, chez moi je reçois toutes les commandes en double.
Ce n'est pas gênant, puisque mon code filtre cela, mais je voudrais vérifier si ce n'est pas du à mes dernières modifs. :)

Pour le STOP je vais regarder ce qui est faisable, mais ça risque de ne pas être très simple. C'est en partie pour ça que j'adapte Myhome afin de pouvoir l'interfacer avec voletProp qui lui c'est gérer le STOP au bon moment.

letoc
Timide
Messages : 42
Inscription : 23 oct. 2017, 00:02

Re: [Plugin Tiers][Sujet Principal] MyHOME Zigbee legrand

Message par letoc » 22 janv. 2018, 20:12

@Seki - Je t'envoie les log DEBUG du jour en MP.
Concernant le STOP, je pensais à un envoi systématique X secondes après détection d'une trame UP ou DOWN en provenance de l'inter du volet.
Le X correspondant à la valeur indiquée pour le temps d'une montée ou descente complète + 10 secondes.
Pour moi, on passerait donc d'un temps d'incohérence de 3 min à au maximum 35 secondes (en considérant un temps d'opération de 25 sec et - par exemple - l'envoi d'un ordre UP alors que le volet est à 99% ouvert - cas plutôt rare ;-) ). Dans la plupart des cas ce serait 10sec d'incohérence ce qui est très acceptable.
Ce pourrait être affiné en considérant la position de départ du volet alors connue avant l'accusé de réception par l'inter du UP ou du DOWN mais allons-y piano pour ne pas refaire un code trop compliqué.
Qu'en penses-tu ?

Avatar de l’utilisateur
Seki
Actif
Messages : 746
Inscription : 06 sept. 2017, 21:50

Re: [Plugin Tiers][Sujet Principal] MyHOME Zigbee legrand

Message par Seki » 22 janv. 2018, 20:45

Merci pour les logs.
Pour le STOP, on a la même vision de la chose. Et j'ai trouvé une possible solution pour réaliser cette fonction sans faire trop de modifications.
Par contre va y avoir un peu de délai pour la réalisation , je vais enchaîner des semaines de 6 jours pendant un mois...

Envoyé de mon GT-I9100 en utilisant Tapatalk


letoc
Timide
Messages : 42
Inscription : 23 oct. 2017, 00:02

Re: [Plugin Tiers][Sujet Principal] MyHOME Zigbee legrand

Message par letoc » 22 janv. 2018, 21:02

OK, bon courage alors et prends ton temps pour que tout ceci reste avant tout le plaisir de bien faire les choses :-)

Allard-elec
Timide
Messages : 75
Inscription : 21 mai 2017, 21:33

Re: [Plugin Tiers][Sujet Principal] MyHOME Zigbee legrand

Message par Allard-elec » 22 janv. 2018, 22:34

Quelles nouveautés cette mises à jours ?

Merci pour vos réponses

Envoyé de mon TREKKER-X3 en utilisant Tapatalk


Avatar de l’utilisateur
Seki
Actif
Messages : 746
Inscription : 06 sept. 2017, 21:50

Re: [Plugin Tiers][Sujet Principal] MyHOME Zigbee legrand

Message par Seki » 23 janv. 2018, 07:21

@allard-elec: ce n'est pas une mise à jour officielle. Nous sommes plusieurs à avoir rencontrer des problèmes au niveau des retours d'état des volets, et en l'absence d'apages, j'ai décidé de modifier le code de gestion des volets pour avoir un fonctionnement correct. J'ai juste mis à disposition de ceux qui le souhaitent le fichier modifié, en espérant que les modifications puissent à terme être intégrées officiellement.

Envoyé de mon GT-I9100 en utilisant Tapatalk


Avatar de l’utilisateur
Seki
Actif
Messages : 746
Inscription : 06 sept. 2017, 21:50

Re: [Plugin Tiers][Sujet Principal] MyHOME Zigbee legrand

Message par Seki » 26 janv. 2018, 16:47

Quelques news. :)

J'ai corrigé un petit bug dans la gestion des volets, au niveau de la position.
Avec mika-nt28, on a également terminé les tests de la version bêta de voletProp, et son plugin va être publié.
Du coup j'ai adapté légèrement la gestion des volets pour qu'il puisse fonctionner avec voletProp.

Désormais, je peux commander mes volets Myhome avec une simple consigne de position. 8-)
Plus qu'une seule commande à gérer dans les scénarios, interactions, plugin volet et plus encore. :lol:

Ça va être top pour la gestion azimut puisqu'il sera possible de ne pas fermer le volet complètement afin d'avoir un peu de lumière.

Il y a une resynchronisation automatique des positions entre les 2 plugins lorsque Myhome renvoie le statut CLOSED.

En gros, maintenant je vais pouvoir piloter mes volets comme ça:
Screenshot_45.png
Screenshot_45.png (11.96 Kio) Consulté 1407 fois
Je mettrais les 2 fichiers modifiés à dispo de ceux que ça intéresse au plus tard Dimanche soir, je bosse ce weekend.

Edit: petite vidéo explicative.

https://youtu.be/OHvfYcXGCgk

letoc
Timide
Messages : 42
Inscription : 23 oct. 2017, 00:02

Re: [Plugin Tiers][Sujet Principal] MyHOME Zigbee legrand

Message par letoc » 26 janv. 2018, 18:22

Ah oui, bien joué ! Cela parait très puissant et simple à utiliser (... à paramétrer aussi ??).
En tout cas, je confirme mon intérêt pour tester tes modifs.

Je comprends ce qu'apporte VoletProp mais pour moi l'essentiel est d'avoir des retours d'états très fiables (pour par exemple simuler une présence en ouvrant les volets alors que je suis en vacances et pour être certain qu'ils sont bien refermés ou ouverts).
Autre besoin lorsque nous sommes présents cette fois = allumer les lumières d'ambiance du salon dès que les volets sont fermés d'où mon intérêt à obtenir dans Jeedom le status CLOSED le plus vite possible en fonction de la position réelle du volet (aujourd'hui j'obtiens ce statut avec un délai de plus de 2min30).
Avec tes dernières modifs, as-tu pu réduire ce délai comme nous en discutions quelques temps auparavant?

En tout cas, encore merci et bravo pour ta contribution à ce plugin.

Avatar de l’utilisateur
Seki
Actif
Messages : 746
Inscription : 06 sept. 2017, 21:50

Re: [Plugin Tiers][Sujet Principal] MyHOME Zigbee legrand

Message par Seki » 26 janv. 2018, 18:48

letoc a écrit :
26 janv. 2018, 18:22
Ah oui, bien joué ! Cela parait très puissant et simple à utiliser (... à paramétrer aussi ??).
En tout cas, je confirme mon intérêt pour tester tes modifs.
C'est très simple à paramétrer. ;)
letoc a écrit :
26 janv. 2018, 18:22
Je comprends ce qu'apporte VoletProp mais pour moi l'essentiel est d'avoir des retours d'états très fiables (pour par exemple simuler une présence en ouvrant les volets alors que je suis en vacances et pour être certain qu'ils sont bien refermés ou ouverts).
Autre besoin lorsque nous sommes présents cette fois = allumer les lumières d'ambiance du salon dès que les volets sont fermés d'où mon intérêt à obtenir dans Jeedom le status CLOSED le plus vite possible en fonction de la position réelle du volet (aujourd'hui j'obtiens ce statut avec un délai de plus de 2min30).
Avec tes dernières modifs, as-tu pu réduire ce délai comme nous en discutions quelques temps auparavant?
Je travaille dessus en ce moment même. :D
letoc a écrit :
26 janv. 2018, 18:22
En tout cas, encore merci et bravo pour ta contribution à ce plugin.
Merci, mais je ne fais que rendre à la communauté Jeedom ce qu'elle me donne. :)

letoc
Timide
Messages : 42
Inscription : 23 oct. 2017, 00:02

Re: [Plugin Tiers][Sujet Principal] MyHOME Zigbee legrand

Message par letoc » 02 févr. 2018, 12:27

Bonjour Seki,

Je reviens sur ta proposition de test de tes dernières modifications. Peux-tu les partager maintenant que nous testions ce weekend? :-)
J'ai installé "voletprop" mais je comprends que tes modifications faciliteront le paramétrage des 3 états (mouvement, stop, fin de course).
Merci par avance

Avatar de l’utilisateur
Seki
Actif
Messages : 746
Inscription : 06 sept. 2017, 21:50

Re: [Plugin Tiers][Sujet Principal] MyHOME Zigbee legrand

Message par Seki » 02 févr. 2018, 12:34

letoc a écrit :
26 janv. 2018, 18:22
Autre besoin lorsque nous sommes présents cette fois = allumer les lumières d'ambiance du salon dès que les volets sont fermés d'où mon intérêt à obtenir dans Jeedom le status CLOSED le plus vite possible en fonction de la position réelle du volet (aujourd'hui j'obtiens ce statut avec un délai de plus de 2min30).
Avec tes dernières modifs, as-tu pu réduire ce délai comme nous en discutions quelques temps auparavant?
Ça y est, fonction implémentée. :D
Le plugin envoie automatiquement un STOP une fois le volet ouvert ou fermé, le tout est basé sur le temps renseigné dans les commandes du plugin. J'ai torturé le truc dans tout les sens en faisant des ouvertures ou fermetures non complètes ou enchaînées, puis en laissant le volet se fermer ou s'ouvrir complètement. Le STOP a toujours été envoyé une fois le volet complètement ouvert ou complètement fermé. 8-)

Du coup, les statuts OPEN ou CLOSED sont mis à jour dès la fermeture ou ouverture complète du volet.

Je fais un peu de mise à jour de commentaires et de logs puis je mets à disposition le fichier (certainement demain).

Je n'ai pour l'instant pas prévu de désactivation pour cette fonction.

Edit: les grands esprits se rencontrent Letoc. :D

PICTURAL
Timide
Messages : 68
Inscription : 30 juin 2017, 21:33

Re: [Plugin Tiers][Sujet Principal] MyHOME Zigbee legrand

Message par PICTURAL » 02 févr. 2018, 13:52

Bonjour Seki,
Tout cela à l'air fort séduisant, je suis partant aussi pour tester !!
Merci d'avance

letoc
Timide
Messages : 42
Inscription : 23 oct. 2017, 00:02

Re: [Plugin Tiers][Sujet Principal] MyHOME Zigbee legrand

Message par letoc » 02 févr. 2018, 14:54

Bonne nouvelle, super ! Et bravo pour la vitesse de développement car j'ai souvenir que tu as aussi des semaines chargées actuellement.

Sur la base de nos précédents échanges, je suppose que le STOP est envoyé aussi bien si la manœuvre est commandée depuis Jeedom ou l'interrupteur n'est-ce pas ?
Tu nous diras aussi comment marier Myhome avec "Volet prop"

Je suis impatient de tester, merci encore :-)

Quant aux grands esprits, je n'en vois qu'un, celui du développeur ;-)

Répondre

Revenir vers « [Catégorie] Protocoles domotiques »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 29 invités