Module zwave dead

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 »

Est-ce que certains d’entre vous qui utilisez ce script, avez des détecteurs d’ouverture NEOCOOLCAM de ce type là ?

Tous les miens ont une valeur ["wakeup_interval"]["next_wakeup"] dans le passé, systématiquement. Pourtant les modules fonctionnent bien. Le script n’est donc pas à remettre en question, mais je me demande si ces modules implémentent correctement le protocole ZWave du coup…

Quelqu’un a déjà fait le même constat ?