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] Volets Proportionnel

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

Re: [Plugin Tiers][Sujet Principal] Volets Proportionnel

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

Oui il y a un traitement. Les inters de volet Myhome émettent ou reçoivent trois commandes (montée / descente / stop) mais ils ne génèrent pas de retour d'état. C'est le plugin Myhome qui les génèrent en faisant une combinaison des commandes reçues, des états antérieurs des volets et d'une position virtuelle basée sur la mesure du temps de montée ou descente (un peu comme tu fais avec voletProp). Sauf que ce système ne fonctionne pas toujours bien.

Il faut aussi savoir que l'interrupteur envoie une commande STOP sur le réseau lorsque le volet arrive en butée ou après un timeout (>30 secondes) si la gestion des butées n'est pas active. C'est la réception de cette commande STOP qui va générer les états OPEN ou CLOSE si le temps de déplacement du volet a été suffisamment long.

Par contre, la gestion du temps de déplacement du volet me semble bien compliquée par rapport à ce que tu as fait dans voletProp et par rapport à ce que j'ai l'habitude de faire au boulot sur des installations automatisées.

Je te joins le bout de code qui gère les états des volets.

Pour voletProp, si j'ai bien compris, tu attends des états binaires?

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,
				"format" => 'string',
				"type" => 'string',
				"value" => string,
				"dimension" => string,
				"param" => string,
				"id" => string,
				"unit" => string,)
		$scenarios => boolean (true si l'on doit recherche des scenarios associés)
		*/
		
		$def = new myhome_def();
		
		//Creation des variables utiles
		$myhome = myhome::byLogicalId($decrypted_trame["id"], 'myhome');
		$unit = $decrypted_trame["unit"];
		$device_type = explode('::', $myhome->getConfiguration('device'));
		$sousdevice = $device_type[1];
		//On recupere la date de l'action et on ajoute le temps du relais interne
		$date = strtotime($decrypted_trame["date"]);
		//recuperation du derniere etat connu ET des possibilites
		$statusid = 'status'.$unit;
		$myhomecmd = $myhome->getCmd('info', $statusid);
		$duree_cmd	= $myhomecmd->getConfiguration('DureeCmd');
		$last_status = $myhomecmd->execCmd(null,2);
		$statusidnum = 'statusnum'.$unit;
		$myhomecmdnum = $myhome->getCmd('info', $statusidnum);
		$updatedate=$myhomecmd->getConfiguration('updatedate');
		log::add('myhome','debug',' last : '.$last_status.' Sous_device : '.$sousdevice. ' duréecmd : '.$duree_cmd.' id cmd : '.$myhomecmd->getId() . " date : ".$date);
		//on test s'il faut faire un update des statuts
		if ($decrypted_trame["value"] == 'MOVE_UP'
				|| $decrypted_trame["value"] == 'MOVE_DOWN'
				|| $decrypted_trame["value"] == 'MOVE_STOP') {
			$value = $decrypted_trame["value"];
			//Il ne s'agit pas d'une mise à jour
		} 
		else {
			return;
		}

		//gestion des temps ouverture/fermeture en fonction de la date
			if (is_numeric($duree_cmd)) {
				$move_time = $duree_cmd;
			} 
			else {
				$move_time = 30;
			}
			//mise a jour en fonction du mouvement demande
			log::add('myhome','debug',' sousdevice : '.$sousdevice.' statusid : '.$statusid.' statusidnum : '.$statusidnum . " updatedate : ".$updatedate);
			
			if ($sousdevice =='00') {
			//Si il s'agit d'un bouton normal
				log::add('myhome', 'debug', " Bouton normal \n");
				if ($value == 'MOVE_UP') {
					log::add('myhome', 'debug', "Action MOVE_UP");
					//Si le volet est en train de monter
					if ($last_status == 'UP') {
						$status = 'UP';
						$new_pos= ($move_time - ($updatedate - $date))/$move_time*100;
						$statusnum = round($new_pos);
						if ($new_pos >= 100) {
								$status = 'OPEN';
								$statusnum = 100;
								$myhomecmd->setConfiguration('updatedate',NULL);
								$myhomecmd->setConfiguration('returnStateValue',NULL);
								$myhomecmd->setConfiguration('returnStateTime',NULL);
								$myhomecmdnum->setConfiguration('updatedate',NULL);
								$myhomecmdnum->setConfiguration('returnStateValue',NULL);
								$myhomecmdnum->setConfiguration('returnStateTime',NULL);
						}
					//Si le volet est deja en haut
					} 
					elseif ($last_status == '100' || $last_status == 'OPEN') {
						$status = 'OPEN';
						$statusnum = 100;
					//Si le volet change de sens
					} 
					elseif ($last_status == 'DOWN') {
						$status = 'UP';
						$new_pos = ($move_time - ($updatedate - $date))/$move_time*100;
						$statusnum = round(100-$new_pos);
						if ((100-$new_pos) <= 0) {
								$statusnum = 0;
								$myhomecmd->setConfiguration('updatedate',NULL);
								$myhomecmd->setConfiguration('returnStateValue',NULL);
								$myhomecmd->setConfiguration('returnStateTime',NULL);
								$myhomecmdnum->setConfiguration('updatedate',NULL);
								$myhomecmdnum->setConfiguration('returnStateValue',NULL);
								$myhomecmdnum->setConfiguration('returnStateTime',NULL);
						}
						$sec=date("s");
						if ($updatedate<$date)
						{
							$myhomecmd->setConfiguration('updatedate',NULL);
							$myhomecmdnum->setConfiguration('updatedate',NULL);
							$myhomecmd->save();
							$myhomecmdnum->save();
							$updatedate=0;
						}
						$move_time = round($new_pos/100*$move_time);
						$move_time_quotient = floor($move_time/60);
						log::add('myhome', 'debug', " Move time : ".$move_time);
						$myhomecmd->setConfiguration('updatedate',$date+$move_time);
						$myhomecmd->setConfiguration('returnStateValue','OPEN');
						$myhomecmdnum->setConfiguration('updatedate',$date+$move_time);
						$myhomecmdnum->setConfiguration('returnStateValue',100);
						$nextupdate= 1+$move_time_quotient;
						$myhomecmd->setConfiguration('returnStateTime',$nextupdate);
						$myhomecmdnum->setConfiguration('returnStateTime',$nextupdate);
						
						//Si le volet est en position intermediaire ou completement ferme
					} 
					elseif (is_numeric($last_status) || $last_status == 'CLOSED') {
						if ($last_status == 'CLOSED') {
							$last_status = 0;
						}
						$status = 'UP';
						$statusnum = $last_status;
						$sec=date("s");
						log::add('myhome', 'debug', "Point ".$status);
						$move_time = $move_time - ($last_status/100*$move_time);
						$move_time_quotient = floor($move_time/60);
						log::add('myhome', 'debug', " Move time : ".$move_time);
						$myhomecmd->setConfiguration('updatedate',$date+$move_time);
						$myhomecmd->setConfiguration('returnStateValue','OPEN');
						$myhomecmdnum->setConfiguration('updatedate',$date+$move_time);
						$myhomecmdnum->setConfiguration('returnStateValue',100);
						$nextupdate= 1+$move_time_quotient;
						$myhomecmd->setConfiguration('returnStateTime',$nextupdate);
						$myhomecmdnum->setConfiguration('returnStateTime',$nextupdate);
					} 
					else {
						$status = 'OPEN';
						$statusnum = 100;
					}
				} 
				elseif ($value == 'MOVE_DOWN') {
					log::add('myhome', 'debug', "Action move_DOWN");
					//Si le volet est en train de descendre
					if ($last_status == 'DOWN') {
						$status = 'DOWN';
						$new_pos= ($move_time - ($updatedate - $date))/$move_time*100;
						$statusnum = round(100-$new_pos);
						if ((100-$new_pos) <= 0) {
								$status = 'CLOSED';
								$statusnum = 0;
								$myhomecmd->setConfiguration('updatedate',NULL);
								$myhomecmd->setConfiguration('returnStateValue',NULL);
								$myhomecmd->setConfiguration('returnStateTime',NULL);
								$myhomecmdnum->setConfiguration('updatedate',NULL);
								$myhomecmdnum->setConfiguration('returnStateValue',NULL);
								$myhomecmdnum->setConfiguration('returnStateTime',NULL);
						}
						//Si le volet est deja en bas
					} 
					elseif ($last_status == '0' || $last_status == 'CLOSED') {
						$status = 'CLOSED';
						$statusnum = 0;
						//Si le volet change de sens
					} 
					elseif ($last_status == 'UP') {
						$status = 'DOWN';
						$new_pos = ($move_time - ($updatedate - $date))/$move_time*100;
						$statusnum = round($new_pos);
						if (($new_pos) >= 100) {
								$statusnum = 100;
								$myhomecmd->setConfiguration('updatedate',NULL);
								$myhomecmd->setConfiguration('returnStateValue',NULL);
								$myhomecmd->setConfiguration('returnStateTime',NULL);
								$myhomecmdnum->setConfiguration('updatedate',NULL);
								$myhomecmdnum->setConfiguration('returnStateValue',NULL);
								$myhomecmdnum->setConfiguration('returnStateTime',NULL);
						}
						$sec=date("s");
						$updatedate=$myhomecmd->getConfiguration('updatedate');
						if ($updatedate<$date)
						{
							$myhomecmd->setConfiguration('updatedate',NULL);
							$myhomecmdnum->setConfiguration('updatedate',NULL);
							$myhomecmd->save();
							$myhomecmdnum->save();
							$updatedate=0;
						}
						$move_time = round($new_pos/100*$move_time);
						log::add('myhome', 'debug', " Move time : ".$move_time." New_pos : ".$new_pos);
						$move_time_quotient = floor($move_time/60);
						log::add('myhome', 'debug', " Move time : ".$move_time);						
						$myhomecmd->setConfiguration('updatedate',$date+$move_time);
						$myhomecmd->setConfiguration('returnStateValue','CLOSED');
						$myhomecmdnum->setConfiguration('updatedate',$date+$move_time);
						$myhomecmdnum->setConfiguration('returnStateValue',0);
						$nextupdate= 1+$move_time_quotient;
						$myhomecmd->setConfiguration('returnStateTime',$nextupdate);
						$myhomecmdnum->setConfiguration('returnStateTime',$nextupdate);
						log::add('myhome', 'debug', " Move time : ".$move_time);
						
						//Si le volet est arrete en position intermediaire ou completement ouvert
					} 
					elseif (is_numeric($last_status) || $last_status == 'OPEN') {
						if ($last_status == 'OPEN') {
							$last_status = 100;
						}
						$status = 'DOWN';
						$statusnum = $last_status;
						$sec=date("s");
						log::add('myhome', 'debug', "Point ".$status."sec : ".$sec."movetime : ".$move_time);
						$move_time = ($last_status/100*$move_time);
						$move_time_quotient = floor($move_time/60);
						log::add('myhome', 'debug', " Move time : ".$move_time);
						$myhomecmd->setConfiguration('updatedate',$date+$move_time);
						$myhomecmd->setConfiguration('returnStateValue','CLOSED');
						$myhomecmdnum->setConfiguration('updatedate',$date+$move_time);
						$myhomecmdnum->setConfiguration('returnStateValue',0);
						$nextupdate= 1+$move_time_quotient;
						$myhomecmd->setConfiguration('returnStateTime',$nextupdate);
						$myhomecmdnum->setConfiguration('returnStateTime',$nextupdate);
						log::add('myhome', 'debug', " Move time : ".$move_time);
					} 
					else {
						$status = 'CLOSED';
						$statusnum = 0;
					}
				} 
				elseif ($value == 'MOVE_STOP') {
					log::add('myhome', 'debug', "Action move_STOP");
					//Par defaut on dit que le volet est arrete et donc à son ancienne position
					$status = $last_status;
					log::add('myhome', 'debug', " debug Ikes $last_status : ".$last_status);
					$updatedate=$myhomecmd->getConfiguration('updatedate');
					//Si le volet est deja en mouvement
					//if (!is_numeric($last_status) && isset($updatedate)) {
					if (($last_status == 'UP' || $last_status == 'DOWN') && isset($updatedate)) {
						$new_pos = ($move_time - ($updatedate - $date))/$move_time*100;
						log::add('myhome', 'debug', " updatedate : ".$updatedate." Newpos : ".$new_pos);
						if ($last_status == 'UP') {
							log::add('myhome', 'debug', " debug Ikes status UP");
							$status = round($new_pos);
							$statusnum = round($new_pos);
							log::add('myhome', 'debug', "last_status : Up, status : ".$status);
							$myhomecmd->setConfiguration('returnStateValue',$status);
							$myhomecmd->setConfiguration('returnStateTime',1);
							$myhomecmdnum->setConfiguration('returnStateValue',$statusnum);
							$myhomecmdnum->setConfiguration('returnStateTime',1);
						} 
						elseif ($last_status == 'DOWN') {
							log::add('myhome', 'debug', " debug Ikes status DOWN");
							$status = round(100 - $new_pos);
							$statusnum = round(100 - $new_pos);
							log::add('myhome', 'debug', "last_status : Down, status : ".$status);
							$myhomecmd->setConfiguration('returnStateValue',$status);
							$myhomecmd->setConfiguration('returnStateTime',1);
							$myhomecmdnum->setConfiguration('returnStateValue',$statusnum);
							$myhomecmdnum->setConfiguration('returnStateTime',1);
						}
						if ($status <= 0 || $last_status == 'CLOSED') {
							log::add('myhome', 'debug', " debug Ikes status CLOSED");
							$status = 'CLOSED';
							$statusnum = 0;
							$myhomecmd->setConfiguration('updatedate',NULL);
							$myhomecmd->setConfiguration('returnStateValue',NULL);
							$myhomecmd->setConfiguration('returnStateTime',NULL);
							$myhomecmdnum->setConfiguration('updatedate',NULL);
							$myhomecmdnum->setConfiguration('returnStateValue',NULL);
							$myhomecmdnum->setConfiguration('returnStateTime',NULL);
						} 
						elseif ($status >= 100 || $last_status == 'OPEN') {
							log::add('myhome', 'debug', " debug Ikes status OPEN");
							$status = 'OPEN';
							$statusnum = 100;
							$myhomecmd->setConfiguration('updatedate',NULL);
							$myhomecmd->setConfiguration('returnStateValue',NULL);
							$myhomecmd->setConfiguration('returnStateTime',NULL);
							$myhomecmdnum->setConfiguration('updatedate',NULL);
							$myhomecmdnum->setConfiguration('returnStateValue',NULL);
							$myhomecmdnum->setConfiguration('returnStateTime',NULL);
						}
					} 
					else {
						$status = 'OPEN';
						$statusnum = 100;
					}
				}
				$myhomecmd->save();
				$myhomecmdnum->save();
			}		

Avatar de l’utilisateur
mika-nt28
Actif
Messages : 7995
Inscription : 05 août 2014, 08:58
Localisation : Dreux - France

Re: [Plugin Tiers][Sujet Principal] Volets Proportionnel

Message par mika-nt28 » 19 janv. 2018, 08:19

guy4154 a écrit :
18 janv. 2018, 16:21
suite test

les infos dans le log sont issues uniquement quand j'agis sur le "bouton position" du dashbord
les fleches up down n'ont aucun effet essai sur 3 volets
je viens d'essayer avec une prise commandée , la logique voudrait que une commande"1" soit envoyée pour "on et "0" pour "off" par voletprop
sur la prise (pas de changement d'etat dans le dash ni en reel
ci joint log test sur volet
log voletprop.jpg
Il n'y a pas de log pour l'execution des commandes c'est pour ca que tu ne vois pas
La logique du on et du off fait partie du plugin qui controle tes actionneurs.
Quel plugin utilise tu en source et comment a tu configurer le plugin voletProp
Seki a écrit :
18 janv. 2018, 21:38
Oui il y a un traitement. Les inters de volet Myhome émettent ou reçoivent trois commandes (montée / descente / stop) mais ils ne génèrent pas de retour d'état. C'est le plugin Myhome qui les génèrent en faisant une combinaison des commandes reçues, des états antérieurs des volets et d'une position virtuelle basée sur la mesure du temps de montée ou descente (un peu comme tu fais avec voletProp). Sauf que ce système ne fonctionne pas toujours bien.

Il faut aussi savoir que l'interrupteur envoie une commande STOP sur le réseau lorsque le volet arrive en butée ou après un timeout (>30 secondes) si la gestion des butées n'est pas active. C'est la réception de cette commande STOP qui va générer les états OPEN ou CLOSE si le temps de déplacement du volet a été suffisamment long.

Par contre, la gestion du temps de déplacement du volet me semble bien compliquée par rapport à ce que tu as fait dans voletProp et par rapport à ce que j'ai l'habitude de faire au boulot sur des installations automatisées.

Je te joins le bout de code qui gère les états des volets.

Pour voletProp, si j'ai bien compris, tu attends des états binaires?

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,
				"format" => 'string',
				"type" => 'string',
				"value" => string,
				"dimension" => string,
				"param" => string,
				"id" => string,
				"unit" => string,)
		$scenarios => boolean (true si l'on doit recherche des scenarios associés)
		*/
		
		$def = new myhome_def();
		
		//Creation des variables utiles
		$myhome = myhome::byLogicalId($decrypted_trame["id"], 'myhome');
		$unit = $decrypted_trame["unit"];
		$device_type = explode('::', $myhome->getConfiguration('device'));
		$sousdevice = $device_type[1];
		//On recupere la date de l'action et on ajoute le temps du relais interne
		$date = strtotime($decrypted_trame["date"]);
		//recuperation du derniere etat connu ET des possibilites
		$statusid = 'status'.$unit;
		$myhomecmd = $myhome->getCmd('info', $statusid);
		$duree_cmd	= $myhomecmd->getConfiguration('DureeCmd');
		$last_status = $myhomecmd->execCmd(null,2);
		$statusidnum = 'statusnum'.$unit;
		$myhomecmdnum = $myhome->getCmd('info', $statusidnum);
		$updatedate=$myhomecmd->getConfiguration('updatedate');
		log::add('myhome','debug',' last : '.$last_status.' Sous_device : '.$sousdevice. ' duréecmd : '.$duree_cmd.' id cmd : '.$myhomecmd->getId() . " date : ".$date);
		//on test s'il faut faire un update des statuts
		if ($decrypted_trame["value"] == 'MOVE_UP'
				|| $decrypted_trame["value"] == 'MOVE_DOWN'
				|| $decrypted_trame["value"] == 'MOVE_STOP') {
			$value = $decrypted_trame["value"];
			//Il ne s'agit pas d'une mise à jour
		} 
		else {
			return;
		}

		//gestion des temps ouverture/fermeture en fonction de la date
			if (is_numeric($duree_cmd)) {
				$move_time = $duree_cmd;
			} 
			else {
				$move_time = 30;
			}
			//mise a jour en fonction du mouvement demande
			log::add('myhome','debug',' sousdevice : '.$sousdevice.' statusid : '.$statusid.' statusidnum : '.$statusidnum . " updatedate : ".$updatedate);
			
			if ($sousdevice =='00') {
			//Si il s'agit d'un bouton normal
				log::add('myhome', 'debug', " Bouton normal \n");
				if ($value == 'MOVE_UP') {
					log::add('myhome', 'debug', "Action MOVE_UP");
					//Si le volet est en train de monter
					if ($last_status == 'UP') {
						$status = 'UP';
						$new_pos= ($move_time - ($updatedate - $date))/$move_time*100;
						$statusnum = round($new_pos);
						if ($new_pos >= 100) {
								$status = 'OPEN';
								$statusnum = 100;
								$myhomecmd->setConfiguration('updatedate',NULL);
								$myhomecmd->setConfiguration('returnStateValue',NULL);
								$myhomecmd->setConfiguration('returnStateTime',NULL);
								$myhomecmdnum->setConfiguration('updatedate',NULL);
								$myhomecmdnum->setConfiguration('returnStateValue',NULL);
								$myhomecmdnum->setConfiguration('returnStateTime',NULL);
						}
					//Si le volet est deja en haut
					} 
					elseif ($last_status == '100' || $last_status == 'OPEN') {
						$status = 'OPEN';
						$statusnum = 100;
					//Si le volet change de sens
					} 
					elseif ($last_status == 'DOWN') {
						$status = 'UP';
						$new_pos = ($move_time - ($updatedate - $date))/$move_time*100;
						$statusnum = round(100-$new_pos);
						if ((100-$new_pos) <= 0) {
								$statusnum = 0;
								$myhomecmd->setConfiguration('updatedate',NULL);
								$myhomecmd->setConfiguration('returnStateValue',NULL);
								$myhomecmd->setConfiguration('returnStateTime',NULL);
								$myhomecmdnum->setConfiguration('updatedate',NULL);
								$myhomecmdnum->setConfiguration('returnStateValue',NULL);
								$myhomecmdnum->setConfiguration('returnStateTime',NULL);
						}
						$sec=date("s");
						if ($updatedate<$date)
						{
							$myhomecmd->setConfiguration('updatedate',NULL);
							$myhomecmdnum->setConfiguration('updatedate',NULL);
							$myhomecmd->save();
							$myhomecmdnum->save();
							$updatedate=0;
						}
						$move_time = round($new_pos/100*$move_time);
						$move_time_quotient = floor($move_time/60);
						log::add('myhome', 'debug', " Move time : ".$move_time);
						$myhomecmd->setConfiguration('updatedate',$date+$move_time);
						$myhomecmd->setConfiguration('returnStateValue','OPEN');
						$myhomecmdnum->setConfiguration('updatedate',$date+$move_time);
						$myhomecmdnum->setConfiguration('returnStateValue',100);
						$nextupdate= 1+$move_time_quotient;
						$myhomecmd->setConfiguration('returnStateTime',$nextupdate);
						$myhomecmdnum->setConfiguration('returnStateTime',$nextupdate);
						
						//Si le volet est en position intermediaire ou completement ferme
					} 
					elseif (is_numeric($last_status) || $last_status == 'CLOSED') {
						if ($last_status == 'CLOSED') {
							$last_status = 0;
						}
						$status = 'UP';
						$statusnum = $last_status;
						$sec=date("s");
						log::add('myhome', 'debug', "Point ".$status);
						$move_time = $move_time - ($last_status/100*$move_time);
						$move_time_quotient = floor($move_time/60);
						log::add('myhome', 'debug', " Move time : ".$move_time);
						$myhomecmd->setConfiguration('updatedate',$date+$move_time);
						$myhomecmd->setConfiguration('returnStateValue','OPEN');
						$myhomecmdnum->setConfiguration('updatedate',$date+$move_time);
						$myhomecmdnum->setConfiguration('returnStateValue',100);
						$nextupdate= 1+$move_time_quotient;
						$myhomecmd->setConfiguration('returnStateTime',$nextupdate);
						$myhomecmdnum->setConfiguration('returnStateTime',$nextupdate);
					} 
					else {
						$status = 'OPEN';
						$statusnum = 100;
					}
				} 
				elseif ($value == 'MOVE_DOWN') {
					log::add('myhome', 'debug', "Action move_DOWN");
					//Si le volet est en train de descendre
					if ($last_status == 'DOWN') {
						$status = 'DOWN';
						$new_pos= ($move_time - ($updatedate - $date))/$move_time*100;
						$statusnum = round(100-$new_pos);
						if ((100-$new_pos) <= 0) {
								$status = 'CLOSED';
								$statusnum = 0;
								$myhomecmd->setConfiguration('updatedate',NULL);
								$myhomecmd->setConfiguration('returnStateValue',NULL);
								$myhomecmd->setConfiguration('returnStateTime',NULL);
								$myhomecmdnum->setConfiguration('updatedate',NULL);
								$myhomecmdnum->setConfiguration('returnStateValue',NULL);
								$myhomecmdnum->setConfiguration('returnStateTime',NULL);
						}
						//Si le volet est deja en bas
					} 
					elseif ($last_status == '0' || $last_status == 'CLOSED') {
						$status = 'CLOSED';
						$statusnum = 0;
						//Si le volet change de sens
					} 
					elseif ($last_status == 'UP') {
						$status = 'DOWN';
						$new_pos = ($move_time - ($updatedate - $date))/$move_time*100;
						$statusnum = round($new_pos);
						if (($new_pos) >= 100) {
								$statusnum = 100;
								$myhomecmd->setConfiguration('updatedate',NULL);
								$myhomecmd->setConfiguration('returnStateValue',NULL);
								$myhomecmd->setConfiguration('returnStateTime',NULL);
								$myhomecmdnum->setConfiguration('updatedate',NULL);
								$myhomecmdnum->setConfiguration('returnStateValue',NULL);
								$myhomecmdnum->setConfiguration('returnStateTime',NULL);
						}
						$sec=date("s");
						$updatedate=$myhomecmd->getConfiguration('updatedate');
						if ($updatedate<$date)
						{
							$myhomecmd->setConfiguration('updatedate',NULL);
							$myhomecmdnum->setConfiguration('updatedate',NULL);
							$myhomecmd->save();
							$myhomecmdnum->save();
							$updatedate=0;
						}
						$move_time = round($new_pos/100*$move_time);
						log::add('myhome', 'debug', " Move time : ".$move_time." New_pos : ".$new_pos);
						$move_time_quotient = floor($move_time/60);
						log::add('myhome', 'debug', " Move time : ".$move_time);						
						$myhomecmd->setConfiguration('updatedate',$date+$move_time);
						$myhomecmd->setConfiguration('returnStateValue','CLOSED');
						$myhomecmdnum->setConfiguration('updatedate',$date+$move_time);
						$myhomecmdnum->setConfiguration('returnStateValue',0);
						$nextupdate= 1+$move_time_quotient;
						$myhomecmd->setConfiguration('returnStateTime',$nextupdate);
						$myhomecmdnum->setConfiguration('returnStateTime',$nextupdate);
						log::add('myhome', 'debug', " Move time : ".$move_time);
						
						//Si le volet est arrete en position intermediaire ou completement ouvert
					} 
					elseif (is_numeric($last_status) || $last_status == 'OPEN') {
						if ($last_status == 'OPEN') {
							$last_status = 100;
						}
						$status = 'DOWN';
						$statusnum = $last_status;
						$sec=date("s");
						log::add('myhome', 'debug', "Point ".$status."sec : ".$sec."movetime : ".$move_time);
						$move_time = ($last_status/100*$move_time);
						$move_time_quotient = floor($move_time/60);
						log::add('myhome', 'debug', " Move time : ".$move_time);
						$myhomecmd->setConfiguration('updatedate',$date+$move_time);
						$myhomecmd->setConfiguration('returnStateValue','CLOSED');
						$myhomecmdnum->setConfiguration('updatedate',$date+$move_time);
						$myhomecmdnum->setConfiguration('returnStateValue',0);
						$nextupdate= 1+$move_time_quotient;
						$myhomecmd->setConfiguration('returnStateTime',$nextupdate);
						$myhomecmdnum->setConfiguration('returnStateTime',$nextupdate);
						log::add('myhome', 'debug', " Move time : ".$move_time);
					} 
					else {
						$status = 'CLOSED';
						$statusnum = 0;
					}
				} 
				elseif ($value == 'MOVE_STOP') {
					log::add('myhome', 'debug', "Action move_STOP");
					//Par defaut on dit que le volet est arrete et donc à son ancienne position
					$status = $last_status;
					log::add('myhome', 'debug', " debug Ikes $last_status : ".$last_status);
					$updatedate=$myhomecmd->getConfiguration('updatedate');
					//Si le volet est deja en mouvement
					//if (!is_numeric($last_status) && isset($updatedate)) {
					if (($last_status == 'UP' || $last_status == 'DOWN') && isset($updatedate)) {
						$new_pos = ($move_time - ($updatedate - $date))/$move_time*100;
						log::add('myhome', 'debug', " updatedate : ".$updatedate." Newpos : ".$new_pos);
						if ($last_status == 'UP') {
							log::add('myhome', 'debug', " debug Ikes status UP");
							$status = round($new_pos);
							$statusnum = round($new_pos);
							log::add('myhome', 'debug', "last_status : Up, status : ".$status);
							$myhomecmd->setConfiguration('returnStateValue',$status);
							$myhomecmd->setConfiguration('returnStateTime',1);
							$myhomecmdnum->setConfiguration('returnStateValue',$statusnum);
							$myhomecmdnum->setConfiguration('returnStateTime',1);
						} 
						elseif ($last_status == 'DOWN') {
							log::add('myhome', 'debug', " debug Ikes status DOWN");
							$status = round(100 - $new_pos);
							$statusnum = round(100 - $new_pos);
							log::add('myhome', 'debug', "last_status : Down, status : ".$status);
							$myhomecmd->setConfiguration('returnStateValue',$status);
							$myhomecmd->setConfiguration('returnStateTime',1);
							$myhomecmdnum->setConfiguration('returnStateValue',$statusnum);
							$myhomecmdnum->setConfiguration('returnStateTime',1);
						}
						if ($status <= 0 || $last_status == 'CLOSED') {
							log::add('myhome', 'debug', " debug Ikes status CLOSED");
							$status = 'CLOSED';
							$statusnum = 0;
							$myhomecmd->setConfiguration('updatedate',NULL);
							$myhomecmd->setConfiguration('returnStateValue',NULL);
							$myhomecmd->setConfiguration('returnStateTime',NULL);
							$myhomecmdnum->setConfiguration('updatedate',NULL);
							$myhomecmdnum->setConfiguration('returnStateValue',NULL);
							$myhomecmdnum->setConfiguration('returnStateTime',NULL);
						} 
						elseif ($status >= 100 || $last_status == 'OPEN') {
							log::add('myhome', 'debug', " debug Ikes status OPEN");
							$status = 'OPEN';
							$statusnum = 100;
							$myhomecmd->setConfiguration('updatedate',NULL);
							$myhomecmd->setConfiguration('returnStateValue',NULL);
							$myhomecmd->setConfiguration('returnStateTime',NULL);
							$myhomecmdnum->setConfiguration('updatedate',NULL);
							$myhomecmdnum->setConfiguration('returnStateValue',NULL);
							$myhomecmdnum->setConfiguration('returnStateTime',NULL);
						}
					} 
					else {
						$status = 'OPEN';
						$statusnum = 100;
					}
				}
				$myhomecmd->save();
				$myhomecmdnum->save();
			}		
Ca a l'air un gros sac de neud tous ca et certainement pas un standard.
J'ai vue sur le market un plugin officiel myHome (avec un sds), c'est la meme chose?
Si oui je te conseil vivement de l'essayé car j'ai bien peur qu'avec ce que tu a la soit compliqué.

Je regarderai plus en detail la fonction que tu m'a transmise et j'essayera de te proposé quelque chose de plus standard
Pour faciliter la compréhension de votre problème, n’oubliez pas de poster
- Des Screenshots de votre configuration
- Le Log au moment du problème constaté

Encouragez-moi https://www.paypal.me/mikant28

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

Re: [Plugin Tiers][Sujet Principal] Volets Proportionnel

Message par Seki » 19 janv. 2018, 08:49

Il y a une doc quelque part qui explique les états standards que doivent retourner les plugins ?

Envoyé de mon GT-I9100 en utilisant Tapatalk


Avatar de l’utilisateur
mika-nt28
Actif
Messages : 7995
Inscription : 05 août 2014, 08:58
Localisation : Dreux - France

Re: [Plugin Tiers][Sujet Principal] Volets Proportionnel

Message par mika-nt28 » 19 janv. 2018, 09:01

Non pas du tout en fait chaque développeur fait comme bon luis semble et c'est bien dommage.
Pour un plugin de protocole je pense qu'il doit corresponde a un standard de domotique pour que la logique entre tous les protocole soit logique.
Personelement je regarde les widget pour savoir comment l'etat est gerer et me collé a se standard.

Pour les volet le standard du KNX c'est
Un retour d'etat pour le mouvement (0 pour la descente et 1 pour la monté)
Un retour d'etat pour le stop

J'aimerai bien savoir se qu'utilise @guy4154 pour ses volets et comment sont gerer ses etats
Pour faciliter la compréhension de votre problème, n’oubliez pas de poster
- Des Screenshots de votre configuration
- Le Log au moment du problème constaté

Encouragez-moi https://www.paypal.me/mikant28

guy4154
Timide
Messages : 181
Inscription : 31 mars 2016, 10:25
Localisation : vendome

Re: [Plugin Tiers][Sujet Principal] Volets Proportionnel

Message par guy4154 » 19 janv. 2018, 09:16

rebonjour,
mes volet sont géré par des chacon D-I/O sans retour d'état ,j'ai commandé des contacts d'ouverture (xiaomi) dont je collerais l'aimant sur le volet pour avoir un retour d'etat
comme je le disais dans mon post précedent,les commandes fonctionne après la mise à jour mais sont inversées

guy4154
Timide
Messages : 181
Inscription : 31 mars 2016, 10:25
Localisation : vendome

Re: [Plugin Tiers][Sujet Principal] Volets Proportionnel

Message par guy4154 » 19 janv. 2018, 09:20

suite..
mon post précedent ne semble pas être passé
je rajoute,n'ayant pas de retour détat,j'ai créé une retour d'état virtuel sous rfxcom pour test dont je change l'état sur le dashboard pour simuler

Avatar de l’utilisateur
mika-nt28
Actif
Messages : 7995
Inscription : 05 août 2014, 08:58
Localisation : Dreux - France

Re: [Plugin Tiers][Sujet Principal] Volets Proportionnel

Message par mika-nt28 » 19 janv. 2018, 09:32

Sans retour d’état on aura bien du mal a avoir quelque chose de précis.
Tant que t'utilise le plugin ca ne pose pas de probleme par contre si tu utilise la commande manuel la tous de desynchronise
Avec un contacteur de fin de course on peut juste resynchronise la hauteur lorsque le volet est a zero.
Pour faciliter la compréhension de votre problème, n’oubliez pas de poster
- Des Screenshots de votre configuration
- Le Log au moment du problème constaté

Encouragez-moi https://www.paypal.me/mikant28

guy4154
Timide
Messages : 181
Inscription : 31 mars 2016, 10:25
Localisation : vendome

Re: [Plugin Tiers][Sujet Principal] Volets Proportionnel

Message par guy4154 » 19 janv. 2018, 09:49

oui,je suis d'accord ,
pour l'instant c'était pour un test , pour voir si les commande agissaient;
des que j'ai reçu mes contacts je serai dans la réalité (j'espere avoir ça debut de semaine prochaine ,j'ai commandé il y a 15 jours en chine)

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

Re: [Plugin Tiers][Sujet Principal] Volets Proportionnel

Message par Seki » 19 janv. 2018, 09:54

Mika, pour le statut stop il faut quoi exactement ? 1=volet à l'arrêt ?

Idem pour le fin de course, état 1 = fin de course actionné ?

Envoyé de mon GT-I9100 en utilisant Tapatalk


Avatar de l’utilisateur
mika-nt28
Actif
Messages : 7995
Inscription : 05 août 2014, 08:58
Localisation : Dreux - France

Re: [Plugin Tiers][Sujet Principal] Volets Proportionnel

Message par mika-nt28 » 19 janv. 2018, 12:49

Seki a écrit :
19 janv. 2018, 09:54
Mika, pour le statut stop il faut quoi exactement ? 1=volet à l'arrêt ?

Idem pour le fin de course, état 1 = fin de course actionné ?

Envoyé de mon GT-I9100 en utilisant Tapatalk
Oui il me semble que c'est comme ça que je l'ai paramétrer
Pour faciliter la compréhension de votre problème, n’oubliez pas de poster
- Des Screenshots de votre configuration
- Le Log au moment du problème constaté

Encouragez-moi https://www.paypal.me/mikant28

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

Re: [Plugin Tiers][Sujet Principal] Volets Proportionnel

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

Bon, j'ai taillé dans le tas sur le plugin Myhome.

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);
	}	
