Remonté du STATUS des équipements shutter sur myhome SCS

Ha bha non, ça marche pas. :sweat_smile:

Enfin si, selon le log ça fonctionne mais l’état sur le dashboard ne correspond pas au log.

2020-05-22 09:00:06][INFO] : Reçu sur Jeedom : *2*1000#0*68##
[2020-05-22 09:00:06][DEBUG] : Jeemyhomescs_Equipement : Array (     [trame] => *2*1000#0*68##     [format] => BUS_EVENT     [mode] => UNKNOWN     [media] => SCS     [type] => scene     [value] =>      [dimension] =>      [param] =>      [A] =>      [PL] =>      [date] => 2020-05-22 09:00:06 )
[2020-05-22 09:00:06][DEBUG] : Jeemyhomescs_Trame non interprétée
[2020-05-22 09:00:06][INFO] : Reçu sur Jeedom : *2*1000#1*68##
[2020-05-22 09:00:06][DEBUG] : Jeemyhomescs_Equipement : Array (     [trame] => *2*1000#1*68##     [format] => BUS_EVENT     [mode] => UNKNOWN     [media] => SCS     [type] => scene     [value] =>      [dimension] =>      [param] =>      [A] =>      [PL] =>      [date] => 2020-05-22 09:00:06 )
[2020-05-22 09:00:06][DEBUG] : Jeemyhomescs_Trame non interprétée
[2020-05-22 09:00:06][INFO] : Reçu sur Jeedom : *2*0*68##
[2020-05-22 09:00:06][DEBUG] : Jeemyhomescs_Equipement : Array (     [trame] => *2*0*68##     [format] => BUS_COMMAND     [mode] => UNICAST     [media] => SCS     [type] => automatism     [value] => MOVE_STOP     [dimension] =>      [param] =>      [A] => 6     [PL] => 8     [date] => 2020-05-22 09:00:06 )
[2020-05-22 09:00:06][DEBUG] : Jeemyhomescs_BUS_COMMAND
[2020-05-22 09:00:06][DEBUG] : Update Status Automatism
[2020-05-22 09:00:06][DEBUG] :  last : CLOSED Sous_device : 00 duréecmd : 28 id cmd : 1 date : 1590130806
[2020-05-22 09:00:06][DEBUG] :  sousdevice : 00 LogicalID : 68 updatedate :
[2020-05-22 09:00:06][DEBUG] :  Bouton normal
[2020-05-22 09:00:06][DEBUG] : Action move_STOP
[2020-05-22 09:00:06][DEBUG] :  updatedate :  Newpos : 5679038692.8571
[2020-05-22 09:00:06][DEBUG] : mise a jour du status : CLOSED
[2020-05-22 09:00:06][INFO] : Reçu sur Jeedom : *2*1*68##
[2020-05-22 09:00:06][DEBUG] : Jeemyhomescs_Equipement : Array (     [trame] => *2*1*68##     [format] => BUS_COMMAND     [mode] => UNICAST     [media] => SCS     [type] => automatism     [value] => MOVE_UP     [dimension] =>      [param] =>      [A] => 6     [PL] => 8     [date] => 2020-05-22 09:00:06 )
[2020-05-22 09:00:06][DEBUG] : Jeemyhomescs_BUS_COMMAND
[2020-05-22 09:00:06][DEBUG] : Update Status Automatism
[2020-05-22 09:00:06][DEBUG] :  last : CLOSED Sous_device : 00 duréecmd : 28 id cmd : 1 date : 1590130806
[2020-05-22 09:00:06][DEBUG] :  sousdevice : 00 LogicalID : 68 updatedate :
[2020-05-22 09:00:06][DEBUG] :  Bouton normal
[2020-05-22 09:00:06][DEBUG] : Action MOVE_UP
[2020-05-22 09:00:06][DEBUG] : Point UP
[2020-05-22 09:00:06][DEBUG] :  Move time : 28
[2020-05-22 09:00:06][DEBUG] : mise a jour du status : UP
[2020-05-22 09:00:06][INFO] : Reçu sur Jeedom : *2*1000#0*62##
[2020-05-22 09:00:06][DEBUG] : Jeemyhomescs_Equipement : Array (     [trame] => *2*1000#0*62##     [format] => BUS_EVENT     [mode] => UNKNOWN     [media] => SCS     [type] => scene     [value] =>      [dimension] =>      [param] =>      [A] =>      [PL] =>      [date] => 2020-05-22 09:00:06 )
[2020-05-22 09:00:06][DEBUG] : Jeemyhomescs_Trame non interprétée
[2020-05-22 09:00:07][INFO] : Reçu sur Jeedom : *2*0*62##
[2020-05-22 09:00:07][DEBUG] : Jeemyhomescs_Equipement : Array (     [trame] => *2*0*62##     [format] => BUS_COMMAND     [mode] => UNICAST     [media] => SCS     [type] => automatism     [value] => MOVE_STOP     [dimension] =>      [param] =>      [A] => 6     [PL] => 2     [date] => 2020-05-22 09:00:07 )
[2020-05-22 09:00:07][DEBUG] : Jeemyhomescs_BUS_COMMAND
[2020-05-22 09:00:07][DEBUG] : Update Status Automatism
[2020-05-22 09:00:07][DEBUG] :  last :  Sous_device : 00 duréecmd : 14 id cmd : 26 date : 1590130807
[2020-05-22 09:00:07][DEBUG] :  sousdevice : 00 LogicalID : 62 updatedate :
[2020-05-22 09:00:07][DEBUG] :  Bouton normal
[2020-05-22 09:00:07][DEBUG] : Action move_STOP
[2020-05-22 09:00:07][DEBUG] :  updatedate :  Newpos : 11358077292.857
[2020-05-22 09:00:07][DEBUG] : mise a jour du status :
[2020-05-22 09:00:07][INFO] : Reçu sur Jeedom : *2*1000#1*62##
[2020-05-22 09:00:07][DEBUG] : Jeemyhomescs_Equipement : Array (     [trame] => *2*1000#1*62##     [format] => BUS_EVENT     [mode] => UNKNOWN     [media] => SCS     [type] => scene     [value] =>      [dimension] =>      [param] =>      [A] =>      [PL] =>      [date] => 2020-05-22 09:00:07 )
[2020-05-22 09:00:07][DEBUG] : Jeemyhomescs_Trame non interprétée
[2020-05-22 09:00:07][INFO] : Reçu sur Jeedom : *2*1*62##
[2020-05-22 09:00:07][DEBUG] : Jeemyhomescs_Equipement : Array (     [trame] => *2*1*62##     [format] => BUS_COMMAND     [mode] => UNICAST     [media] => SCS     [type] => automatism     [value] => MOVE_UP     [dimension] =>      [param] =>      [A] => 6     [PL] => 2     [date] => 2020-05-22 09:00:07 )
[2020-05-22 09:00:07][DEBUG] : Jeemyhomescs_BUS_COMMAND
[2020-05-22 09:00:07][DEBUG] : Update Status Automatism
[2020-05-22 09:00:07][DEBUG] :  last :  Sous_device : 00 duréecmd : 14 id cmd : 26 date : 1590130807
[2020-05-22 09:00:07][DEBUG] :  sousdevice : 00 LogicalID : 62 updatedate :
[2020-05-22 09:00:07][DEBUG] :  Bouton normal
[2020-05-22 09:00:07][DEBUG] : Action MOVE_UP
[2020-05-22 09:00:07][DEBUG] : mise a jour du status : OPEN
[2020-05-22 09:01:07][INFO] : Reçu sur Jeedom : *2*0*62##
[2020-05-22 09:01:07][DEBUG] : Jeemyhomescs_Equipement : Array (     [trame] => *2*0*62##     [format] => BUS_COMMAND     [mode] => UNICAST     [media] => SCS     [type] => automatism     [value] => MOVE_STOP     [dimension] =>      [param] =>      [A] => 6     [PL] => 2     [date] => 2020-05-22 09:01:07 )
[2020-05-22 09:01:07][DEBUG] : Jeemyhomescs_BUS_COMMAND
[2020-05-22 09:01:07][DEBUG] : Update Status Automatism
[2020-05-22 09:01:07][DEBUG] :  last : OPEN Sous_device : 00 duréecmd : 14 id cmd : 26 date : 1590130867
[2020-05-22 09:01:07][DEBUG] :  sousdevice : 00 LogicalID : 62 updatedate :
[2020-05-22 09:01:07][DEBUG] :  Bouton normal
[2020-05-22 09:01:07][DEBUG] : Action move_STOP
[2020-05-22 09:01:07][DEBUG] :  updatedate :  Newpos : 11358077721.429
[2020-05-22 09:01:07][DEBUG] : mise a jour du status : OPEN
[2020-05-22 09:01:07][INFO] : Reçu sur Jeedom : *2*0*68##
[2020-05-22 09:01:07][DEBUG] : Jeemyhomescs_Equipement : Array (     [trame] => *2*0*68##     [format] => BUS_COMMAND     [mode] => UNICAST     [media] => SCS     [type] => automatism     [value] => MOVE_STOP     [dimension] =>      [param] =>      [A] => 6     [PL] => 8     [date] => 2020-05-22 09:01:07 )
[2020-05-22 09:01:07][DEBUG] : Jeemyhomescs_BUS_COMMAND
[2020-05-22 09:01:07][DEBUG] : Update Status Automatism
[2020-05-22 09:01:07][DEBUG] :  last : UP Sous_device : 00 duréecmd : 28 id cmd : 1 date : 1590130867
[2020-05-22 09:01:07][DEBUG] :  sousdevice : 00 LogicalID : 68 updatedate : 1590130834
[2020-05-22 09:01:07][DEBUG] :  Bouton normal
[2020-05-22 09:01:07][DEBUG] : Action move_STOP
[2020-05-22 09:01:07][DEBUG] :  updatedate : 1590130834 Newpos : 217.85714285714
[2020-05-22 09:01:07][DEBUG] : last_status : Up, status : 218
[2020-05-22 09:01:07][DEBUG] : mise a jour du status : OPEN

Pour l’équipement en PL68, le log fini bien sur le status OPEN de même que pour celui en PL62 mais sur l’équipement, si le status du PL68 est bien OPEN (comme le statnum d’ailleurs) et celui du PL62, c’est 0.

Bon j’ai remodifié le fichier ainsi:

elseif ($value == 'MOVE_STOP') {
					log::add('myhomescs', 'debug', "Action move_STOP");
					//Par defaut on dit que le volet est arrete et donc à son ancienne position
					$status = $last_status;

					$updatedate=$myhomescscmd->getConfiguration('updatedate');
					//Si le volet est deja en mouvement
					if (!is_numeric($last_status) && isset($updatedate)) {
						$new_pos = ($move_time - ($updatedate - $date))/$move_time*100;
						log::add('myhomescs', 'debug', " updatedate : ".$updatedate." Newpos : ".$new_pos);
						if ($last_status == 'UP') {
							$status = round($new_pos);
							$statusnum = round($new_pos);
							log::add('myhomescs', 'debug', "last_status : Up, status : ".$status);
							$myhomescscmd->setConfiguration('returnStateValue',$status);
							$myhomescscmd->setConfiguration('returnStateTime',1);
							$myhomescscmdnum->setConfiguration('returnStateValue',$statusnum);
							$myhomescscmdnum->setConfiguration('returnStateTime',1);
							if ($status >= 100) {
							$status = 'OPEN';
							$statusnum = 100;
							$myhomescscmd->setConfiguration('updatedate',NULL);
							//$myhomescscmd->setConfiguration('returnStateValue',NULL);
							$myhomescscmd->setConfiguration('returnStateValue',$status);
							$myhomescscmd->setConfiguration('returnStateTime',NULL);
							$myhomescscmdnum->setConfiguration('updatedate',NULL);
							//$myhomescscmdnum->setConfiguration('returnStateValue',NULL);
							$myhomescscmdnum->setConfiguration('returnStateValue',$statusnum);
							$myhomescscmdnum->setConfiguration('returnStateTime',NULL);
							}
						}
						elseif ($last_status == 'DOWN') {
							$status = round(100 - $new_pos);
							$statusnum = round(100 - $new_pos);
							log::add('myhomescs', 'debug', "last_status : Down, status : ".$status);
							$myhomescscmd->setConfiguration('returnStateValue',$status);
							$myhomescscmd->setConfiguration('returnStateTime',1);
							$myhomescscmdnum->setConfiguration('returnStateValue',$statusnum);
							$myhomescscmdnum->setConfiguration('returnStateTime',1);
							if ($status <= 0) {
							$status = 'CLOSED';
							$statusnum = 0;
							$myhomescscmd->setConfiguration('updatedate',NULL);
							//$myhomescscmd->setConfiguration('returnStateValue',NULL);
							$myhomescscmd->setConfiguration('returnStateValue',$status);
							$myhomescscmd->setConfiguration('returnStateTime',NULL);
							$myhomescscmdnum->setConfiguration('updatedate',NULL);
							//$myhomescscmdnum->setConfiguration('returnStateValue',NULL);
							$myhomescscmdnum->setConfiguration('returnStateValue',$statusnum);
							$myhomescscmdnum->setConfiguration('returnStateTime',NULL);
							}
						}
						
						
					}
					/*else {
						$status = 'OPEN';
						$statusnum = 100;
					}*/
				}

Lorsqu’après un MOVE_STOP on avait le calcul de STATUS <0 ou >100, l’état n’était, il me semble, pas renvoyé.

Sur plusieurs essais et sur deux volet, j’ai le status et le statusnum qui me semble correct.

Actuellement, les modifications ont consisté à:
sur un MOVE_STOP, le status n’est modifié que si last_status est UP ou DOWN, si c’est autre chose, c’est qu’il était déjà immobile.
Ensuite, le calcul qui fait augmenter status ou statusnum n’est fait que si last_status est UP et réciproquement pour le cas ou last_status est DOWN.
Enfin, en cas de dépassement des bornes 0 ou 100, envoi des valeurs de status et numstatus vers SetConfiguration plutot que d’envoyer NULL.

Bonjour,

Oui, j’ai fait les mêmes modifications mais pas de la même façon. Pour les returnstatesvalues statusnum tu n’as pas une valeur supérieur à 100 qui remonte au bout de quelques secondes? J’ai mis $myhomescscmdnum->setConfiguration('returnStateValue',100); au lieu de ¨$Status.
J’ai corrigé d’autres petits bugs qui faisaient perdre l’état du statusnum lors de plusieurs montées ou descentes successives et lors d’un appui sur STOP lorsque le volet est complètement ouvert.

public static function updateStatusShutter($decrypted_trame) {
		/*
		// FONCTION : MISE A JOUR DU STATUS DES VOLETS
		// PARAMS : $decrypted_trame = array(
				"trame" => string,
				"format" => 'string',
				"type" => 'string',
				"value" => string,
				"dimension" => string,
				"param" => string,
				"A" => string,
				"PL" => string,)
		*/
		//Creation des variables utiles
		$myhomescs = myhomescs::byLogicalId($decrypted_trame["A"].$decrypted_trame["PL"], 'myhomescs');
		$device_type = explode('::', $myhomescs->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
		$myhomescscmd = $myhomescs->getCmd('info', 'status');
		$duree_cmd	= $myhomescscmd->getConfiguration('DureeCmd');
		$last_status = $myhomescscmd->execCmd(null,2);
		$myhomescscmdnum = $myhomescs->getCmd('info', 'statusnum');
		$updatedate=$myhomescscmd->getConfiguration('updatedate');
		log::add('myhomescs','debug',' last : '.$last_status.' Sous_device : '.$sousdevice. ' duréecmd : '.$duree_cmd.' id cmd : '.$myhomescscmd->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'
				|| $decrypted_trame["value"] == 'UP_ADVANCED'
				|| $decrypted_trame["value"] == 'DOWN_ADVANCED'
				|| $decrypted_trame["value"] == 'STOP_ADVANCED') {
			$value = $decrypted_trame["value"];
			//Il ne s'agit pas d'une mise à jour
		}
		elseif (!is_null($decrypted_trame["dimension"])) {
			$dimension = $decrypted_trame["dimension"];
		}
		//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('myhomescs','debug',' sousdevice : '.$sousdevice.' LogicalID : '.$decrypted_trame["A"].$decrypted_trame["PL"]. " updatedate : ".$updatedate);

			if ($sousdevice =='00') {
			//Si il s'agit d'un bouton normal
				log::add('myhomescs', 'debug', " Bouton normal \n");
				if ($value == 'MOVE_UP') {
					log::add('myhomescs', '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;
								$myhomescscmd->setConfiguration('updatedate',NULL);
								$myhomescscmd->setConfiguration('returnStateValue',NULL);
								$myhomescscmd->setConfiguration('returnStateTime',NULL);
								$myhomescscmdnum->setConfiguration('updatedate',NULL);
								$myhomescscmdnum->setConfiguration('returnStateValue',NULL);
								$myhomescscmdnum->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;
								$myhomescscmd->setConfiguration('updatedate',NULL);
								$myhomescscmd->setConfiguration('returnStateValue',NULL);
								$myhomescscmd->setConfiguration('returnStateTime',NULL);
								$myhomescscmdnum->setConfiguration('updatedate',NULL);
								$myhomescscmdnum->setConfiguration('returnStateValue',NULL);
								$myhomescscmdnum->setConfiguration('returnStateTime',NULL);
						}
						$sec=date("s");
						if ($updatedate<$date)
						{
							$myhomescscmd->setConfiguration('updatedate',NULL);
							$myhomescscmdnum->setConfiguration('updatedate',NULL);
							$myhomescscmd->save();
							$myhomescscmdnum->save();
							$updatedate=0;
						}
						$move_time = round($new_pos/100*$move_time);
						$move_time_quotient = floor($move_time/60);
						log::add('myhomescs', 'debug', " Move time : ".$move_time);
						$myhomescscmd->setConfiguration('updatedate',$date+$move_time);
						$myhomescscmd->setConfiguration('returnStateValue','OPEN');
						$myhomescscmdnum->setConfiguration('updatedate',$date+$move_time);
						$myhomescscmdnum->setConfiguration('returnStateValue',100);
						$nextupdate= 1+$move_time_quotient;
						$myhomescscmd->setConfiguration('returnStateTime',$nextupdate);
						$myhomescscmdnum->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('myhomescs', 'debug', "Point ".$status);
						$move_time = $move_time - ($last_status/100*$move_time);
						$move_time_quotient = floor($move_time/60);
						log::add('myhomescs', 'debug', " Move time : ".$move_time);
						$myhomescscmd->setConfiguration('updatedate',$date+$move_time);
						$myhomescscmd->setConfiguration('returnStateValue','OPEN');
						$myhomescscmdnum->setConfiguration('updatedate',$date+$move_time);
						$myhomescscmdnum->setConfiguration('returnStateValue',100);
						$nextupdate= 1+$move_time_quotient;
						$myhomescscmd->setConfiguration('returnStateTime',$nextupdate);
						$myhomescscmdnum->setConfiguration('returnStateTime',$nextupdate);
					}
					else {
						$status = 'OPEN';
						$statusnum = 100;
					}
				}
				elseif ($value == 'MOVE_DOWN') {
					log::add('myhomescs', '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;
								$myhomescscmd->setConfiguration('updatedate',NULL);
								$myhomescscmd->setConfiguration('returnStateValue',NULL);
								$myhomescscmd->setConfiguration('returnStateTime',NULL);
								$myhomescscmdnum->setConfiguration('updatedate',NULL);
								$myhomescscmdnum->setConfiguration('returnStateValue',NULL);
								$myhomescscmdnum->setConfiguration('returnStateTime',NULL);
						}
						//Si le volet est deja en bas
					}
					elseif ($last_statusnum == '0' || $last_status == 'CLOSED') {
						$status = 'CLOSED';
						$statusnum = 0;
                      log::add('myhomescs', 'debug', "last_status : $last_status, status : ".$status);
						//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;
								$myhomescscmd->setConfiguration('updatedate',NULL);
								$myhomescscmd->setConfiguration('returnStateValue',NULL);
								$myhomescscmd->setConfiguration('returnStateTime',NULL);
								$myhomescscmdnum->setConfiguration('updatedate',NULL);
								$myhomescscmdnum->setConfiguration('returnStateValue',NULL);
								$myhomescscmdnum->setConfiguration('returnStateTime',NULL);
						}
						$sec=date("s");
						$updatedate=$myhomescscmd->getConfiguration('updatedate');
						if ($updatedate<$date)
						{
							$myhomescscmd->setConfiguration('updatedate',NULL);
							$myhomescscmdnum->setConfiguration('updatedate',NULL);
							$myhomescscmd->save();
							$myhomescscmdnum->save();
							$updatedate=0;
						}
						$move_time = round($new_pos/100*$move_time);
						log::add('myhomescs', 'debug', " Move time : ".$move_time." New_pos : ".$new_pos);
						$move_time_quotient = floor($move_time/60);
						log::add('myhomescs', 'debug', " Move time : ".$move_time);
						$myhomescscmd->setConfiguration('updatedate',$date+$move_time);
						$myhomescscmd->setConfiguration('returnStateValue','CLOSED');
						$myhomescscmdnum->setConfiguration('updatedate',$date+$move_time);
						$myhomescscmdnum->setConfiguration('returnStateValue',0);
						$nextupdate= 1+$move_time_quotient;
						$myhomescscmd->setConfiguration('returnStateTime',$nextupdate);
						$myhomescscmdnum->setConfiguration('returnStateTime',$nextupdate);
						log::add('myhomescs', '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('myhomescs', 'debug', "Point ".$status."sec : ".$sec."movetime : ".$move_time);
						$move_time = ($last_status/100*$move_time);
						$move_time_quotient = floor($move_time/60);
						log::add('myhomescs', 'debug', " Move time : ".$move_time);
						$myhomescscmd->setConfiguration('updatedate',$date+$move_time);
						$myhomescscmd->setConfiguration('returnStateValue','CLOSED');
						$myhomescscmdnum->setConfiguration('updatedate',$date+$move_time);
						$myhomescscmdnum->setConfiguration('returnStateValue',0);
						$nextupdate= 1+$move_time_quotient;
						$myhomescscmd->setConfiguration('returnStateTime',$nextupdate);
						$myhomescscmdnum->setConfiguration('returnStateTime',$nextupdate);
						log::add('myhomescs', 'debug', " Move time : ".$move_time);
					}
					else {
						$status = 'CLOSED';
						$statusnum = 0;
					}
				}
				elseif ($value == 'MOVE_STOP') {
					log::add('myhomescs', 'debug', "Action move_STOP");
					//Par defaut on dit que le volet est arrete et donc à son ancienne position
					$status = $last_status;
                 	
                  	log::add('myhomescs','debug',"mise a jour du status : ".$statusnum."\n");
                     
                 	if (!is_numeric($laststatus)) {
                 	 $statusnum = $status;
                    }
               
					if ($status == 'OPEN') {
                       $statusnum = 100;
                  	}
                  
               		log::add('myhomescs', 'debug', "last_status : $last_status, status : ".$status);
                    
					$updatedate=$myhomescscmd->getConfiguration('updatedate');
					//Si le volet est deja en mouvement
                	
					if (!is_numeric($last_status) && (isset($updatedate))) {
						$new_pos = ($move_time - ($updatedate - $date))/$move_time*100;
						log::add('myhomescs', 'debug', " updatedate : ".$updatedate." Newpos : ".$new_pos);
						if ($last_status == 'UP') {
							$status = round($new_pos);
							$statusnum = round($new_pos);
							log::add('myhomescs', 'debug', "last_status : Up, status : ".$status);
                         	log::add('myhomescs', 'debug', "last_status : $last_statusnum, status : ".$statusnum);
							$myhomescscmd->setConfiguration('returnStateValue',$status);
							$myhomescscmd->setConfiguration('returnStateTime',1);
							$myhomescscmdnum->setConfiguration('returnStateValue',$statusnum);
							$myhomescscmdnum->setConfiguration('returnStateTime',1);
						}
						elseif ($last_status == 'DOWN') {
							$status = round(100 - $new_pos);
							$statusnum = round(100 - $new_pos);
							log::add('myhomescs', 'debug', "last_status : Down, status : ".$status);
							$myhomescscmd->setConfiguration('returnStateValue',$status);
							$myhomescscmd->setConfiguration('returnStateTime',1);
							$myhomescscmdnum->setConfiguration('returnStateValue',$statusnum);
							$myhomescscmdnum->setConfiguration('returnStateTime',1);
						}
						if  (($status <= 0) && ($updatedate <> 0)) {
							$status = 'CLOSED';
                          	$last_status = 'CLOSED';
							$statusnum = 0;
							$myhomescscmd->setConfiguration('updatedate',NULL);
							$myhomescscmd->setConfiguration('returnStateValue','CLOSED');
							$myhomescscmd->setConfiguration('returnStateTime',NULL);
							$myhomescscmdnum->setConfiguration('updatedate',NULL);
							$myhomescscmdnum->setConfiguration('returnStateValue',0);
							$myhomescscmdnum->setConfiguration('returnStateTime',NULL);
                         	$myhomescscmd->save();
							$myhomescscmdnum->save();
						}
						elseif (($status >= 100) && ($updatedate <> 0)) {
							$status = 'OPEN';
                         	$last_status = 'OPEN';
							$statusnum = 100;
							$myhomescscmd->setConfiguration('updatedate',NULL);
							$myhomescscmd->setConfiguration('returnStateValue','OPEN');
							$myhomescscmd->setConfiguration('returnStateTime',NULL);
							$myhomescscmdnum->setConfiguration('updatedate',NULL);
							$myhomescscmdnum->setConfiguration('returnStateValue',100);
							$myhomescscmdnum->setConfiguration('returnStateTime',NULL);

						}

					}

				}

				$myhomescscmd->save();
				$myhomescscmdnum->save();

A force je ne me rappelle plus ce que j’ai touché mais j’ai testé dans tous les sens et cela fonctionne parfaitement (plusieurs petites montées, descentes, changement de sens, stop, etc…)
L’ensemble du code ci-dessus.

Autre sujet, j’avance bien sur l’alarme. j’arrive à récupérer toutes les infos.
Il me reste à régler le fait que l’alarme ne renvoie pas tout à fait les mêmes trames lors d’un Status Request Frame (#50##) et lorsque qu’elle est enclenchée ou desenclenchée.
Exemple :
Réponse au Status Request Frame : 58**## pour 580## lorsque j’enclenche l’alarme.
Elle ajoute un Where.
Je pense que dans un cas c’est le Webserver qui répond et dans l’autre c’est l’alarme qui envoie
les trames.

As-tu les mêmes trames?

As-tu un portier bus SCS?

Après je m’attaque au canaux auxiliaires qui permettront de faire des scénarios plus poussés avec l’alarme.
Car si on utilise le statu de l’alarme pour faire de scénarios, ils se déclencheront aussi avec une activation et desactivation à distance par téléphone par exemple.

Bonne journée,

Romain.

Effectivement, si j’appuie plusieurs fois sur le STOP dans jeedom, numstatus passe à 0 mais status ne bouge pas.
Quand j’envoie #5## avec l’alarme déclenchée, j’ai ça:

[2020-05-22 16:13:49][INFO] : Envoi depuis Jeedom : *#5*## : *5*1*##
[2020-05-22 16:13:49][DEBUG] : Fermeture du socket...
[2020-05-22 16:13:50][INFO] : Reçu sur Jeedom : *5*7*##
[2020-05-22 16:13:50][DEBUG] : Jeemyhomescs_Equipement : Array (     [trame] => *5*7*##     [format] => BUS_COMMAND     [mode] => UNKNOWN     [media] => SCS     [type] => UNKNOWN     [value] =>      [dimension] =>      [param] =>      [A] =>      [PL] =>      [date] => 2020-05-22 16:13:50 )
[2020-05-22 16:13:50][DEBUG] : Jeemyhomescs_BUS_COMMAND
[2020-05-22 16:13:50][ERROR] : Unknown type or status: UNKNOWN
[2020-05-22 16:13:50][INFO] : Reçu sur Jeedom : *5*11*#2##
[2020-05-22 16:13:50][DEBUG] : Jeemyhomescs_Equipement : Array (     [trame] => *5*11*#2##     [format] => BUS_COMMAND     [mode] => UNKNOWN     [media] => SCS     [type] => UNKNOWN     [value] =>      [dimension] =>      [param] =>      [A] => #     [PL] => 2     [date] => 2020-05-22 16:13:50 )
[2020-05-22 16:13:50][DEBUG] : Jeemyhomescs_Aucun équipement trouvé pour : #2 Création de l'equipement
[2020-05-22 16:13:50][DEBUG] : Jeemyhomescs_Aucun équipement trouvé pour : #2 Erreur lors de la création de l'équipement
[2020-05-22 16:13:50][INFO] : Reçu sur Jeedom : *5*7*##
[2020-05-22 16:13:50][DEBUG] : Jeemyhomescs_Equipement : Array (     [trame] => *5*7*##     [format] => BUS_COMMAND     [mode] => UNKNOWN     [media] => SCS     [type] => UNKNOWN     [value] =>      [dimension] =>      [param] =>      [A] =>      [PL] =>      [date] => 2020-05-22 16:13:50 )
[2020-05-22 16:13:50][DEBUG] : Jeemyhomescs_BUS_COMMAND
[2020-05-22 16:13:50][ERROR] : Unknown type or status: UNKNOWN
[2020-05-22 16:13:50][INFO] : Reçu sur Jeedom : *5*18*#1##
[2020-05-22 16:13:50][DEBUG] : Jeemyhomescs_Equipement : Array (     [trame] => *5*18*#1##     [format] => BUS_COMMAND     [mode] => UNKNOWN     [media] => SCS     [type] => UNKNOWN     [value] =>      [dimension] =>      [param] =>      [A] => #     [PL] => 1     [date] => 2020-05-22 16:13:50 )
[2020-05-22 16:13:50][INFO] : Reçu sur Jeedom : *5*11*#3##
[2020-05-22 16:13:50][DEBUG] : Jeemyhomescs_Aucun équipement trouvé pour : #1 Création de l'equipement
[2020-05-22 16:13:50][DEBUG] : Jeemyhomescs_Equipement : Array (     [trame] => *5*11*#3##     [format] => BUS_COMMAND     [mode] => UNKNOWN     [media] => SCS     [type] => UNKNOWN     [value] =>      [dimension] =>      [param] =>      [A] => #     [PL] => 3     [date] => 2020-05-22 16:13:50 )
[2020-05-22 16:13:50][DEBUG] : Jeemyhomescs_Aucun équipement trouvé pour : #1 Erreur lors de la création de l'équipement
[2020-05-22 16:13:50][DEBUG] : Jeemyhomescs_Aucun équipement trouvé pour : #3 Création de l'equipement
[2020-05-22 16:13:50][DEBUG] : Jeemyhomescs_Aucun équipement trouvé pour : #3 Erreur lors de la création de l'équipement
[2020-05-22 16:13:50][INFO] : Reçu sur Jeedom : *5*11*#5##
[2020-05-22 16:13:50][DEBUG] : Jeemyhomescs_Equipement : Array (     [trame] => *5*11*#5##     [format] => BUS_COMMAND     [mode] => UNKNOWN     [media] => SCS     [type] => UNKNOWN     [value] =>      [dimension] =>      [param] =>      [A] => #     [PL] => 5     [date] => 2020-05-22 16:13:50 )
[2020-05-22 16:13:50][DEBUG] : Jeemyhomescs_Aucun équipement trouvé pour : #5 Création de l'equipement
[2020-05-22 16:13:50][INFO] : Reçu sur Jeedom : *5*18*#6##
[2020-05-22 16:13:50][DEBUG] : Jeemyhomescs_Equipement : Array (     [trame] => *5*18*#6##     [format] => BUS_COMMAND     [mode] => UNKNOWN     [media] => SCS     [type] => UNKNOWN     [value] =>      [dimension] =>      [param] =>      [A] => #     [PL] => 6     [date] => 2020-05-22 16:13:50 )
[2020-05-22 16:13:50][DEBUG] : Jeemyhomescs_Aucun équipement trouvé pour : #6 Création de l'equipement
[2020-05-22 16:13:50][DEBUG] : Jeemyhomescs_Aucun équipement trouvé pour : #6 Erreur lors de la création de l'équipement
[2020-05-22 16:13:50][DEBUG] : Jeemyhomescs_Aucun équipement trouvé pour : #5 Erreur lors de la création de l'équipement
[2020-05-22 16:13:50][INFO] : Reçu sur Jeedom : *5*18*#6##
[2020-05-22 16:13:50][INFO] : Reçu sur Jeedom : *5*18*#7##
[2020-05-22 16:13:50][DEBUG] : Jeemyhomescs_Equipement : Array (     [trame] => *5*18*#7##     [format] => BUS_COMMAND     [mode] => UNKNOWN     [media] => SCS     [type] => UNKNOWN     [value] =>      [dimension] =>      [param] =>      [A] => #     [PL] => 7     [date] => 2020-05-22 16:13:50 )
[2020-05-22 16:13:50][INFO] : Reçu sur Jeedom : *5*11*#2##
[2020-05-22 16:13:50][DEBUG] : Jeemyhomescs_Aucun équipement trouvé pour : #7 Création de l'equipement
[2020-05-22 16:13:50][DEBUG] : Jeemyhomescs_Aucun équipement trouvé pour : #7 Erreur lors de la création de l'équipement
[2020-05-22 16:13:50][DEBUG] : Jeemyhomescs_Equipement : Array (     [trame] => *5*11*#2##     [format] => BUS_COMMAND     [mode] => UNKNOWN     [media] => SCS     [type] => UNKNOWN     [value] =>      [dimension] =>      [param] =>      [A] => #     [PL] => 2     [date] => 2020-05-22 16:13:50 )
[2020-05-22 16:13:50][DEBUG] : Jeemyhomescs_Equipement : Array (     [trame] => *5*18*#6##     [format] => BUS_COMMAND     [mode] => UNKNOWN     [media] => SCS     [type] => UNKNOWN     [value] =>      [dimension] =>      [param] =>      [A] => #     [PL] => 6     [date] => 2020-05-22 16:13:50 )
[2020-05-22 16:13:50][DEBUG] : Jeemyhomescs_Aucun équipement trouvé pour : #2 Création de l'equipement
[2020-05-22 16:13:50][DEBUG] : Jeemyhomescs_Aucun équipement trouvé pour : #6 Création de l'equipement
[2020-05-22 16:13:50][DEBUG] : Jeemyhomescs_Aucun équipement trouvé pour : #2 Erreur lors de la création de l'équipement
[2020-05-22 16:13:50][DEBUG] : Jeemyhomescs_Aucun équipement trouvé pour : #6 Erreur lors de la création de l'équipement
[2020-05-22 16:13:50][INFO] : Reçu sur Jeedom : *5*18*#8##
[2020-05-22 16:13:50][DEBUG] : Jeemyhomescs_Equipement : Array (     [trame] => *5*18*#8##     [format] => BUS_COMMAND     [mode] => UNKNOWN     [media] => SCS     [type] => UNKNOWN     [value] =>      [dimension] =>      [param] =>      [A] => #     [PL] => 8     [date] => 2020-05-22 16:13:50 )
[2020-05-22 16:13:50][INFO] : Reçu sur Jeedom : *5*18*#8##
[2020-05-22 16:13:50][DEBUG] : Jeemyhomescs_Aucun équipement trouvé pour : #8 Création de l'equipement
[2020-05-22 16:13:50][DEBUG] : Jeemyhomescs_Equipement : Array (     [trame] => *5*18*#8##     [format] => BUS_COMMAND     [mode] => UNKNOWN     [media] => SCS     [type] => UNKNOWN     [value] =>      [dimension] =>      [param] =>      [A] => #     [PL] => 8     [date] => 2020-05-22 16:13:50 )
[2020-05-22 16:13:50][DEBUG] : Jeemyhomescs_Aucun équipement trouvé pour : #8 Création de l'equipement
[2020-05-22 16:13:50][DEBUG] : Jeemyhomescs_Aucun équipement trouvé pour : #8 Erreur lors de la création de l'équipement
[2020-05-22 16:13:50][DEBUG] : Jeemyhomescs_Aucun équipement trouvé pour : #8 Erreur lors de la création de l'équipement

Je ferai demain matin pour le cas où l’alarme est enclenchée.

Oui j’ai un portier sur bus SCS.

J’ai mis tes modifications, je confirme que ça marche aussi chez moi.

Ok, super. Merci pour les trames de l’alarme.
Comme chez moi, je vois que ton JEEDOM ne traite pas toutes les trames
Envoi depuis Jeedom : *#5*0## : *5*1*##*5*9*##*5*5*##*5*7*##*5*11*#1##*5*11*#2##*5*18*#3##*5*11*#4##*5*18*#5##*5*18*#6##*5*18*#7##*5*18*#8##*#*1## (toutes les trames sont présentes sur le log avec la version du 12/05)
Par contre le plugin traite un coup sur deux *5*1*## (Systeme Actif) et *5*9*## (Desenclenchée).
Il rate aussi systématiquement la zone1 : *5*11*#1 (Zone 1 active)
Par moment il traite plusieurs fois la même trame…
C’est dommage parce que j’ai fini les modifs pour la gestion de l’alarme.
Il reste que ce problème de trames…
@anotherjulien, les modifications que tu as fait sur la gestion des trames sont-elles prise en compte dans la version du 2020-05-12 ?

@fabx4, Sais-tu que tu peux récupérer la vidéo du portier sur JEEDOM et lancer une commande SCS pour activer la caméra?

Merci pour votre aide,

Romain.

Non je ne savais pas qu’on pouvait interagir avec le portier via Jeedom. On peut aussi ouvrir la porte ?

Si tu as une caméra on peut récupérer l’image sur le port 10000 du webserver.
Réglage du plugin caméra :


Avec la bonne IP.

Après, il faut te créer un équipement myHome avec la commande ci-dessous :


Normalement : *6*0*4001## si le portier a l’adresse 1. Cela active la caméra pour quelques secondes.

L’ouverture de la porte est une simple commande SCS. Crée un équipement avec la commande : *6*10*4001## (si portier adresse 1…) Tu peux aussi créer une autre commande sur l’équipement créer pour la caméra.
Je suis pas sûr de la commande car je n’ai pas câblé l’ouverture sur la sortie du portier mais sur un relais normal.

Good night…

À ma connaissance les modifications que j’avais apportées n’ont pas été changées dans les différents updates de la beta.
J’essaye toujours de vérifier le code de ce qui a été modifié avant d’appliquer un update.

Pour ce qui est des trames perdues par contre, un problème que j’ai rencontré avec la gestion de la conso électrique c’est que parfois il y avait tellement de trames qui arrivaient en même temps que le système n’arrivait plus à suivre, et certaines étaient juste ignorées.
Je suis passé d’un RPi 3b+ à un « vrai » serveur sous debian pour palier au problème.

En tout cas je suis content que d’autres personnes se penchent sur le plugin pour ajouter des fonctionnalités supplémentaires que je ne pourrais pas tester moi même ! :slight_smile:

Bonjour,

Je tourne sur un NAS avec machine virtuel.
Dans les version précédente il me semble que des trames étaient ratées.
Là , si on regarde le log si dessous on voit bien que toute la réponse est reçu correctement puis les trames valides sont traitées les unes après les autres sur plusieurs secondes. Envoi depuis Jeedom : *#5*0## : *5*1*##*5*9*##*5*5*##*5*7*##*5*11*#1##*5*11*#2##*5*18*#3##*5*11*#4##*5*18*#5##*5*18*#6##*5*18*#7##*5*18*#8##*#*1## => La réponse est reçue en totalité.
Puis traitement : Reçu sur Jeedom : *5*9*##.
Par exemple le plugin a raté *5*1*# et *5*18*#7## dans l’exemple ci-dessous.
Il a également traité deux fois *5*18*#6## & *5*18*#8## & *5*18*#6##
C’est étonnant que je n’ai pas la *5*1*# mais deux fois la 59*##(trames suivantes) par la518*#7##mais deux fois la518*#8##` (trame suivante) …
C’est notamment pour cela que je pense qu’une amélioration est possible et que ce n’est pas lié à la machine.

[2020-05-23 12:11:26][INFO] : Envoi depuis Jeedom : *#5*0## : *5*1*##*5*9*##*5*5*##*5*7*##*5*11*#1##*5*11*#2##*5*18*#3##*5*11*#4##*5*18*#5##*5*18*#6##*5*18*#7##*5*18*#8##*#*1##  (La réponse est reçu vue en totalité)
[2020-05-23 12:11:26][DEBUG] : Fermeture du socket...
[2020-05-23 12:11:26][INFO] : Reçu sur Jeedom : *5*9*##
[2020-05-23 12:11:26][INFO] : Reçu sur Jeedom : *5*5*##
[2020-05-23 12:11:26][DEBUG] : Jeemyhomescs_Equipement : Array (     [trame] => *5*9*##     [format] => BUS_COMMAND     [mode] => UNKNOWN     [media] => SCS     [type] => Alarm     [value] => DESENCLENCHEE     [dimension] =>      [param] =>      [A] =>      [PL] =>      [date] => 2020-05-23 12:11:26 )
[2020-05-23 12:11:26][DEBUG] : Jeemyhomescs_BUS_COMMAND
[2020-05-23 12:11:26][DEBUG] : Update Status Alarm
[2020-05-23 12:11:26][DEBUG] : LogicalID :  date : 1590228686 family :
[2020-05-23 12:11:26][DEBUG] : Centrale
[2020-05-23 12:11:26][DEBUG] : Jeemyhomescs_Equipement : Array (     [trame] => *5*5*##     [format] => BUS_COMMAND     [mode] => UNKNOWN     [media] => SCS     [type] => Alarm     [value] => BATTERIE OK     [dimension] =>      [param] =>      [A] =>      [PL] =>      [date] => 2020-05-23 12:11:26 )
[2020-05-23 12:11:26][DEBUG] : Jeemyhomescs_BUS_COMMAND
[2020-05-23 12:11:26][DEBUG] : Update Status Alarm
[2020-05-23 12:11:26][DEBUG] : LogicalID :  date : 1590228686 family :
[2020-05-23 12:11:26][DEBUG] : Centrale
[2020-05-23 12:11:26][INFO] : Reçu sur Jeedom : *5*7*##
[2020-05-23 12:11:26][DEBUG] : Request response for Zone , status: BATTERIE OK
[2020-05-23 12:11:26][DEBUG] : Jeemyhomescs_Equipement : Array (     [trame] => *5*7*##     [format] => BUS_COMMAND     [mode] => UNKNOWN     [media] => SCS     [type] => Alarm     [value] => RESEAU OK     [dimension] =>      [param] =>      [A] =>      [PL] =>      [date] => 2020-05-23 12:11:26 )
[2020-05-23 12:11:26][DEBUG] : Request response for Zone , status: DESENCLENCHEE
[2020-05-23 12:11:26][INFO] : Reçu sur Jeedom : *5*11*#1##
[2020-05-23 12:11:26][DEBUG] : Jeemyhomescs_BUS_COMMAND
[2020-05-23 12:11:26][DEBUG] : Update Status Alarm
[2020-05-23 12:11:26][DEBUG] : LogicalID :  date : 1590228686 family :
[2020-05-23 12:11:26][DEBUG] : Centrale
[2020-05-23 12:11:26][DEBUG] : Jeemyhomescs_Equipement : Array (     [trame] => *5*11*#1##     [format] => BUS_COMMAND     [mode] => UNKNOWN     [media] => SCS     [type] => Alarm     [value] => ACTIVE     [dimension] =>      [param] =>      [A] => #     [PL] => 1     [date] => 2020-05-23 12:11:26 )
[2020-05-23 12:11:26][DEBUG] : Jeemyhomescs_BUS_COMMAND
[2020-05-23 12:11:26][DEBUG] : Update Status Alarm
[2020-05-23 12:11:26][DEBUG] : LogicalID : #1 date : 1590228686 family : Alarm
[2020-05-23 12:11:26][DEBUG] : Request response for Zone , status: RESEAU OK
[2020-05-23 12:11:26][INFO] : Reçu sur Jeedom : *5*18*#3##
[2020-05-23 12:11:27][DEBUG] : Request response for Zone , status: ACTIVE
[2020-05-23 12:11:27][INFO] : Reçu sur Jeedom : *5*11*#2##
[2020-05-23 12:11:27][DEBUG] : Jeemyhomescs_Equipement : Array (     [trame] => *5*11*#2##     [format] => BUS_COMMAND     [mode] => UNKNOWN     [media] => SCS     [type] => Alarm     [value] => ACTIVE     [dimension] =>      [param] =>      [A] => #     [PL] => 2     [date] => 2020-05-23 12:11:26 )
[2020-05-23 12:11:27][INFO] : Reçu sur Jeedom : *5*11*#4##
[2020-05-23 12:11:27][DEBUG] : Jeemyhomescs_Equipement : Array (     [trame] => *5*11*#4##     [format] => BUS_COMMAND     [mode] => UNKNOWN     [media] => SCS     [type] => Alarm     [value] => ACTIVE     [dimension] =>      [param] =>      [A] => #     [PL] => 4     [date] => 2020-05-23 12:11:27 )
[2020-05-23 12:11:27][DEBUG] : Jeemyhomescs_Aucun équipement trouvé pour : #4 Création de l'equipement
[2020-05-23 12:11:27][DEBUG] : Jeemyhomescs_Aucun équipement trouvé pour : #2 Création de l'equipement
[2020-05-23 12:11:27][DEBUG] : Jeemyhomescs_Aucun équipement trouvé pour : #2 Erreur lors de la création de l'équipement
[2020-05-23 12:11:27][DEBUG] : Jeemyhomescs_Equipement : Array (     [trame] => *5*18*#3##     [format] => BUS_COMMAND     [mode] => UNKNOWN     [media] => SCS     [type] => Alarm     [value] => NON ACTIVE     [dimension] =>      [param] =>      [A] => #     [PL] => 3     [date] => 2020-05-23 12:11:27 )
[2020-05-23 12:11:27][DEBUG] : Jeemyhomescs_Aucun équipement trouvé pour : #3 Création de l'equipement
[2020-05-23 12:11:27][DEBUG] : Jeemyhomescs_Aucun équipement trouvé pour : #4 Erreur lors de la création de l'équipement
[2020-05-23 12:11:27][INFO] : Reçu sur Jeedom : *5*18*#6##
[2020-05-23 12:11:27][INFO] : Reçu sur Jeedom : *5*18*#6##
[2020-05-23 12:11:27][DEBUG] : Jeemyhomescs_Aucun équipement trouvé pour : #3 Erreur lors de la création de l'équipement
[2020-05-23 12:11:27][DEBUG] : Jeemyhomescs_Equipement : Array (     [trame] => *5*18*#6##     [format] => BUS_COMMAND     [mode] => UNKNOWN     [media] => SCS     [type] => Alarm     [value] => NON ACTIVE     [dimension] =>      [param] =>      [A] => #     [PL] => 6     [date] => 2020-05-23 12:11:27 )
[2020-05-23 12:11:27][DEBUG] : Jeemyhomescs_Equipement : Array (     [trame] => *5*18*#6##     [format] => BUS_COMMAND     [mode] => UNKNOWN     [media] => SCS     [type] => Alarm     [value] => NON ACTIVE     [dimension] =>      [param] =>      [A] => #     [PL] => 6     [date] => 2020-05-23 12:11:27 )
[2020-05-23 12:11:27][INFO] : Reçu sur Jeedom : *5*18*#5##
[2020-05-23 12:11:27][DEBUG] : Jeemyhomescs_Equipement : Array (     [trame] => *5*18*#5##     [format] => BUS_COMMAND     [mode] => UNKNOWN     [media] => SCS     [type] => Alarm     [value] => NON ACTIVE     [dimension] =>      [param] =>      [A] => #     [PL] => 5     [date] => 2020-05-23 12:11:27 )
[2020-05-23 12:11:27][DEBUG] : Jeemyhomescs_Aucun équipement trouvé pour : #6 Création de l'equipement
[2020-05-23 12:11:27][DEBUG] : Jeemyhomescs_Aucun équipement trouvé pour : #6 Création de l'equipement
[2020-05-23 12:11:27][DEBUG] : Jeemyhomescs_Aucun équipement trouvé pour : #6 Erreur lors de la création de l'équipement
[2020-05-23 12:11:27][DEBUG] : Jeemyhomescs_Aucun équipement trouvé pour : #5 Création de l'equipement
[2020-05-23 12:11:27][DEBUG] : Jeemyhomescs_Aucun équipement trouvé pour : #6 Erreur lors de la création de l'équipement
[2020-05-23 12:11:27][DEBUG] : Jeemyhomescs_Aucun équipement trouvé pour : #5 Erreur lors de la création de l'équipement
[2020-05-23 12:11:27][INFO] : Reçu sur Jeedom : *5*18*#8##
[2020-05-23 12:11:27][DEBUG] : Jeemyhomescs_Equipement : Array (     [trame] => *5*18*#8##     [format] => BUS_COMMAND     [mode] => UNKNOWN     [media] => SCS     [type] => Alarm     [value] => NON ACTIVE     [dimension] =>      [param] =>      [A] => #     [PL] => 8     [date] => 2020-05-23 12:11:27 )
[2020-05-23 12:11:27][INFO] : Reçu sur Jeedom : *5*18*#8##
[2020-05-23 12:11:27][DEBUG] : Jeemyhomescs_Aucun équipement trouvé pour : #8 Création de l'equipement
[2020-05-23 12:11:27][DEBUG] : Jeemyhomescs_Equipement : Array (     [trame] => *5*18*#8##     [format] => BUS_COMMAND     [mode] => UNKNOWN     [media] => SCS     [type] => Alarm     [value] => NON ACTIVE     [dimension] =>      [param] =>      [A] => #     [PL] => 8     [date] => 2020-05-23 12:11:27 )
[2020-05-23 12:11:27][DEBUG] : Jeemyhomescs_Aucun équipement trouvé pour : #8 Erreur lors de la création de l'équipement
[2020-05-23 12:11:27][DEBUG] : Jeemyhomescs_Aucun équipement trouvé pour : #8 Création de l'equipement
[2020-05-23 12:11:27][DEBUG] : Jeemyhomescs_Aucun équipement trouvé pour : #8 Erreur lors de la création de l'équipement

Dans myhomescsclass.php :
$response = myhomescs::writeSocket($socket,$trame); //On balance la commande au socket log::add ('myhomescs','info',"Envoi depuis Jeedom : $trame : $response"); }

Les trames traitées le sont correctement et les trames non traitées sont aléatoires donc les commandes dans jeemyhomescs.php sont ok. Peut-être un problème de rapidité de traitement?
Est-il possible de faire une modification pour décoder et stocker les trames avant de les analyser?
`if (isset($_GET[‹ trame ›])) {

$trame = str_replace('Y', '*', $_GET['trame']);
$trame = str_replace('Z', '#', $trame);
log::add ('myt on l’écrit sur le Socket.homescs','info','Reçu sur Jeedom : '.$trame);

$tramedecrypt=myhomescs::decrypt_trame($trame);
log::add('myhomescs', 'debug', 'Jeemyhomescs_Equipement : ' . print_r($tramedecrypt, true));

foreach ($tramedecrypt as $key => $value) {
			if (is_null($value)) {
				$tramedecrypt[$key] = "NULL";
			} else {
				$tramedecrypt[$key] = $value;
			}
}`

Peut être que le problème est lorsque on écrit ou on lit sur le Socket ? : (fichier myhomescsclass.php)

public static function readSocket($socket){
		$out = $recv = '';
		$buffersize = 1460;
		do {
			if ($out != '' && $recv != '') break;
			$recv = '';
			$recv = socket_read($socket,$buffersize);
			if ($recv != '') $out .= $recv;

		} while (strlen($recv)==$buffersize);
		//echo $out;
		return $out;
	}

	public static function writeSocket($socket,$txt){
		socket_write($socket, $txt, strlen($txt));
		return myhomescs::readSocket($socket);
	}

Par contre, je suis largement dépassé… :confused:

Peut être @apages2 qui taff sur le plugin myhome zigbee peut nous aider? ou le support Jeedom?

Sinon, on voit bien que je remonte les statuts du WHO 5 :).

Romain.

Alarme déclenchée:
image

[2020-05-23 13:43:06][INFO] : Envoi depuis Jeedom : *#5*## : *5*1*##
[2020-05-23 13:43:06][DEBUG] : Fermeture du socket...
[2020-05-23 13:43:06][INFO] : Reçu sur Jeedom : *5*1*##
[2020-05-23 13:43:06][DEBUG] : Jeemyhomescs_Equipement : Array (     [trame] => *5*1*##     [format] => BUS_COMMAND     [mode] => UNKNOWN     [media] => SCS     [type] => UNKNOWN     [value] =>      [dimension] =>      [param] =>      [A] =>      [PL] =>      [date] => 2020-05-23 13:43:06 )
[2020-05-23 13:43:06][DEBUG] : Jeemyhomescs_BUS_COMMAND
[2020-05-23 13:43:06][ERROR] : Unknown type or status: UNKNOWN
[2020-05-23 13:43:06][INFO] : Reçu sur Jeedom : *5*5*##
[2020-05-23 13:43:06][DEBUG] : Jeemyhomescs_Equipement : Array (     [trame] => *5*5*##     [format] => BUS_COMMAND     [mode] => UNKNOWN     [media] => SCS     [type] => UNKNOWN     [value] =>      [dimension] =>      [param] =>      [A] =>      [PL] =>      [date] => 2020-05-23 13:43:06 )
[2020-05-23 13:43:06][DEBUG] : Jeemyhomescs_BUS_COMMAND
[2020-05-23 13:43:06][ERROR] : Unknown type or status: UNKNOWN
[2020-05-23 13:43:06][INFO] : Reçu sur Jeedom : *5*9*##
[2020-05-23 13:43:06][INFO] : Reçu sur Jeedom : *5*9*##
[2020-05-23 13:43:06][DEBUG] : Jeemyhomescs_Equipement : Array (     [trame] => *5*9*##     [format] => BUS_COMMAND     [mode] => UNKNOWN     [media] => SCS     [type] => UNKNOWN     [value] =>      [dimension] =>      [param] =>      [A] =>      [PL] =>      [date] => 2020-05-23 13:43:06 )
[2020-05-23 13:43:06][DEBUG] : Jeemyhomescs_Equipement : Array (     [trame] => *5*9*##     [format] => BUS_COMMAND     [mode] => UNKNOWN     [media] => SCS     [type] => UNKNOWN     [value] =>      [dimension] =>      [param] =>      [A] =>      [PL] =>      [date] => 2020-05-23 13:43:06 )
[2020-05-23 13:43:06][DEBUG] : Jeemyhomescs_BUS_COMMAND
[2020-05-23 13:43:06][ERROR] : Unknown type or status: UNKNOWN
[2020-05-23 13:43:06][DEBUG] : Jeemyhomescs_BUS_COMMAND
[2020-05-23 13:43:06][ERROR] : Unknown type or status: UNKNOWN
[2020-05-23 13:43:06][INFO] : Reçu sur Jeedom : *5*11*#2##
[2020-05-23 13:43:06][DEBUG] : Jeemyhomescs_Equipement : Array (     [trame] => *5*11*#2##     [format] => BUS_COMMAND     [mode] => UNKNOWN     [media] => SCS     [type] => UNKNOWN     [value] =>      [dimension] =>      [param] =>      [A] => #     [PL] => 2     [date] => 2020-05-23 13:43:06 )
[2020-05-23 13:43:06][DEBUG] : Jeemyhomescs_Aucun équipement trouvé pour : #2 Création de l'equipement
[2020-05-23 13:43:06][DEBUG] : Jeemyhomescs_Aucun équipement trouvé pour : #2 Erreur lors de la création de l'équipement
[2020-05-23 13:43:06][INFO] : Reçu sur Jeedom : *5*11*#2##
[2020-05-23 13:43:06][DEBUG] : Jeemyhomescs_Equipement : Array (     [trame] => *5*11*#2##     [format] => BUS_COMMAND     [mode] => UNKNOWN     [media] => SCS     [type] => UNKNOWN     [value] =>      [dimension] =>      [param] =>      [A] => #     [PL] => 2     [date] => 2020-05-23 13:43:06 )
[2020-05-23 13:43:06][DEBUG] : Jeemyhomescs_Aucun équipement trouvé pour : #2 Création de l'equipement
[2020-05-23 13:43:06][DEBUG] : Jeemyhomescs_Aucun équipement trouvé pour : #2 Erreur lors de la création de l'équipement
[2020-05-23 13:43:06][INFO] : Reçu sur Jeedom : *5*11*#5##
[2020-05-23 13:43:06][DEBUG] : Jeemyhomescs_Equipement : Array (     [trame] => *5*11*#5##     [format] => BUS_COMMAND     [mode] => UNKNOWN     [media] => SCS     [type] => UNKNOWN     [value] =>      [dimension] =>      [param] =>      [A] => #     [PL] => 5     [date] => 2020-05-23 13:43:06 )
[2020-05-23 13:43:06][DEBUG] : Jeemyhomescs_Aucun équipement trouvé pour : #5 Création de l'equipement
[2020-05-23 13:43:06][DEBUG] : Jeemyhomescs_Aucun équipement trouvé pour : #5 Erreur lors de la création de l'équipement
[2020-05-23 13:43:06][INFO] : Reçu sur Jeedom : *5*18*#6##
[2020-05-23 13:43:06][DEBUG] : Jeemyhomescs_Equipement : Array (     [trame] => *5*18*#6##     [format] => BUS_COMMAND     [mode] => UNKNOWN     [media] => SCS     [type] => UNKNOWN     [value] =>      [dimension] =>      [param] =>      [A] => #     [PL] => 6     [date] => 2020-05-23 13:43:06 )
[2020-05-23 13:43:06][INFO] : Reçu sur Jeedom : *5*18*#7##
[2020-05-23 13:43:06][DEBUG] : Jeemyhomescs_Aucun équipement trouvé pour : #6 Création de l'equipement
[2020-05-23 13:43:06][DEBUG] : Jeemyhomescs_Aucun équipement trouvé pour : #6 Erreur lors de la création de l'équipement
[2020-05-23 13:43:06][DEBUG] : Jeemyhomescs_Equipement : Array (     [trame] => *5*18*#7##     [format] => BUS_COMMAND     [mode] => UNKNOWN     [media] => SCS     [type] => UNKNOWN     [value] =>      [dimension] =>      [param] =>      [A] => #     [PL] => 7     [date] => 2020-05-23 13:43:06 )
[2020-05-23 13:43:06][INFO] : Reçu sur Jeedom : *5*18*#8##
[2020-05-23 13:43:06][DEBUG] : Jeemyhomescs_Equipement : Array (     [trame] => *5*18*#8##     [format] => BUS_COMMAND     [mode] => UNKNOWN     [media] => SCS     [type] => UNKNOWN     [value] =>      [dimension] =>      [param] =>      [A] => #     [PL] => 8     [date] => 2020-05-23 13:43:06 )
[2020-05-23 13:43:06][DEBUG] : Jeemyhomescs_Aucun équipement trouvé pour : #7 Création de l'equipement
[2020-05-23 13:43:06][DEBUG] : Jeemyhomescs_Aucun équipement trouvé pour : #7 Erreur lors de la création de l'équipement
[2020-05-23 13:43:06][DEBUG] : Jeemyhomescs_Aucun équipement trouvé pour : #8 Création de l'equipement
[2020-05-23 13:43:06][DEBUG] : Jeemyhomescs_Aucun équipement trouvé pour : #8 Erreur lors de la création de l'équipement
[2020-05-23 13:43:06][INFO] : Reçu sur Jeedom : *5*18*#6##
[2020-05-23 13:43:06][DEBUG] : Jeemyhomescs_Equipement : Array (     [trame] => *5*18*#6##     [format] => BUS_COMMAND     [mode] => UNKNOWN     [media] => SCS     [type] => UNKNOWN     [value] =>      [dimension] =>      [param] =>      [A] => #     [PL] => 6     [date] => 2020-05-23 13:43:06 )
[2020-05-23 13:43:06][DEBUG] : Jeemyhomescs_Aucun équipement trouvé pour : #6 Création de l'equipement
[2020-05-23 13:43:06][DEBUG] : Jeemyhomescs_Aucun équipement trouvé pour : #6 Erreur lors de la création de l'équipement
[2020-05-23 13:43:06][INFO] : Reçu sur Jeedom : *5*18*#8##
[2020-05-23 13:43:06][DEBUG] : Jeemyhomescs_Equipement : Array (     [trame] => *5*18*#8##     [format] => BUS_COMMAND     [mode] => UNKNOWN     [media] => SCS     [type] => UNKNOWN     [value] =>      [dimension] =>      [param] =>      [A] => #     [PL] => 8     [date] => 2020-05-23 13:43:06 )
[2020-05-23 13:43:06][DEBUG] : Jeemyhomescs_Aucun équipement trouvé pour : #8 Création de l'equipement
[2020-05-23 13:43:06][DEBUG] : Jeemyhomescs_Aucun équipement trouvé pour : #8 Erreur lors de la création de l'équipement

Alarme enclenchée

image

[2020-05-23 13:51:27][INFO] : Envoi depuis Jeedom : *#5*## : *5*1*##
[2020-05-23 13:51:27][DEBUG] : Fermeture du socket...
[2020-05-23 13:51:28][INFO] : Reçu sur Jeedom : *5*1*##
[2020-05-23 13:51:28][DEBUG] : Jeemyhomescs_Equipement : Array (     [trame] => *5*1*##     [format] => BUS_COMMAND     [mode] => UNKNOWN     [media] => SCS     [type] => UNKNOWN     [value] =>      [dimension] =>      [param] =>      [A] =>      [PL] =>      [date] => 2020-05-23 13:51:28 )
[2020-05-23 13:51:28][DEBUG] : Jeemyhomescs_BUS_COMMAND
[2020-05-23 13:51:28][INFO] : Reçu sur Jeedom : *5*5*##
[2020-05-23 13:51:28][ERROR] : Unknown type or status: UNKNOWN
[2020-05-23 13:51:28][DEBUG] : Jeemyhomescs_Equipement : Array (     [trame] => *5*5*##     [format] => BUS_COMMAND     [mode] => UNKNOWN     [media] => SCS     [type] => UNKNOWN     [value] =>      [dimension] =>      [param] =>      [A] =>      [PL] =>      [date] => 2020-05-23 13:51:28 )
[2020-05-23 13:51:28][DEBUG] : Jeemyhomescs_BUS_COMMAND
[2020-05-23 13:51:28][ERROR] : Unknown type or status: UNKNOWN
[2020-05-23 13:51:28][INFO] : Reçu sur Jeedom : *5*7*##
[2020-05-23 13:51:28][DEBUG] : Jeemyhomescs_Equipement : Array (     [trame] => *5*7*##     [format] => BUS_COMMAND     [mode] => UNKNOWN     [media] => SCS     [type] => UNKNOWN     [value] =>      [dimension] =>      [param] =>      [A] =>      [PL] =>      [date] => 2020-05-23 13:51:28 )
[2020-05-23 13:51:28][DEBUG] : Jeemyhomescs_BUS_COMMAND
[2020-05-23 13:51:28][ERROR] : Unknown type or status: UNKNOWN
[2020-05-23 13:51:28][INFO] : Reçu sur Jeedom : *5*18*#1##
[2020-05-23 13:51:28][DEBUG] : Jeemyhomescs_Equipement : Array (     [trame] => *5*18*#1##     [format] => BUS_COMMAND     [mode] => UNKNOWN     [media] => SCS     [type] => UNKNOWN     [value] =>      [dimension] =>      [param] =>      [A] => #     [PL] => 1     [date] => 2020-05-23 13:51:28 )
[2020-05-23 13:51:28][DEBUG] : Jeemyhomescs_Aucun équipement trouvé pour : #1 Création de l'equipement
[2020-05-23 13:51:28][DEBUG] : Jeemyhomescs_Aucun équipement trouvé pour : #1 Erreur lors de la création de l'équipement
[2020-05-23 13:51:28][INFO] : Reçu sur Jeedom : *5*11*#2##
[2020-05-23 13:51:28][DEBUG] : Jeemyhomescs_Equipement : Array (     [trame] => *5*11*#2##     [format] => BUS_COMMAND     [mode] => UNKNOWN     [media] => SCS     [type] => UNKNOWN     [value] =>      [dimension] =>      [param] =>      [A] => #     [PL] => 2     [date] => 2020-05-23 13:51:28 )
[2020-05-23 13:51:28][DEBUG] : Jeemyhomescs_Aucun équipement trouvé pour : #2 Création de l'equipement
[2020-05-23 13:51:28][DEBUG] : Jeemyhomescs_Aucun équipement trouvé pour : #2 Erreur lors de la création de l'équipement
[2020-05-23 13:51:28][INFO] : Reçu sur Jeedom : *5*11*#5##
[2020-05-23 13:51:28][DEBUG] : Jeemyhomescs_Equipement : Array (     [trame] => *5*11*#5##     [format] => BUS_COMMAND     [mode] => UNKNOWN     [media] => SCS     [type] => UNKNOWN     [value] =>      [dimension] =>      [param] =>      [A] => #     [PL] => 5     [date] => 2020-05-23 13:51:28 )
[2020-05-23 13:51:28][DEBUG] : Jeemyhomescs_Aucun équipement trouvé pour : #5 Création de l'equipement
[2020-05-23 13:51:28][DEBUG] : Jeemyhomescs_Aucun équipement trouvé pour : #5 Erreur lors de la création de l'équipement
[2020-05-23 13:51:28][INFO] : Reçu sur Jeedom : *5*11*#3##
[2020-05-23 13:51:28][DEBUG] : Jeemyhomescs_Equipement : Array (     [trame] => *5*11*#3##     [format] => BUS_COMMAND     [mode] => UNKNOWN     [media] => SCS     [type] => UNKNOWN     [value] =>      [dimension] =>      [param] =>      [A] => #     [PL] => 3     [date] => 2020-05-23 13:51:28 )
[2020-05-23 13:51:28][DEBUG] : Jeemyhomescs_Aucun équipement trouvé pour : #3 Création de l'equipement
[2020-05-23 13:51:28][DEBUG] : Jeemyhomescs_Aucun équipement trouvé pour : #3 Erreur lors de la création de l'équipement
[2020-05-23 13:51:28][INFO] : Reçu sur Jeedom : *5*11*#2##
[2020-05-23 13:51:28][INFO] : Reçu sur Jeedom : *5*18*#7##
[2020-05-23 13:51:28][DEBUG] : Jeemyhomescs_Equipement : Array (     [trame] => *5*11*#2##     [format] => BUS_COMMAND     [mode] => UNKNOWN     [media] => SCS     [type] => UNKNOWN     [value] =>      [dimension] =>      [param] =>      [A] => #     [PL] => 2     [date] => 2020-05-23 13:51:28 )
[2020-05-23 13:51:28][DEBUG] : Jeemyhomescs_Equipement : Array (     [trame] => *5*18*#7##     [format] => BUS_COMMAND     [mode] => UNKNOWN     [media] => SCS     [type] => UNKNOWN     [value] =>      [dimension] =>      [param] =>      [A] => #     [PL] => 7     [date] => 2020-05-23 13:51:28 )
[2020-05-23 13:51:28][DEBUG] : Jeemyhomescs_Aucun équipement trouvé pour : #2 Création de l'equipement
[2020-05-23 13:51:28][DEBUG] : Jeemyhomescs_Aucun équipement trouvé pour : #7 Création de l'equipement
[2020-05-23 13:51:28][DEBUG] : Jeemyhomescs_Aucun équipement trouvé pour : #2 Erreur lors de la création de l'équipement
[2020-05-23 13:51:28][DEBUG] : Jeemyhomescs_Aucun équipement trouvé pour : #7 Erreur lors de la création de l'équipement
[2020-05-23 13:51:28][INFO] : Reçu sur Jeedom : *5*18*#7##
[2020-05-23 13:51:28][DEBUG] : Jeemyhomescs_Equipement : Array (     [trame] => *5*18*#7##     [format] => BUS_COMMAND     [mode] => UNKNOWN     [media] => SCS     [type] => UNKNOWN     [value] =>      [dimension] =>      [param] =>      [A] => #     [PL] => 7     [date] => 2020-05-23 13:51:28 )
[2020-05-23 13:51:28][DEBUG] : Jeemyhomescs_Aucun équipement trouvé pour : #7 Création de l'equipement
[2020-05-23 13:51:28][DEBUG] : Jeemyhomescs_Aucun équipement trouvé pour : #7 Erreur lors de la création de l'équipement
[2020-05-23 13:51:28][INFO] : Reçu sur Jeedom : *5*18*#8##
[2020-05-23 13:51:28][DEBUG] : Jeemyhomescs_Equipement : Array (     [trame] => *5*18*#8##     [format] => BUS_COMMAND     [mode] => UNKNOWN     [media] => SCS     [type] => UNKNOWN     [value] =>      [dimension] =>      [param] =>      [A] => #     [PL] => 8     [date] => 2020-05-23 13:51:28 )
[2020-05-23 13:51:28][DEBUG] : Jeemyhomescs_Aucun équipement trouvé pour : #8 Création de l'equipement
[2020-05-23 13:51:28][DEBUG] : Jeemyhomescs_Aucun équipement trouvé pour : #8 Erreur lors de la création de l'équipement
[2020-05-23 13:51:28][INFO] : Reçu sur Jeedom : *5*18*#8##
[2020-05-23 13:51:28][DEBUG] : Jeemyhomescs_Equipement : Array (     [trame] => *5*18*#8##     [format] => BUS_COMMAND     [mode] => UNKNOWN     [media] => SCS     [type] => UNKNOWN     [value] =>      [dimension] =>      [param] =>      [A] => #     [PL] => 8     [date] => 2020-05-23 13:51:28 )
[2020-05-23 13:51:28][DEBUG] : Jeemyhomescs_Aucun équipement trouvé pour : #8 Création de l'equipement
[2020-05-23 13:51:28][DEBUG] : Jeemyhomescs_Aucun équipement trouvé pour : #8 Erreur lors de la création de l'équipement

Bonjour @fabx4,
C’est Ok pour les trames de l’alarme et des zones. J’arrive à toutes les remonter dans jeedom.
J’ai fini les modifs code + Template.
Romain.

Pour clarification, les sessions openwebnet se distinguent en deux groupes, les sessions « commands/action » et les sessions « events ».

Les sessions « commands » sont de courte durées (tu ne peux pas garder une session « commands » ouverte plus de deux minutes, elle sera fermée du coté gateway), c’est ce type de session qui est ouverte dans le code PHP à chaque envoie de trame (logs « Envoi depuis Jeedom : »), puis proprement fermée coté client dans le même code.

Ce que tu trouves après les deux points ici c’est la réponse reçue à la commande, la plupart du temps c’est une simple trame de ACK, pour l’alarme ça semble plus complet.
Quoi qu’il en soit c’est pas traité, c’est juste mis dans les logs pour information sur le retour d’état de la commande.

La gestion des trames reçues se fait dans une session « events » (qui sont relativement permanentes).
Cette session « events » est ouverte et gérée par le demon python qui reçoit les events, les sépare si besoin et les transmets à Jeedom pour traitement.

bon le problème de perte de trame semble plus se passer entre le python et le php dans le fichier myhomescsevent.py :

action = {'packettype' : "00", 'apikey' : str(config.apikey)}
	message = None
	message = b""
	logger.debug("Start Connect Event...")
	eventsocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

	eventsocket.connect((address, port))
	eventsocket.send(b"*99*1##")



	while 1:
		message = message+eventsocket.recv(1024)
		trame = re.search(b"(.*?##$)", message)
		if trame:
			trames = re.split("##", message)
			for trame in trames:
				if trame == "":
					continue
				trame = trame+"##"
				prm = trame.replace('*', 'Y')
				prm = prm.replace('#', 'Z')
				action['trame'] = str(prm)
				command = Command(config.trigger_url,action)
				command.run(timeout=config.trigger_timeout)
				if config.log_msg == True:
					try:
						file = open(config.log_msgfile,"a+")
						file.write("---------------------------------\n")
						file.write(time.strftime("%Y-%m-%d %H:%M:%S")+' Received data : => '+trame+'\n')
						file.close()
					except Exception, e:
						logger.error("Error when trying to write message log")
						logger.error("Exception: %s" % str(e))
						pass
				message = None
				message = b""
`
+
+  `<xml>
    <trigger>
        <message>..00</message>
        <action>curl -L -s "#ip_master#/plugins/myhomescs/core/php/jeemyhomescs.php?apikey=#apikey#&amp;trame=$trame$"</action>
    </trigger>
</xml>`

Je suis largué.

Je vais faire des refresh avec un scénario sur changement d’un état (alarme ou zone) pour le moment en espérant ne pas rater de trames…

Romain.

Merci pour les précisions.

J’ai effectivement vu la partie du code en python voir post précédant.
Pour l’alarme , il y a bien le ACK également à la fin :*#*1##
C’est une commande du type Status Request Frame, il y a donc la réponse (Statut de l’alarme et des zones) et le ACK à la fin.
Bon je suis électricien hein, je vais essayer de me tenir à ce que je sais faire :joy:

Romain.

C’est dans ce code python somme toute relativement simple que je perdais aussi des trames lorsque je tournais sur RPi 3b+. Je n’ai jamais su expliquer pourquoi.
Les retour d’info de l’énergie peuvent envoyer plusieurs dizaines de trames dans la même seconde, je pense que les retour d’info des différentes zones de l’alarme sont un peu pareil.

Passer à une machine x86 avec un processeur plus performant m’a permis de ne plus perdre de trames.

Autre remarque, je vois que les zones sont adressée en les nommant #1, #2, #3, etc…
Ça force à mapper ça sur A = # et PL = 1,2,3, etc… dans Jeedom.

Je ne sais pas si c’est très prudent d’utiliser # dans le logical ID d’un element, dans la mesure où c’est un caractère relativement réservé et dans Jeedom, et dans OpenWebNet.
Les # sont régulièrement supprimés/réinjectés à différents endroits du code dans Jeedom.

Et moi qui viens de mettre la Rpi avec SSD dans le tableau électrique. :sweat_smile::sob:

Oui, le décodage de la trame par le plugin adresse # en A et n en PL car la trame du who 5 pour les zones (max 9 d’où peut être le #) et du type 511*#2## au lieu de 10*11## par exemple sur du who 1.
J’arrive à adresser correctement les info avec un équipement créé avec logicID #n .
Par contre pour la centrale je suis obligé de forcer un ID 10 car pas de where dans la trame.
J’ai mis :

if  ($decrypted_trame["PL"] == '' || $decrypted_trame["PL"] == 0) {
      	 log::add('myhomescs','debug',"Centrale");
       	 $myhomescs = myhomescs::byLogicalId(10, 'myhomescs');
    

       	switch ($decrypted_trame["value"]) {
			case 'DESENCLENCHEE':
				$ALARME = 0;
            	$myhomescs->checkAndUpdateCmd('ALARME', $ALARME);
				break;
			case 'ENCLENCHEE':
				$ALARME = 1;
            	$myhomescs->checkAndUpdateCmd('ALARME', $ALARME);
				break;
            case 'ACTIF':
				$STATUS_SYSTEME = 'ACTIF';
            	$myhomescs->checkAndUpdateCmd('STATUS_SYSTEME', $STATUS_SYSTEME);
				break;
            case  'EN MAINTENANCE':
				$STATUS_SYSTEME = 'EN MAINTENANCE';
            	$myhomescs->checkAndUpdateCmd('STATUS_SYSTEME', $STATUS_SYSTEME);
				break;
            case  'BATTERIE DEFAUT':
				$BATTERIE = 0;
            	$myhomescs->checkAndUpdateCmd('BATTERIE', $BATTERIE);
				break;
			case  'BATTERIE OK':
				$BATTERIE = 1;
            	$myhomescs->checkAndUpdateCmd('BATTERIE', $BATTERIE);
				break;
           	case  'BATTERIE KO':
				$BATTERIE = 0;
            	$myhomescs->checkAndUpdateCmd('BATTERIE', $BATTERIE);
				break;
			case  'PAS DE RESEAU':
				$ALIMENTATION = 0;
            	$myhomescs->checkAndUpdateCmd('ALIMENTATION', $ALIMENTATION);
				break;
			case  'RESEAU OK':
				$ALIMENTATION = 1;
            	$myhomescs->checkAndUpdateCmd('ALIMENTATION', $ALIMENTATION);
				break;
			default:
				log::add('myhomescs','error', "Unknown centrale status : ".$decrypted_trame["value"]);
				$status = 0;
				break;

Pour les zones :

$myhomescs = myhomescs::byLogicalId($decrypted_trame["A"].$decrypted_trame["PL"], 'myhomescs');
		$family = $myhomescs->getConfiguration('family');
		$date = strtotime($decrypted_trame["date"]);
		$Zone = $decrypted_trame["PL"];
		log::add('myhomescs','debug',"LogicalID : ".$decrypted_trame["A"].$decrypted_trame["PL"]." date : ".$date." family : ".$family);

      
      switch ($decrypted_trame["value"]) {
			case 'ACTIVE':
				$ZONE = 1;
            	$myhomescs->checkAndUpdateCmd('ZONE', $ZONE);
				break;
			case 'NON ACTIVE':
				$ZONE = 0;
            	$myhomescs->checkAndUpdateCmd('ZONE', $ZONE);
				break;
            case 'INTRUSION':
				$STATUS_ZONE = 'INTRUSION';
            	$myhomescs->checkAndUpdateCmd('STATUS_ZONE', $STATUS_ZONE);
				break;
            case  'ANTI PANIC':
				$STATUS_ZONE = 'ANTI PANIC';
            	$myhomescs->checkAndUpdateCmd('STATUS_ZONE', $STATUS_ZONE);
				break;
            case  'TECHNIQUE':
				$STATUS_ZONE = 'TECHNIQUE';
            	$myhomescs->checkAndUpdateCmd('STATUS_ZONE', $STATUS_ZONE);
				break;
 											}

Romain.

Jeedom tourne sur un DiskStation DS918+