Page 2 sur 2

Re: Modules Dead

Publié : 08 juin 2018, 06:18
par francoisceline
Bonjour,

Par pitié ne me jette pas des tomates dessus ;-)
Tout code est exactement ce que je cherche par contre j' ai plus l habitude de jongler entre les scénarios/virtuel/plugin, là je suis un peu largué.

Peux tu me dire comment l exploiter?

D avance merci
gblais77 a écrit :
22 mai 2018, 10:50
Voici un bout de code pour tester les modules zWave sur piles et renseigne les modules en erreur dans une variable:
il considère le module en erreur si il n'a pas communiqué depuis 2 fois son Wake-Up Interval (on autorise un problème de communication ponctuel).

Code : Tout sélectionner

//**********************************************************
// Parameters
//**********************************************************
$API_Key = 'CLE_API_ZWAVE;
$time_now = time();
//**********************************************************


//**********************************************************
// Get list baey element on error
//**********************************************************
$scenario->setLog('**********************************************************');
$scenario->setLog('***** Get list *****');
$scenario->setLog('**********************************************************');
$url_GetInfo = 'http://localhost:8083/network?apikey=' .$API_Key .'&type=info&info=getHealth';
$Error_Module = array();

$content = (file_get_contents($url_GetInfo));

$All_Info = json_decode($content, true);
$All_node = $All_Info["result"]["devices"];

//$scenario->setLog($content);

foreach($All_node as $Array_Key => $Array_value){
	$Alim = $Array_value["data"]["isListening"]["value"];
	if(($Alim == 0)){
		$Last_Info = $Array_value["data"]["lastReceived"]["updateTime"];
		$Wakeup_Interval = $Array_value["data"]["wakeup_interval"]["value"];
      	if(($Last_Info + ($Wakeup_Interval * 2)) < $time_now){
        	$scenario->setLog('Module :'.$Array_Key .' is on error' );
         												 $Module_Name = $Array_value["data"]["description"]["name"];
         												 $scenario->setLog('Module :'.$Module_Name .' is on error' );
          	$Error_Module[] = $Array_Key;
        }
	}
}

//**********************************************************
// Set variable for the next steps of the scenario
//**********************************************************
$scenario->setData("zWave_ModuleError_01", implode(',', $Error_Module));

Re: Modules Dead

Publié : 08 juin 2018, 09:07
par gblais77
Bonjour,

Il faut le mettre dans un "scenario" => "bloc code"
Ensuite il te crée/remplie un variable (zWave_ModuleError_01) que tu exploites comme tu veux.

par exemple a la suite de ce "bloc code" tu ajoutes des bloc (if, action...) qui t'alerte (mail, sms...) si la variable n'est pas vide ou si elle a été modifié depuis la dernière fois...

exemple:

Re: Modules Dead

Publié : 08 juin 2018, 21:23
par francoisceline
Merci pour ton aide ;-) je regarde demain et te tiens au courant.

Encore merci

Re: Modules Dead

Publié : 09 juin 2018, 11:43
par francoisceline
Bonjour,

J'ai reproduit ton code et scénario mais je galère un peu. J'ai un keyfob de chez fibaro qui apparaît en erreur (périphérique 92), pas grave==>la première fois que j'ai lancer le scénario il me la derouler entierrement en m'envoyer un mail=>parfait

Depuis j'ai simulé un pb, en enlevant une pile d'un détecteur de porte (periphérique 51)==>le scenar me vois le probleme mais l'expression est non valide.

Je te mets en pièce jointe les logs si tu peut regarder je t'en serai extrêmement reconnaissant ;-)

D'avance merci

Re: Modules Dead

Publié : 10 juin 2018, 22:10
par nechry
le code du scénario est bien mais il faut couvrir des petits cas de figures spécifiques, j'ai justement fais un Tuto sur le sujet avec des exemples:
https://nechry-automation.ch/2018/06/07/api-restful/

Re: Modules Dead

Publié : 10 juin 2018, 23:49
par francoisceline
Bonsoir nechry,