Du coup, j'ai des status fonctionnels. Il me reste à en créer de nouveaux qui soient adaptés à voletProp et le tour sera joué.

Avatar de l’utilisateur
mika-nt28
Actif
Messages : 7995
Inscription : 05 août 2014, 08:58
Localisation : Dreux - France

Re: [Plugin Tiers][Sujet Principal] Volets Proportionnel

Message par mika-nt28 » 22 janv. 2018, 08:33

Oui tu as bien bossé c'est deja plus claire.
Pour moi tu n'a plus qu'a changé
$positionCmd en info binary et de remplacé
$status = 'OPEN'; par $status =true;
$status = 'CLOSED'; par $status =false;
Pour faciliter la compréhension de votre problème, n’oubliez pas de poster
- Des Screenshots de votre configuration
- Le Log au moment du problème constaté

Encouragez-moi https://www.paypal.me/mikant28

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

Re: [Plugin Tiers][Sujet Principal] Volets Proportionnel

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

Bon, j'ai recréé trois infos booléenne supplémentaires dans Myhome.
Image

statuscde01 passe à 1 sur une commande de montée, à 0 sur une commande de descente.
statusstop01 est à 0 quand le volet monte ou descend, à 1 quand il est arrêté.
statusopen01 est à 1 quand le volet ouvert, à 0 quand il ne l'est pas.

