- Nom du scénario : Soin Z-wave - Objet parent : Système - Mode du scénario : schedule - Programmation : 15 0/6 * * * CODE (code) //********************************************************** // Parameters //********************************************************** $API_Key = xnuKpRr4J699YvndaAbMfL7lLrX8O6mF; $Ping_Wait = 15; $message = 'Module(s) DEAD : /n'; $tagerror = 0; //********************************************************** // Liste des modules DEAD et ACTIF //********************************************************** $scenario->setLog('**********************************************************'); $scenario->setLog('***** Liste des modules DEAD et ACTIF *****'); $scenario->setLog('**********************************************************'); // $scenario->setLog('Module :'.$id); $url_health = 'http://localhost:8083/network?apikey=' .$API_Key .'&type=info&info=getHealth'; $content = file_get_contents($url_health); $results = json_decode($content, true); $success = $results["state"]; if ($success == 'ok') { $scenario->setLog('***** ACCES OK'); $devices = $results["result"]["devices"]; $node_errors = array(); foreach ($devices as $node_id => $node_values) { $isFailed = $node_values["data"]["isFailed"]["value"]; $isEnable = $node_values["data"]["is_enable"]["value"]; //$scenario->setLog('DEBUG : Failed : '.$isFailed .' Enable : '.$isEnable); if ($isFailed & $isEnable) { $node_name = $node_values["data"]["description"]["name"]; if (count($node_errors) == 0) { $scenario->setLog('Module :'.$node_id .' '.$node_name.' est en erreur'); $message = $message.$node_id .' '.$node_name.' '; $ToPing_List[] = $node_id; $tagerror = 1; } else { $scenario->setLog('Module :'.$node_id .' '.$node_name.' est en OK'); } } } } else { $scenario->setLog('ERREUR API :'.$results["result"]); } //********************************************************** //********************************************************** // ALERTE //********************************************************** if ( $tagerror == 1 ) { $scenario->setLog('***** ENVOI ALERTE'); $options = array('title'=>'ALERTE ZWAVE', 'message'=> $message); cmd::byString('#68#')->execCmd($options, $cache=0); } //********************************************************** // 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); } CODE (code) $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(); }