Merci pour le lien. C est la première fois que je fais ( que j' ai besoin) du code sur jeedom et je suis pas trop serein mais entre tes codes et celui de gblais je devrai m en sortir. Enfin j espère....;-)

Encore merci,

François

Re: Modules Dead

Publié : 12 juin 2018, 20:33
par francoisceline
@nechry

Je viens enfin de pouvoir tester ton code (j'ai un enfant en bas âge).Il marche parfaitement mais je galère à utiliser la variable qui stocke les nœuds en erreurs.Peux tu m'expliquer?

Merci d'avance

Re: Modules Dead

Publié : 12 juin 2018, 21:37
par francoisceline
Re,

J'ai avancé à exploiter la variable en basant mon scénario sur celui de gblais. Le problème est que j'ai une expression non valide quand j'ai deux (ou plus) modules en pannes (log et copie d'écran scenario en en pièce jointe).

Sais tu ce que je fais de mal?

D'avance merci



François

Re: Modules Dead

Publié : 12 juin 2018, 22:02
par gblais77
Bonjour,

il faut ajouter des " lors de la comparaison des variables:
"variable(zWave_ModuleError_01)" != "variable(zWave_ModuleError_01_previous)"

Re: Modules Dead

Publié : 12 juin 2018, 22:42
par francoisceline
Super ça fonctionne merci

Re: Modules Dead

Publié : 14 juin 2018, 11:45
par gblais77
Bonjour,

version un peu améliorée qui gère les modules sur pile et sur secteur.
Code:

Code : Tout sélectionner

//**********************************************************
// Parameters
//**********************************************************
$API_Key = 'ALE_API_ZWAVE';
$time_now = time();
$Timeout_Critical = 10800;
$Timeout_Warning = 3600;
$Error_Module_Battery = array();
$Error_Module_Sector = array();
$Ping_Wait = 5;
//**********************************************************


//**********************************************************
// Get list baey element on error
//**********************************************************
$scenario->setLog('**********************************************************');
$scenario->setLog('***** Get list *****');
$scenario->setLog('**********************************************************');
$url_GetInfo = 'http://localhost:8083/network?apikey=' .$API_Key .'&type=info&info=getHealth';
$content = (file_get_contents($url_GetInfo));
$All_Info = json_decode($content, true);
$HTTP_success = $All_Info["state"];
//Test if Web API is OK
if($HTTP_success != "ok"){
	$scenario->setLog("Z-Wave API error: " .$content);
}
else{
	$All_node = $All_Info["result"]["devices"];
	foreach($All_node as $Array_Key => $Array_value){
		// ==============================
		// Get information
		// ==============================
		$Alim = $Array_value["data"]["isListening"]["value"];
		$isEnabled = $Array_value["data"]["is_enable"]["value"];
		$isFailed = $Array_value["data"]["isFailed"]["value"];
		$Last_Info = $Array_value["data"]["lastReceived"]["updateTime"];
		$TimeOut = $time_now - $Last_Info;
		$Controller = $Array_value["data"]["type"]["value"];
		$Module_Name = $Array_value["data"]["description"]["name"];
		// ==============================
		
		// ==============================
		// Battery module
		// ==============================
		if(($Alim == 0) AND $isEnabled){
			$Wakeup_Interval = $Array_value["data"]["wakeup_interval"]["value"];
			$Time_limit = $Wakeup_Interval * 2;
			if(($TimeOut >= $Time_limit) OR ($isFailed)){
				$scenario->setLog('Module :'.$Array_Key ."/" .$Module_Name .' is on error' );
				$Error_Module_Battery[] = $Array_Key;
			}
		}
		// ==============================
		
		// ==============================
		// Sector module
		// ==============================
		elseif(($Alim == 1) AND $isEnabled AND ($Controller != "Static PC Controller")){
			//OK
			if(($TimeOut < $Timeout_Warning) OR ($isFailed)){
				//$scenario->setLog('Module :'.$Array_Key ."/" .$Module_Name .' is OK');
			}
			//Warning
			elseif($TimeOut <= $Timeout_Critical){
				$scenario->setLog('Ping Module :'.$Array_Key ."/" .$Module_Name );   
				$url_ping = 'http://localhost:8083/node?apikey=' .$API_Key .'&node_id=' .$Array_Key .'&type=action&action=testNode';
				file_get_contents($url_ping);
				sleep($Ping_Wait);
			}
			//Critical
			if(($TimeOut > $Timeout_Critical) OR ($isFailed)){
				$scenario->setLog('Module :'.$Array_Key ."/" .$Module_Name .' is KO');
				$Error_Module_Sector[] = $Array_Key;
				$url_sendNodeInformation = 'http://localhost:8083/node?apikey=' .$API_Key .'&node_id=' .$id .'&type=action&action=hasNodeFailed';
				file_get_contents($url_sendNodeInformation);
				sleep($Ping_Wait);
			}
		}
		// ==============================
	}
}
//**********************************************************


//**********************************************************
// Set variable for the next steps of the scenario
//**********************************************************
$scenario->setData("zWave_ModuleError_Battery", implode(',', $Error_Module_Battery));
$scenario->setData("zWave_ModuleError_Sector", implode(',', $Error_Module_Sector));

$scenario->setLog('**********************************************************');
$scenario->setLog('***** Fin *****');
$scenario->setLog('**********************************************************');
//**********************************************************
Scenario:
ZWave_Scenario.jpg
ZWave_Scenario.jpg (210.35 Kio) Consulté 2164 fois

Fonctionnement:
Control_ZWave_Modules.png
Control_ZWave_Modules.png (112.82 Kio) Consulté 2164 fois

Re: Modules Dead

Publié : 14 juin 2018, 16:52
par francoisceline
Super merci. Je me demande si avec ta surveillance des modules en secteurs on pourrait pas faire une surveillance anti brouillage. Par contre ça implique de diminuer la fréquence de lancement du scénario à quelques minutes et dissocier le scénar module secteur avec le scénar module batterie. Je vais voir ça dès que possible.

En tous cas encore merci

Re: Modules Dead

Publié : 17 juin 2018, 12:31
par francoisceline
Bonjour,

J'ai appliqué ton nouveau code.Le problème est que mes trois sirènes intérieurs et mon module télérupteur qubino sont détecter comme KO. La quinzaine d'autres périphériques (module volet roulant, prise fibaro et fgd212)==>pas de soucis.

Je te laisse le log en pièce jointe si tu as une idée ;-)