J'ai donc configuré voletProp de la sorte:
Image

Sauf que quand je fais bouger le volet à partir de l'inter, voletProp ne se met pas à jour, et ce alors que mes statuts évoluent bien.

Une idée?

Avatar de l’utilisateur
mika-nt28
Actif
Messages : 7995
Inscription : 05 août 2014, 08:58
Localisation : Dreux - France

Re: [Plugin Tiers][Sujet Principal] Volets Proportionnel

Message par mika-nt28 » 22 janv. 2018, 12:19

Tu peux mettre les log?
Pour faciliter la compréhension de votre problème, n’oubliez pas de poster
- Des Screenshots de votre configuration
- Le Log au moment du problème constaté

Encouragez-moi https://www.paypal.me/mikant28

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

Re: [Plugin Tiers][Sujet Principal] Volets Proportionnel

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

Dans le log, il n'y a que les actions effectuées à partir du template voletProp.

Code : Tout sélectionner

[2018-01-21 19:28:51][DEBUG] : [Bureau][volet test] Nous allons monter le volet de 25%
[2018-01-21 19:28:51][DEBUG] : [Bureau][volet test] Temps d'action 4.25s
[2018-01-21 19:28:55][DEBUG] : [Bureau][volet test] Le volet est a 25%
[2018-01-22 11:47:56][DEBUG] : [Bureau][volet test] Nous allons monter le volet de 30%
[2018-01-22 11:47:56][DEBUG] : [Bureau][volet test] Temps d'action 5.1s
[2018-01-22 11:48:01][DEBUG] : [Bureau][volet test] Le volet est a 55%
[2018-01-22 11:48:05][DEBUG] : [Bureau][volet test] Nous allons monter le volet de 45%
[2018-01-22 11:48:05][DEBUG] : [Bureau][volet test] Temps d'action 7.65s
[2018-01-22 11:48:13][DEBUG] : [Bureau][volet test] Le volet est a 100%

