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 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
Un revenant
merci, je me suis arrêté à la partie qui m’intéressait
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
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 ?
Bonjour, est-ce que quelqu’un m’envoyer vers un tuto ou autre qui detaille comment creer un scenario avec du script svp? Je suis un peu nouveau. J’ai du zigbee et une module shelly zwave pour le chauffe eau. Celui ci marchait bien depuis 3 mois et tout a coup, le noeud passe en dead sans arret. je voudrais creer ce scenario base sur le script pour voir si ca change quelque chose. Meme si quand je ping, que je verifie la sante pour soigne le neoud, il ne revient pas toujours « Alive ». Quand il est alive, des que j’essaie d’allumer ou eteindre, il passe en « dead »… ca me rend fou… Merci. Sebastien