Merci d'avance

Re: Modules Dead

Publié : 18 juin 2018, 22:34
par gblais77
Bonjour,

il faudrait regarder l'état des modules dans la santé ZWave

Re: Modules Dead

Publié : 18 juin 2018, 23:01
par francoisceline
Bonsoir,

J avais regarder sur le moment la santé zwave==> pas de soucis.
Ce matin à 06h20 les trois sirènes ne sont plus en erreurs. J ai mis une programmation du scénario toutes les 20 minutes.J imagine qu il y a une histoire de ping qui s'est déroulé à 06h00. Depuis ce matin pas de soucis...bizarre ;-)

En tous cas merci

Re: Modules Dead

Publié : 18 juin 2018, 23:22
par gblais77
Peut-être parce que c'était la 1ere utilisation:
- sirenne OK mais pas de communication depuis plus de 3H00 (pas de soucis)
- pour le scénario: pas de communication depuis plus de 3H00 = erreur (parceque il fait des ping si la comm est entre 1H et 3H)

j'ajouterai un ping si la communication est superieur à 3H (actuellement il fait juste une tentative de réparation qui ne sert a rien si tout va bien)

je ne pense pas être très claire...

Re: Modules Dead

Publié : 18 juin 2018, 23:48
par francoisceline
Tu dois avoir raison . Cela doit être lié à la première utilisation et au timing des trois heures. Le module télérupteur qubino qui était aussi en défaut au départ à cesser d être KO dès lors que j allume la lampe ( communication avec jeedom). Les autres modules sur secteur ( prise/ volet roulant)envois tous l infos de leurs puissance à jeedom ( com avec jeedom).

Si je peux ce weekend je vais essayer de modifier ton code pour en faire un détecteur de brouillage ( vérif des sirènes qui ont leurs batterie interne donc si plus de communications avec les trois ce n' est pas une coïncidence ;-) )

Re: Modules Dead

Publié : 19 juin 2018, 13:40
par spark
Bonjour,


J'ai depuis plusieurs temps un module FGS-222 qui apparaît en DEAD dans jeedom mais il fini par revenir seul OK en 2 minutes. Je n'ai pas d'autres modules qui bug.


J'ai trouvé dans ce sujet sur le forum des explications mais je n'ai pas trop envie de me lancer dans des code complexe qui ne corrige pas le problème mais ne sont que des "rustines" pour en cas de problème. Je n'ai jamais le temps de lancer une commande ping pour confirmer que j'ai le même problème ou non.

Vous parlez egalement de module sur pile principalement, moi ce n'est pas mon cas

J'ai également regardé le blog de @Nechry blog et il parle d'une méthode mais elle me parait encore plus complexe que les autres.
API RESTful du plugin ZWave

Merci d'avance si vous avez des idée ou des sujet

(j'utilise la dernière version de jeedom et du plugin)

Re: Modules Dead

Publié : 25 avr. 2019, 17:21
par lithium73fr
Le code fonctionne bien mais j'ai plusieurs faux positifs (modules qui sont détectés comme HS alors qu'ils sont en réalité OK). Surtout sur des modules secteurs