Avatar de l’utilisateur
mika-nt28
Actif
Messages : 7995
Inscription : 05 août 2014, 08:58
Localisation : Dreux - France

Re: [Plugin Tiers][Sujet Principal] Volets Proportionnel

Message par mika-nt28 » 22 janv. 2018, 12:58

Mince je n'avais pas mis beaucoup de log dans cette partie.
J'en ai ajouté, si tu peux faire la mise a jours

Autrement la fin de course tu n'a rien a mettre c'est une option de synchro pour remettre a zero la hauteur lorsque le volet est en buté basse

Edit,

J'ai fait quelque correction avec des test sur ma configuration.
Cela fonctionne plutot bien mise a part que j'ai mes etat d'inverser, mais chez toi ca va fonctionné
Faut que je vois s'il existe des standard sur les etat de volet
Pour faciliter la compréhension de votre problème, n’oubliez pas de poster
- Des Screenshots de votre configuration
- Le Log au moment du problème constaté

Encouragez-moi https://www.paypal.me/mikant28

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

Re: [Plugin Tiers][Sujet Principal] Volets Proportionnel

Message par Seki » 22 janv. 2018, 13:31

Mise à jour faite. Voici le nouveau log.

Code : Tout sélectionner

[2018-01-22 13:24:22][DEBUG] : Evenement sur les etat{"Volets_id":"2","event_id":"48","value":"0","listener_id":"2"}
[2018-01-22 13:24:22][DEBUG] : [Bureau][volet test] Detection d'un mouvement
[2018-01-22 13:24:22][DEBUG] : Evenement sur les etat{"Volets_id":"2","event_id":"49","value":"0","listener_id":"2"}
[2018-01-22 13:24:22][DEBUG] : [Bureau][volet test] Le volet est a 0%
[2018-01-22 13:24:22][DEBUG] : Evenement sur les etat{"Volets_id":"2","event_id":"50","value":"0","listener_id":"2"}
[2018-01-22 13:24:40][DEBUG] : Evenement sur les etat{"Volets_id":"2","event_id":"48","value":"0","listener_id":"2"}
[2018-01-22 13:24:40][DEBUG] : [Bureau][volet test] Detection d'un mouvement
[2018-01-22 13:24:40][DEBUG] : Evenement sur les etat{"Volets_id":"2","event_id":"50","value":"1","listener_id":"2"}
[2018-01-22 13:24:40][DEBUG] : Evenement sur les etat{"Volets_id":"2","event_id":"49","value":"1","listener_id":"2"}
[2018-01-22 13:24:40][DEBUG] : [Bureau][volet test] Le volet est a 0%
[2018-01-22 13:24:48][DEBUG] : Evenement sur les etat{"Volets_id":"2","event_id":"49","value":"0","listener_id":"2"}
[2018-01-22 13:24:48][DEBUG] : Evenement sur les etat{"Volets_id":"2","event_id":"48","value":"1","listener_id":"2"}
[2018-01-22 13:24:48][DEBUG] : [Bureau][volet test] Detection d'un mouvement
[2018-01-22 13:24:48][DEBUG] : [Bureau][volet test] Le volet est a 47.058823529412%
[2018-01-22 13:24:48][DEBUG] : Evenement sur les etat{"Volets_id":"2","event_id":"50","value":"0","listener_id":"2"}
[2018-01-22 13:24:57][DEBUG] : Evenement sur les etat{"Volets_id":"2","event_id":"48","value":"1","listener_id":"2"}
[2018-01-22 13:24:57][DEBUG] : [Bureau][volet test] Detection d'un mouvement
[2018-01-22 13:24:57][DEBUG] : Evenement sur les etat{"Volets_id":"2","event_id":"49","value":"1","listener_id":"2"}
[2018-01-22 13:24:57][DEBUG] : [Bureau][volet test] Le volet est a 47.058823529412%
[2018-01-22 13:24:57][DEBUG] : Evenement sur les etat{"Volets_id":"2","event_id":"50","value":"0","listener_id":"2"}
[2018-01-22 13:25:02][DEBUG] : Evenement sur les etat{"Volets_id":"2","event_id":"48","value":"1","listener_id":"2"}
[2018-01-22 13:25:02][DEBUG] : [Bureau][volet test] Detection d'un mouvement
[2018-01-22 13:25:02][DEBUG] : Evenement sur les etat{"Volets_id":"2","event_id":"50","value":"0","listener_id":"2"}
[2018-01-22 13:25:02][DEBUG] : Evenement sur les etat{"Volets_id":"2","event_id":"49","value":"0","listener_id":"2"}
[2018-01-22 13:25:02][DEBUG] : [Bureau][volet test] Le volet est a 47.058823529412%
[2018-01-22 13:25:11][DEBUG] : Evenement sur les etat{"Volets_id":"2","event_id":"49","value":"1","listener_id":"2"}
[2018-01-22 13:25:11][DEBUG] : Evenement sur les etat{"Volets_id":"2","event_id":"48","value":"1","listener_id":"2"}
[2018-01-22 13:25:11][DEBUG] : [Bureau][volet test] Detection d'un mouvement
[2018-01-22 13:25:11][DEBUG] : [Bureau][volet test] Le volet est a 47.058823529412%
[2018-01-22 13:25:11][DEBUG] : Evenement sur les etat{"Volets_id":"2","event_id":"50","value":"0","listener_id":"2"}
id48 -> état du mouvement
id49 -> état du stop
id50 -> fin de course

