Module zwave dead

Je viens de tester avec le message d’alerte sous forme de SMS. Effectuivement, c’est sympa.
As-tu supprimé la liste des modules que tu testes dans ton log?
Je ne la vois plus apparaitre.
Ceci étant, si c’est le cas, je préfère, avoir la liste de ceux qui marchent ne présente pas vraiment d’intérêt.

Il faudrait faire la même chose pour les autres protocoles.
Un volontaire?

Je note merci beaucoup

oui j’ai mis un « edit » sur le poste du code initiale, ca ne servait que pour débug

Le tuto de Nechry est en effet une référence :slight_smile: pour les images… tout son code est sur github, plus simple à récupérer que les images!

Bonjour,

Bon j’ai pas été assez rapide, mais c’est bien le script dont je parlais.
Le mien est planifié toutes les 5 minutes.
Dans mon scénario j’ai 2 blocs code, le premier gère l’erreur « Not enough space in stream buffer detected » et le second test les noeuds morts.
Premier bloc :

$pathlog=log::getPathToLog('openzwaved');
if (file_exists($pathlog) && shell_exec('grep "Not enough space in stream buffer" ' . $pathlog . ' | wc -l') > 0) 
{
$scenario->setLog('Not enough space in stream buffer detected');
log::add('openzwave', 'error', 'Not enough space in stream buffer detected');
log::clear('openzwaved');
shell_exec('sudo pkill -f openzwaved.py');
openzwave::deamon_stop();
sleep(5);
openzwave::deamon_start();
}

Deuxième bloc :

//**********************************************************
// Parameters
//**********************************************************
$API_Key = 'API KEY';
$Ping_Wait = 15;
//**********************************************************


//**********************************************************
// Get list of all elements on sector
//**********************************************************
$scenario->setLog('**********************************************************');
$scenario->setLog('***** Get list *****');
$scenario->setLog('**********************************************************');
$url_GetInfo = 'http://localhost:8083/network?apikey=' .$API_Key .'&type=info&info=getNodesList';
$Alim_List = array();
$ToPing_List = array();

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

foreach($All_node as $key => $value){
	$Alim = $value["capabilities"]["isListening"];
	$Controller = $value["description"]["is_static_controller"];
	if(($Alim == 1) and ($Controller != 1)){
		$test = $value["description"]["product_name"];
		$Alim_List[] = $key;
	}
}
$scenario->setLog('Number of elements: ' .count($Alim_List));
//**********************************************************


//**********************************************************
// Get health of a list of elements
//**********************************************************
$scenario->setLog('**********************************************************');
$scenario->setLog('***** Health *****');
$scenario->setLog('**********************************************************');
foreach($Alim_List as $id){
	// $scenario->setLog('Module :'.$id);   
	$url_health = 'http://localhost:8083/node?apikey=' .$API_Key .'&node_id=' .$id .'&type=info&info=getHealth';
	$Node_health_tmp = file_get_contents($url_health);
	$Node_health = json_decode($Node_health_tmp);
	if ($Node_health->result->data->isFailed->value){
		$scenario->setLog('Module :'.$id .' is on error');	
		$ToPing_List[] = $id;
	}
	else{
		//$scenario->setLog('no problem for Module ' .$id);
	}
}
//**********************************************************


//**********************************************************
// Ping a list of elements
//**********************************************************
$scenario->setLog('**********************************************************');
$scenario->setLog('***** Ping *****'); 
$scenario->setLog('**********************************************************');
foreach($ToPing_List as $id){
	$scenario->setLog('Ping Module :'.$id);   
	$url_ping = 'http://localhost:8083/node?apikey=' .$API_Key .'&node_id=' .$id .'&type=action&action=testNode';
	file_get_contents($url_ping);
  	sleep($Ping_Wait);
}
//**********************************************************

J’ai jamais eu de problème avec ce scénario. Je suis en Jeedom V3 à jour.
Bonne soirée,

les codes complet des exemples sont dans mon github
c’est indiqué à la fin de l’article

1 « J'aime »

Un revenant :smiley:

merci, je me suis arrêté à la partie qui m’intéressait :grinning:

merci pour cet article complet, le lien que j’ai mis ne te dérange pas ?

Pas de soucis, merci pour l’info

tu peux remplacer ton 2ème code par celui que j’ai modifié, il est plus optimisé et sera moins gourmand en accès aux ressources

Ok je vais tester merci

Bonjour,

Je cherche en vain où mettre cette partie de code…pouvez vous m’aider ?
Avant de faire un scenario pur la fréquence de redémarrage du ping,
faut-il mettre ce code dans la partie « requête » du plugin script en mode « http »,« script » ?

Merci à vous

Bonjour,
C’est très simple.
Vous créez un scénario avec.un déclencheur programmé toutes les heures par exemple.
Dans le scénario, vous ne mettez qu’un bloc code dans lequel vous copiez ce code.
Ce scénario se lancera toutes les heures et enverra un ping vers tous les modules.

merci pour cette réponse super-rapide…je teste ça !

Avec plaisir
Bonne soirée

j’ai donc bien le code dans un scenario qui s’exécute toutes les demi heures.
J’ai bien dans mon log un message de « fin correcte de scenario » mais quand je vais voir dans le plugin Z-wave , en ouvrant la fenêtre « santé », le ping ne se met pas à l’heure de l’exécution du scenario.

Je ne comprends pas trop… une idée ? merci

Je ne me rappelle plus trop du code mais, de mémoire il me semble qu’il vérifie les modules qui ne répondent pas et qu’il ping ceux-ci.
Donc, si tu n’en a pas de DEAD, il ne fait pas de ping.
Mais je peux me tromper, il faudrait que je relise le code.

Oui, c’est bien ça, il teste la santé du nœud et le ping s’il y a un problème.
Si non, il passe au suivant.

ok parfait merci pour cete précision.
Bonne soiree

Bonjour,
Pourquoi cette surveillance n’est pas intégrée dans le plugin lui meme ?
C’est fort dommage.
Quitte a avoir cette surveillance en option si cela dérange certains
Mais ce serait plus sécurisé si cela était géré en dur
Lemars

2 « J'aime »