public static function health() { $return = array(); $demon_state = self::deamonRunning(); $return[] = array('test' => __('Démon local', __FILE__), 'result' => $demon_state ? __('OK', __FILE__) : __('NOK', __FILE__), 'advice' => $demon_state ? '' : __('Peut être normal si vous êtes en déporté', __FILE__), 'state' => $demon_state); $version = openzwave::getVersion('openzwave'); $return[] = array('test' => __('Version d\'openzwave', __FILE__), 'result' => $version, 'advice' => $demon_state ? '' : __('Mettez à jour les dépendances', __FILE__), 'state' => version_compare(config::byKey('openzwave_version', 'openzwave'), $version, '<=')); $compilation = openzwave::compilationOk(); $return[] = array('test' => __('Compilation', __FILE__), 'result' => $compilation ? __('OK', __FILE__) : __('NOK', __FILE__), 'advice' => $compilation ? '' : __('Mettez à jour les dépendances', __FILE__), 'state' => $compilation); if (config::byKey('jeeNetwork::mode') == 'master') { $cron = cron::byClassAndFunction('openzwave', 'pull'); $running = false; if (is_object($cron)) { $running = $cron->running(); } $return[] = array('test' => __('Tâche Z-Wave', __FILE__), 'result' => $running ? __('OK', __FILE__) : __('NOK', __FILE__), 'advice' => $running ? '' : __('Allez sur la page du moteur des tâches et vérifiez lancer la tache openzwave::pull', __FILE__), 'state' => $running); foreach (jeeNetwork::byPlugin('openzwave') as $jeeNetwork) { try { $demon_state = $jeeNetwork->sendRawRequest('deamonRunning', array('plugin' => 'openzwave')); } catch (Exception $e) { $demon_state = false; } $return[] = array('test' => __('Démon sur ', __FILE__) . $jeeNetwork->getName(), 'result' => $demon_state ? __('OK', __FILE__) : __('NOK', __FILE__), 'advice' => '', 'state' => $demon_state); $version = $jeeNetwork->sendRawRequest('getVersion', array('plugin' => 'openzwave', 'module' => 'openzwave')); $return[] = array('test' => __('Version d\'openzwave sur ', __FILE__) . $jeeNetwork->getName(), 'result' => $version, 'advice' => $demon_state ? '' : __('Mettez à jour les dépendances', __FILE__), 'state' => version_compare(config::byKey('openzwave_version', 'openzwave'), $version, '<=')); $compilation = $jeeNetwork->sendRawRequest('compilationOk', array('plugin' => 'openzwave')); $return[] = array('test' => __('Compilation sur', __FILE__) . $jeeNetwork->getName(), 'result' => $compilation ? __('OK', __FILE__) : __('NOK', __FILE__), 'advice' => $compilation ? '' : __('Mettez à jour les dépendances', __FILE__), 'state' => $compilation); } } return $return; }
function openzwave_update() { if (openzwave::deamonRunning()) { echo 'Stop zwave network...'; openzwave::stopDeamon(); echo "OK\n"; } echo 'Stop cron...'; $cron = cron::byClassAndFunction('openzwave', 'pull'); if (config::byKey('jeeNetwork::mode') != 'slave') { if (!is_object($cron)) { $cron = new cron(); } $cron->setClass('openzwave'); $cron->setFunction('pull'); $cron->setEnable(1); $cron->setDeamon(1); $cron->setDeamonSleepTime(0.5); $cron->setTimeout(1440); $cron->setSchedule('* * * * *'); $cron->save(); $cron->stop(); } else { if (is_object($cron)) { $cron->remove(); } } echo "OK\n"; echo 'Check zwave system...'; if (count(eqLogic::byType('zwave')) > 0) { log::add('openzwave', 'error', 'Attention vous etes sur la nouvelle version d\'openzwave, des actions de votre part sont necessaire merci d\'aller voir https://jeedom.fr/blog/?p=1576'); } if (config::byKey('port', 'openzwave', 'none') != 'none') { if (method_exists('openzwave', 'getVersion')) { if (version_compare(config::byKey('openzwave_version', 'openzwave'), openzwave::getVersion('openzwave'), '>')) { if (jeedom::getHardwareName() == 'Jeedomboard') { config::save('allowStartDeamon', 0, 'openzwave'); openzwave::updateOpenzwave(false); config::save('allowStartDeamon', 1, 'openzwave'); } else { log::add('openzwave', 'error', __('Attention votre version d\'openzwave est dépassée sur le démon local, il faut ABSOLUMENT la mettre à jour', __FILE__)); } } } } if (config::byKey('jeeNetwork::mode') == 'master') { foreach (jeeNetwork::byPlugin('openzwave') as $jeeNetwork) { try { if ($jeeNetwork->configByKey('port', 'openzwave', 'none') != 'none') { if (version_compare($jeeNetwork->sendRawRequest('getVersion', array('plugin' => 'openzwave', 'module' => 'openzwave')), openzwave::getVersion('openzwave'), '>')) { log::add('openzwave', 'error', __('Attention votre version d\'openzwave est dépassée sur', __FILE__) . ' ' . $jeeNetwork->getName() . ' ' . __('il faut ABSOLUMENT la mettre à jour', __FILE__)); } } } catch (Exception $e) { } } } echo "OK\n"; }
function openzwave_update() { log::add('openzwave', 'error', __('Après toute installation/mise à jour pensez bien à mettre à jour les dépendances Openzwave (voir documentation)', __FILE__)); if (!file_exists(dirname(__FILE__) . '/../data')) { mkdir(dirname(__FILE__) . '/../data'); } shell_exec('cp -R /opt/python-openzwave/xml_backups ' . dirname(__FILE__) . '/../data'); shell_exec('cp -R /opt/python-openzwave/zwcfg_*.xml ' . dirname(__FILE__) . '/../data'); shell_exec('rm -rf /opt/python-openzwave/xml_backups'); shell_exec('rm -rf /opt/python-openzwave/zwcfg_*.xml'); config::save('allowStartDeamon', 0, 'openzwave'); echo 'Stop zwave network...'; openzwave::stop(); openzwave::stopDeamon(); echo "OK\n"; echo 'Stop cron...'; $cron = cron::byClassAndFunction('openzwave', 'pull'); if (is_object($cron)) { $cron->remove(); } echo "OK\n"; echo 'Check zwave system...'; if (count(eqLogic::byType('zwave')) > 0) { log::add('openzwave', 'error', 'Attention vous etes sur la nouvelle version d\'openzwave, des actions de votre part sont necessaire merci d\'aller voir https://jeedom.fr/blog/?p=1576'); } if (config::byKey('port', 'openzwave', 'none') != 'none') { if (method_exists('openzwave', 'getVersion')) { if (version_compare(config::byKey('openzwave_version', 'openzwave'), openzwave::getVersion('openzwave'), '>')) { if (jeedom::getHardwareName() == 'Jeedomboard') { openzwave::updateOpenzwave(false); } else { log::add('openzwave', 'error', __('Attention votre version d\'openzwave est dépassée sur le démon local, il faut ABSOLUMENT la mettre à jour', __FILE__)); } } } } if (config::byKey('jeeNetwork::mode') == 'master') { foreach (jeeNetwork::byPlugin('openzwave') as $jeeNetwork) { try { if ($jeeNetwork->configByKey('port', 'openzwave', 'none') != 'none') { if (version_compare($jeeNetwork->sendRawRequest('getVersion', array('plugin' => 'openzwave', 'module' => 'openzwave')), openzwave::getVersion('openzwave'), '>')) { log::add('openzwave', 'error', __('Attention votre version d\'openzwave est dépassée sur', __FILE__) . ' ' . $jeeNetwork->getName() . ' ' . __('il faut ABSOLUMENT la mettre à jour', __FILE__)); } } } catch (Exception $e) { } } } echo "OK\n"; echo 'Redemarrage zwave network...'; try { config::save('allowStartDeamon', 1, 'openzwave'); openzwave::runDeamon(); } catch (Exception $e) { } echo "OK\n"; }
public static function checkAndCollect() { try { if (date('Gi') >= 500 && date('Gi') < 505) { history::archive(); } } catch (Exception $e) { log::add('history', 'error', 'history::archive : ' . $e->getMessage()); } try { network::cron(); } catch (Exception $e) { log::add('network', 'error', 'network::cron : ' . $e->getMessage()); } try { eqLogic::checkAlive(); connection::cron(); if (config::byKey('jeeNetwork::mode') != 'slave') { jeeNetwork::pull(); } } catch (Exception $e) { } try { cmd::collect(); } catch (Exception $e) { log::add('cmd', 'error', 'cmd::collect : ' . $e->getMessage()); } try { history::historize(); } catch (Exception $e) { log::add('history', 'error', 'history::archive : ' . $e->getMessage()); } }
<input type="checkbox" class="configKey bootstrapSwitch" data-l1key="directPush" /> </div> </div> <div class="form-group"> <label class="col-sm-4 control-label">{{Gestion du démon}}</label> <div class="col-sm-8"> <a class="btn btn-success" id="bt_startopenZwaveDemon"><i class='fa fa-play'></i> {{(Re)démarrer}}</a> <a class="btn btn-danger" id="bt_stopopenZwaveDemon"><i class='fa fa-stop'></i> {{Arrêter}}</a> <a class="btn btn-warning" id="bt_launchOpenZwaveInDebug"><i class="fa fa-exclamation-triangle"></i> {{Lancer en mode debug}}</a> </div> </div> </fieldset> </form> <?php if (config::byKey('jeeNetwork::mode') == 'master') { foreach (jeeNetwork::byPlugin('openzwave') as $jeeNetwork) { ?> <form class="form-horizontal slaveConfig" data-slave_id="<?php echo $jeeNetwork->getId(); ?> "> <fieldset> <legend>{{Démon sur l'esclave}} <?php echo $jeeNetwork->getName(); ?> </legend> <div class="form-group"> <label class="col-lg-4 control-label">{{Port clé Z-Wave}}</label> <div class="col-lg-4"> <select class="slaveConfigKey form-control" data-l1key="port"> <option value="none">{{Aucun}}</option>
break; } } } foreach ($eqLogic->getCmd('info', $result['instance'] . '.' . $result['CommandClass'], null, true) as $cmd) { if ($cmd->getConfiguration('value') == 'data[' . $result['index'] . '].val') { $cmd->handleUpdateValue($result); } } } } } } if (isset($results['controller'])) { if (isset($results['controller']['state'])) { $jeeNetwork = jeeNetwork::byId($results['serverId']); if (is_object($jeeNetwork) || $results['serverId'] == 0) { event::add('zwave::controller.data.controllerState', array('name' => $results['serverId'] == 0 ? 'local' : $jeeNetwork->getName(), 'state' => $results['controller']['state']['value'], 'serverId' => $results['serverId'])); } } if (isset($results['controller']['excluded'])) { event::add('jeedom::alert', array('level' => 'warning', 'message' => __('Un périphérique Z-Wave est en cours d\'exclusion. Logical ID : ', __FILE__) . $results['controller']['excluded']['value'])); sleep(2); openzwave::syncEqLogicWithOpenZwave($results['serverId'], $results['controller']['excluded']['value']); } if (isset($results['controller']['included'])) { for ($i = 0; $i < 10; $i++) { event::add('jeedom::alert', array('level' => 'warning', 'message' => __('Nouveau module Z-Wave détecté. Début de l\'intégration.Pause de ', __FILE__) . (10 - $i) . __(' pour synchronisation avec le module', __FILE__))); sleep(1); } event::add('jeedom::alert', array('level' => 'warning', 'message' => __('Inclusion en cours...', __FILE__)));
header("Status: 404 Not Found"); header('HTTP/1.0 404 Not Found'); $_SERVER['REDIRECT_STATUS'] = 404; echo "<h1>404 Not Found</h1>"; echo "The page that you have requested could not be found."; exit; } require_once dirname(__FILE__) . '/../../../core/php/core.inc.php'; echo "Début de la migration vers openzwave\n"; $server_convertion = array(1 => 1, 2 => 2, 3 => 3); for ($i = 1; $i <= 3; $i++) { if (config::byKey('zwaveAddr' . $i, 'zwave') != '' && config::byKey('zwaveAddr' . $i, 'zwave') != -1) { if (config::byKey('zwaveAddr' . $i, 'zwave') == '127.0.0.1' || config::byKey('zwaveAddr' . $i, 'zwave') == 'localhost') { $server_convertion[$i] = 0; } else { foreach (jeeNetwork::all() as $jeeNetwork) { if (config::byKey('zwaveAddr' . $i, 'zwave') == $jeeNetwork->getRealIp()) { $server_convertion[$i] = $jeeNetwork->getId(); } } } } } foreach (eqLogic::byType('zwave') as $eqLogic) { $eqLogic->setEqType_name('openzwave'); $server_id = $eqLogic->getConfiguration('serverID', 1); if (isset($server_convertion[$server_id])) { $server_id = $server_convertion[$server_id]; } else { $server_id = 0; }
$jsonrpc = $jeeNetwork->getJsonRpc(); if (!$jsonrpc->sendRequest('stopDeamon', array('plugin' => 'openzwave'))) { throw new Exception($jsonrpc->getError(), $jsonrpc->getErrorCode()); } } else { openzwave::stopDeamon(); if (openzwave::deamonRunning()) { throw new Exception(__('Impossible d\'arrêter le démon', __FILE__)); } config::save('allowStartDeamon', 0, 'openzwave'); } ajax::success(); } if (init('action') == 'startDeamon') { if (init('type', 'local') == 'remote') { $jeeNetwork = jeeNetwork::byId(init('id')); if (!is_object($jeeNetwork)) { throw new Exception(__('Impossible de trouver l\'esclave : ', __FILE__) . init('id')); } $jsonrpc = $jeeNetwork->getJsonRpc(); if (!$jsonrpc->sendRequest('runDeamon', array('plugin' => 'openzwave', 'debug' => init('debug', 0)))) { throw new Exception($jsonrpc->getError(), $jsonrpc->getErrorCode()); } } else { config::save('allowStartDeamon', 1, 'openzwave'); $port = config::byKey('port', 'openzwave', 'none'); if ($port == 'none') { ajax::success(); } openzwave::stopDeamon(); if (openzwave::deamonRunning()) {
echo '</select> </div> </div> <div class="form-group"> <label class="col-lg-4 control-label">Mode Debug, cela peut ralentir le systeme</label> <div class="col-lg-4"> <input type="checkbox" class="configKey" data-l1key="enableLogging" /> </div> </div> </fieldset> </form> <form class="form-horizontal"> <fieldset>'; foreach (jeeNetwork::byPlugin('bluetooth') as $jeeNetwork) { $id_sat = $jeeNetwork->getId(); $jsonrpc = $jeeNetwork->getJsonRpc(); echo '<div class="config-remote" id=' . $jeeNetwork->getId() . '>'; echo '<u>Configuration pour le serveur distant : <b>' . $jeeNetwork->getName() . '</b></u>'; echo '<div class="form-group"> <label class="col-lg-4 control-label">Port Bluetooth</label> <div class="col-lg-4"> <select class="configKey form-control portusb" data-l1key="port' . $id_sat . '"> <option value="">Aucun</option>'; foreach ($jeeNetwork->sendRawRequest('jeedom::getUsbMapping') as $name => $value) { echo '<option value="' . $name . '">' . $name . ' (' . $value . ')</option>'; } echo '</select> </div> </div>
public static function syncconfOpenzwave($_background = true) { if (config::byKey('jeeNetwork::mode') == 'master') { foreach (jeeNetwork::byPlugin('openzwave') as $jeeNetwork) { try { $jeeNetwork->sendRawRequest('syncconfOpenzwave', array('plugin' => 'openzwave')); } catch (Exception $e) { } } } log::remove('openzwave_syncconf'); $cmd = 'sudo /bin/bash ' . dirname(__FILE__) . '/../../ressources/syncconf.sh'; if ($_background) { $cmd .= ' >> ' . log::getPathToLog('openzwave_syncconf') . ' 2>&1 &'; } log::add('openzwave_syncconf', 'info', $cmd); shell_exec($cmd); }
jeedom::rebootSystem(); $jsonrpc->makeSuccess('ok'); } if ($jsonrpc->getMethod() == 'jeeNetwork::update') { jeedom::update('', 0); $jsonrpc->makeSuccess('ok'); } if ($jsonrpc->getMethod() == 'jeeNetwork::checkUpdate') { update::checkAllUpdate(); $jsonrpc->makeSuccess('ok'); } if ($jsonrpc->getMethod() == 'jeeNetwork::receivedBackup') { if (config::byKey('jeeNetwork::mode') == 'slave') { throw new Exception(__('Seul un maître peut recevoir une sauvegarde', __FILE__)); } $jeeNetwork = jeeNetwork::byId($params['slave_id']); if (!is_object($jeeNetwork)) { throw new Exception(__('Aucun esclave correspondant à l\'id : ', __FILE__) . $params['slave_id']); } if (substr(config::byKey('backup::path'), 0, 1) != '/') { $backup_dir = dirname(__FILE__) . '/../../' . config::byKey('backup::path'); } else { $backup_dir = config::byKey('backup::path'); } $uploaddir = $backup_dir . '/slave/'; if (!file_exists($uploaddir)) { mkdir($uploaddir); } if (!file_exists($uploaddir)) { throw new Exception('Répertoire de téléversement non trouvé : ' . $uploaddir); }
public static function sendToController($destination, $sensor, $command, $acknowledge, $type, $payload) { if (config::byKey('externalDeamon', 'mySensors', 0) == 2) { $jeeSlave = jeeNetwork::byId(config::byKey('jeeSlave', 'mySensors')); $urlNode = getIpFromString($jeeSlave->getIp()); } else { $urlNode = "127.0.0.1"; } log::add('mySensors', 'info', $urlNode); $msg = $destination . ";" . $sensor . ";" . $command . ";" . $acknowledge . ";" . $type . ";" . $payload; log::add('mySensors', 'info', $msg); $fp = fsockopen($urlNode, 8019, $errno, $errstr); if (!$fp) { echo "ERROR: {$errno} - {$errstr}<br />\n"; } else { fwrite($fp, $msg); fclose($fp); } }
if (!isset($NO_CLOUD_BAKCUP) || $NO_CLOUD_BAKCUP == false) { if (config::byKey('backup::cloudUpload') == 1 && init('noCloudUpload', 0) == 0) { echo __('Envoi de la sauvegarde dans le cloud...', __FILE__); try { market::sendBackup($backup_dir . '/' . $bakcup_name); } catch (Exception $e) { log::add('backup', 'error', $e->getMessage()); echo '/!\\ ' . br2nl($e->getMessage()) . ' /!\\'; } echo __("OK", __FILE__) . "\n"; } } if (config::byKey('jeeNetwork::mode') == 'slave') { echo __('Envoi de la sauvegarde sur le maître...', __FILE__); try { jeeNetwork::sendBackup($backup_dir . '/' . $bakcup_name); } catch (Exception $e) { log::add('backup', 'error', $e->getMessage()); echo '/!\\ ' . br2nl($e->getMessage()) . ' /!\\'; } echo __("OK", __FILE__) . "\n"; } echo __("Nom du backup : ", __FILE__) . $backup_dir . '/' . $bakcup_name . "\n"; echo __("***************Fin de la sauvegarde de Jeedom***************\n", __FILE__); echo "[END BACKUP SUCCESS]\n"; } catch (Exception $e) { echo __('Erreur durant la sauvegarde : ', __FILE__) . br2nl($e->getMessage()); echo __('Détails : ', __FILE__) . print_r($e->getTrace()); echo "[END BACKUP ERROR]\n"; throw $e; }
} if (init('action') == 'getNodeJsKey') { ajax::success(config::byKey('nodeJsKey')); } if (init('action') == 'addKey') { if (!isConnect('admin')) { throw new Exception(__('401 - Accès non autorisé', __FILE__)); } $values = json_decode(init('value'), true); foreach ($values as $key => $value) { if ($key == 'market::password' && !preg_match('/^[0-9a-f]{40}$/i', $value)) { $value = sha1($value); } config::save($key, jeedom::fromHumanReadable($value), init('plugin', 'core')); if ($key == 'internalAddr') { jeeNetwork::pull(); } if ($key == 'market::allowDNS') { if ($value == 1) { if (!network::dns_run()) { network::dns_start(); } } else { if (network::dns_run()) { network::dns_stop(); } } } } ajax::success(); }
public static function cron() { if (!self::isStarted()) { $cache = cache::byKey('jeedom::usbMapping'); $cache->remove(); foreach (cron::all() as $cron) { if ($cron->running() && $cron->getClass() != 'jeedom' && $cron->getFunction() != 'cron') { try { $cron->halt(); } catch (Exception $e) { } } } try { jeedom::start(); } catch (Exception $e) { } try { plugin::start(); } catch (Exception $e) { } touch('/tmp/jeedom_start'); self::event('start'); log::add('core', 'info', 'Démarrage de Jeedom OK'); } self::isDateOk(); try { $c = new Cron\CronExpression(config::byKey('update::check'), new Cron\FieldFactory()); if ($c->isDue()) { $lastCheck = strtotime(config::byKey('update::lastCheck')); if (strtotime('now') - $lastCheck > 3600) { if (config::byKey('update::auto') == 1) { update::checkAllUpdate(); jeedom::update('', 0); } else { config::save('update::check', rand(1, 59) . ' ' . rand(6, 7) . ' * * *'); update::checkAllUpdate(); $updates = update::byStatus('update'); if (count($updates) > 0) { $toUpdate = ''; foreach ($updates as $update) { $toUpdate .= $update->getLogicalId() . ','; } message::add('update', __('De nouvelles mises à jour sont disponibles : ', __FILE__) . trim($toUpdate, ','), '', 'newUpdate'); } } } } $c = new Cron\CronExpression('35 00 * * 0', new Cron\FieldFactory()); if ($c->isDue()) { cache::clean(); DB::optimize(); } $c = new Cron\CronExpression('*/10 * * * *', new Cron\FieldFactory()); if ($c->isDue()) { try { try { network::cron(); } catch (Exception $e) { log::add('network', 'error', 'network::cron : ' . $e->getMessage()); } eqLogic::checkAlive(); connection::cron(); if (config::byKey('jeeNetwork::mode') != 'slave') { jeeNetwork::pull(); } } catch (Exception $e) { } } $c = new Cron\CronExpression('02 02 * * *', new Cron\FieldFactory()); if ($c->isDue()) { try { log::chunk(); cron::clean(); } catch (Exception $e) { log::add('log', 'error', $e->getMessage()); } } $c = new Cron\CronExpression('21 23 * * *', new Cron\FieldFactory()); if ($c->isDue()) { try { scenario::cleanTable(); user::cleanOutdatedUser(); scenario::consystencyCheck(); } catch (Exception $e) { log::add('scenario', 'error', $e->getMessage()); } } } catch (Exception $e) { } }
<div class="col-lg-4"> <select class="configKey form-control" id="select_mode" data-l1key="externalDeamon"> <option value="0">Local</option> <option value="2">Gateway sur un Jeedom Esclave</option> <option value="1">Jeedom Esclave (Envoyer les données sur le jeedom Master)</option> </select> </div> </div> <div id="div_slave" class="form-group"> <label class="col-lg-4 control-label">Esclave Jeedom :</label> <div class="col-lg-4"> <select id="select_slave" class="configKey form-control" data-l1key="jeeSlave"> <option value="">Aucun</option> <?php foreach (jeeNetwork::byPlugin('mySensors') as $jeeNetwork) { echo '<option value="' . $jeeNetwork->getId() . '">' . $jeeNetwork->getName() . ' (' . $jeeNetwork->getId() . ')</option>'; } ?> </select> </div> </div> <div id="div_local" class="form-group"> <label class="col-lg-4 control-label">Port Gateway :</label> <div class="col-lg-4"> <select id="select_port" class="configKey form-control" data-l1key="usbGateway"> <option value="">Aucun</option> <?php foreach (jeedom::getUsbMapping() as $name => $value) { echo '<option value="' . $name . '">' . $name . ' (' . $value . ')</option>';