Avatar de l’utilisateur
mika-nt28
Actif
Messages : 7995
Inscription : 05 août 2014, 08:58
Localisation : Dreux - France

Re: [Plugin Tiers][Sujet Principal] Volets Proportionnel

Message par mika-nt28 » 22 janv. 2018, 14:24

Laisse le champs fin de course vide car je ne pense pas que tu as de contacteur de position basse sur ton volet.
Le mouvement est donc bien connue mais ca n'a pas l'aire de bouger
Pour faciliter la compréhension de votre problème, n’oubliez pas de poster
- Des Screenshots de votre configuration
- Le Log au moment du problème constaté

Encouragez-moi https://www.paypal.me/mikant28

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

Re: [Plugin Tiers][Sujet Principal] Volets Proportionnel

Message par Seki » 22 janv. 2018, 14:52

J'ai vider le log et juste fait un descente puis un stop 4 secondes plus tard sur mon volet, puis de nouveau descente et stop 3 secondes plus tard.
Les évènements sont bien détectés.

Par contre, je ne comprends pas pourquoi il détecte les 2 évènements à chaque fois alors qu'il ne devrait pas. :?

Code : Tout sélectionner

[2018-01-22 14:46:38][DEBUG] : Evenement sur les etat{"Volets_id":"2","event_id":"65","value":"1","listener_id":"3"}
[2018-01-22 14:46:38][DEBUG] : [Bureau][volet test] Le volet est a 100%
[2018-01-22 14:46:38][DEBUG] : Evenement sur les etat{"Volets_id":"2","event_id":"64","value":"0","listener_id":"3"}
[2018-01-22 14:46:38][DEBUG] : [Bureau][volet test] Detection d'un mouvement
[2018-01-22 14:46:42][DEBUG] : Evenement sur les etat{"Volets_id":"2","event_id":"64","value":"0","listener_id":"3"}
[2018-01-22 14:46:42][DEBUG] : [Bureau][volet test] Detection d'un mouvement
[2018-01-22 14:46:42][DEBUG] : Evenement sur les etat{"Volets_id":"2","event_id":"65","value":"0","listener_id":"3"}
[2018-01-22 14:46:42][DEBUG] : [Bureau][volet test] Le volet est a 0%
[2018-01-22 14:52:51][DEBUG] : Evenement sur les etat{"Volets_id":"2","event_id":"64","value":"1","listener_id":"3"}
[2018-01-22 14:52:51][DEBUG] : [Bureau][volet test] Detection d'un mouvement
[2018-01-22 14:52:51][DEBUG] : Evenement sur les etat{"Volets_id":"2","event_id":"65","value":"0","listener_id":"3"}
[2018-01-22 14:52:51][DEBUG] : [Bureau][volet test] Le volet est a 0%
[2018-01-22 14:52:54][DEBUG] : Evenement sur les etat{"Volets_id":"2","event_id":"64","value":"1","listener_id":"3"}
[2018-01-22 14:52:54][DEBUG] : [Bureau][volet test] Detection d'un mouvement
[2018-01-22 14:52:54][DEBUG] : Evenement sur les etat{"Volets_id":"2","event_id":"65","value":"1","listener_id":"3"}
[2018-01-22 14:52:54][DEBUG] : [Bureau][volet test] Le volet est a 0%

Avatar de l’utilisateur
mika-nt28
Actif
Messages : 7995
Inscription : 05 août 2014, 08:58
Localisation : Dreux - France

Re: [Plugin Tiers][Sujet Principal] Volets Proportionnel

Message par mika-nt28 » 22 janv. 2018, 15:16

Il detecte un mouvement et un stop a chaque fois effectivement.
A tu verifier du coté de ce que tu gener depuis my home?
Pour faciliter la compréhension de votre problème, n’oubliez pas de poster
- Des Screenshots de votre configuration
- Le Log au moment du problème constaté

Encouragez-moi https://www.paypal.me/mikant28

Répondre

Revenir vers « [Catégorie] Automatisation »

Qui est en ligne ?

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