voilà j’ai fait tout fonctionner correctement :
- mise à jour du code de la classe:
public static function deamon_info()
{
$return = array();
$return['log'] = __CLASS__;
$return['state'] = 'nok';
$return['stateCookies'] = 'non lancé';
// Regarder si alexaapi.js est lancé
$pid = trim(shell_exec('ps ax | grep "resources/alexaapi.js" | grep -v "grep" | wc -l'));
if ($pid != '' && $pid != '0') $return['state'] = 'ok';
// Regarder si alexaapi.js est lancé
$pid = trim(shell_exec('ps ax | grep "resources/initCookie.js" | grep -v "grep" | wc -l'));
if ($pid != '' && $pid != '0') $return['stateCookies'] = 'lancé';
// Regarder si le cookie existe :alexa-cookie.json
$request = realpath(dirname(__FILE__) . '/../../resources/data/alexa-cookie.json');
if (file_exists($request)) $return['launchable'] = 'ok';
else {
$return['launchable'] = 'nok';
$return['launchable_message'] = "Cookie Amazon ABSENT ";
}
return $return;
}
public static function deamon_start($_debug = false)
{
self::deamon_stop();
$deamon_info = self::deamon_info();
if ($deamon_info['launchable'] != 'ok') throw new Exception(__('Veuillez vérifier la configuration', __FILE__));
log::add(__CLASS__, 'info', ' Lancement du démon alexaapi v2');
$url = network::getNetworkAccess('internal', 'proto:127.0.0.1:port:comp') . '/plugins/alexaapi/core/api/jeealexaapi.php?apikey=' . jeedom::getApiKey('alexaapi');
$log = $_debug ? '1' : '0';
$sensor_path = realpath(dirname(__FILE__) . '/../../resources');
$cmd = 'nice -n 19 node ' . $sensor_path . '/alexaapi.js ' . network::getNetworkAccess('internal') . ' ' . config::byKey('amazonserver', 'alexaapi', 'amazon.fr') . ' ' . config::byKey('alexaserver', 'alexaapi', 'alexa.amazon.fr') . ' ' . jeedom::getApiKey('alexaapi') . ' ' . log::getLogLevel(__CLASS__);
log::add('alexaapi', 'debug', 'Lancement démon alexaapi : ' . $cmd);
$result = exec('NODE_ENV=production nohup ' . $cmd . ' >> ' . log::getPathToLog(__CLASS__.'_node') . ' 2>&1 &');
//$cmdStart='nohup ' . $cmd . ' | tee >(grep "WS-MQTT">>'.log::getPathToLog('alexaapi_mqtt').') >(grep -v "WS-MQTT">>'. log::getPathToLog('alexaapi_node') . ')';
if (strpos(strtolower($result), 'error') !== false || strpos(strtolower($result), 'traceback') !== false) {
log::add( __CLASS__, 'error', $result);
return false;
}
$i = 0;
while ($i < 30) {
$deamon_info = self::deamon_info();
if ($deamon_info['state'] == 'ok') break;
sleep(1);
$i++;
}
if ($i >= 30) {
log::add('alexaapi', 'error', 'Impossible de lancer le démon alexaapi, vérifiez le port', 'unableStartDeamon');
return false;
}
message::removeAll('alexaapi', 'unableStartDeamon');
log::add(__CLASS__, 'info', ' Démon alexaapi lancé v2');
return true;
}
et résultat :