From ebce3c027a0e617354b5330beea26f8663cfa137 Mon Sep 17 00:00:00 2001 From: Emmanuel Bernaszuk Date: Sun, 14 Sep 2025 11:31:04 +0200 Subject: [PATCH 1/8] Add core/class autoload --- composer.json | 7 +++++++ core/class/translate.class.php | 4 ---- core/php/core.inc.php | 7 ------- core/php/utils.inc.php | 5 +++++ 4 files changed, 12 insertions(+), 11 deletions(-) diff --git a/composer.json b/composer.json index 25d7fc3830..070f3437ce 100644 --- a/composer.json +++ b/composer.json @@ -15,5 +15,12 @@ "platform": { "php": "7.4" } + }, + "autoload": { + "classmap": [ + "core/class/", + "core/com/", + "core/repo/" + ] } } diff --git a/core/class/translate.class.php b/core/class/translate.class.php index 50aebb72ef..b84c1178b8 100644 --- a/core/class/translate.class.php +++ b/core/class/translate.class.php @@ -215,7 +215,3 @@ public static function setLanguage($_langage) { /* * *********************Methode d'instance************************* */ } - -function __($_content, $_name, $_backslash = false) { - return translate::sentence(str_replace("\'", "'", $_content), $_name, $_backslash); -} diff --git a/core/php/core.inc.php b/core/php/core.inc.php index 2502e1ea54..b0e007fb24 100644 --- a/core/php/core.inc.php +++ b/core/php/core.inc.php @@ -18,16 +18,9 @@ date_default_timezone_set('Europe/Brussels'); require_once __DIR__ . '/../../vendor/autoload.php'; require_once __DIR__ . '/../config/common.config.php'; -require_once __DIR__ . '/../class/DB.class.php'; -require_once __DIR__ . '/../class/config.class.php'; -require_once __DIR__ . '/../class/jeedom.class.php'; -require_once __DIR__ . '/../class/plugin.class.php'; -require_once __DIR__ . '/../class/translate.class.php'; require_once __DIR__ . '/utils.inc.php'; include_file('core', 'jeedom', 'config'); include_file('core', 'compatibility', 'config'); -include_file('core', 'utils', 'class'); -include_file('core', 'log', 'class'); try { $configs = config::byKeys(array('timezone', 'log::level')); diff --git a/core/php/utils.inc.php b/core/php/utils.inc.php index 08b0613c92..26e5da189f 100644 --- a/core/php/utils.inc.php +++ b/core/php/utils.inc.php @@ -1839,3 +1839,8 @@ function implode_recursive($_array, $_separator, $_key = '') { } return $result; } + + function __($_content, $_name, $_backslash = false) + { + return translate::sentence(str_replace("\'", "'", $_content), $_name, $_backslash); + } From 519468553e48d60db69adffff493c9ca6c10eedf Mon Sep 17 00:00:00 2001 From: Emmanuel Bernaszuk Date: Sun, 14 Sep 2025 11:37:07 +0200 Subject: [PATCH 2/8] Explicit log setting error --- core/php/core.inc.php | 56 ++++++++++++++++++++----------------------- 1 file changed, 26 insertions(+), 30 deletions(-) diff --git a/core/php/core.inc.php b/core/php/core.inc.php index b0e007fb24..46a0d9493c 100644 --- a/core/php/core.inc.php +++ b/core/php/core.inc.php @@ -27,47 +27,43 @@ if (isset($configs['timezone'])) { date_default_timezone_set($configs['timezone']); } -} catch (Exception $e) { -} catch (Error $e) { +} catch (\Throwable $throwable) { + error_log('Unable to set timezone: ' . $throwable->getMessage()); } try { if (isset($configs['log::level'])) { log::define_error_reporting($configs['log::level']); } -} catch (Exception $e) { -} catch (Error $e) { +} catch (\Throwable $throwable) { + error_log('Unable to set log level: ' . $throwable->getMessage()); } +/** + * Autoload function for specific Jeedom classes + * this function is called after the default Composer autoloader + * it will load specific classes such as Cmd, Real, etc. + * for plugins that do not use namespaces or Composer autoloading + */ function jeedomAutoload($_classname) { - /* core class always in /core/class : */ - $path = __DIR__ . "/../../core/class/$_classname.class.php"; - if (file_exists($path)) { - include_file('core', $_classname, 'class'); - } else if (substr($_classname, 0, 4) === 'com_') { - /* class com_$1 in /core/com/$1.com.php */ - include_file('core', substr($_classname, 4), 'com'); - } else if (substr($_classname, 0, 5) === 'repo_') { - /* class repo_$1 in /core/repo/$1.repo.php */ - include_file('core', substr($_classname, 5), 'repo'); - } else if (strpos($_classname, '\\') === false && strpos($_classname, '/') === false) { - /* autoload for plugins : no namespace */ - $classname = str_replace(array('Real', 'Cmd'), '', $_classname); + if (strpos($_classname, '\\') !== false || strpos($_classname, '/') !== false) { + return; + } + + /* autoload for plugins : no namespace */ + $classname = str_replace(array('Real', 'Cmd'), '', $_classname); + $plugin_active = config::byKey('active', $classname, null); + if (($plugin_active === null || $plugin_active == '' || $plugin_active == 0) && strpos($classname, '_') !== false) { + $classname = explode('_', $classname)[0]; $plugin_active = config::byKey('active', $classname, null); - if (($plugin_active === null || $plugin_active == '' || $plugin_active == 0) && strpos($classname, '_') !== false) { - $classname = explode('_', $classname)[0]; - $plugin_active = config::byKey('active', $classname, null); - } - if ($plugin_active == 1) { - try { - include_file('core', $classname, 'class', $classname); - } catch (Exception $e) { - - } catch (Error $e) { - - } + } + if ($plugin_active == 1) { + try { + include_file('core', $classname, 'class', $classname); + } catch (\Throwable $throwable) { + error_log('Error loading class ' . $classname . ': ' . $throwable->getMessage()); } } } -spl_autoload_register('jeedomAutoload', true, true); +spl_autoload_register('jeedomAutoload'); From ff9cb29c14d00edd537ff283e2a65c4c86c05f1d Mon Sep 17 00:00:00 2001 From: Emmanuel Bernaszuk Date: Sun, 14 Sep 2025 11:47:54 +0200 Subject: [PATCH 3/8] Extract common.config.json --- composer.json | 3 +++ core/php/core.inc.php | 1 - 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 070f3437ce..52179d01ef 100644 --- a/composer.json +++ b/composer.json @@ -21,6 +21,9 @@ "core/class/", "core/com/", "core/repo/" + ], + "files": [ + "core/config/common.config.php" ] } } diff --git a/core/php/core.inc.php b/core/php/core.inc.php index 46a0d9493c..1e287ba7b7 100644 --- a/core/php/core.inc.php +++ b/core/php/core.inc.php @@ -17,7 +17,6 @@ */ date_default_timezone_set('Europe/Brussels'); require_once __DIR__ . '/../../vendor/autoload.php'; -require_once __DIR__ . '/../config/common.config.php'; require_once __DIR__ . '/utils.inc.php'; include_file('core', 'jeedom', 'config'); include_file('core', 'compatibility', 'config'); From 86fe03a410b274ef2b14732260dc2ef6f1e2c29c Mon Sep 17 00:00:00 2001 From: Emmanuel Bernaszuk Date: Sun, 14 Sep 2025 11:50:00 +0200 Subject: [PATCH 4/8] Extract utils.inc.php --- composer.json | 3 ++- core/php/core.inc.php | 1 - 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/composer.json b/composer.json index 52179d01ef..253869add8 100644 --- a/composer.json +++ b/composer.json @@ -23,7 +23,8 @@ "core/repo/" ], "files": [ - "core/config/common.config.php" + "core/config/common.config.php", + "core/php/utils.inc.php" ] } } diff --git a/core/php/core.inc.php b/core/php/core.inc.php index 1e287ba7b7..0a1072dc85 100644 --- a/core/php/core.inc.php +++ b/core/php/core.inc.php @@ -17,7 +17,6 @@ */ date_default_timezone_set('Europe/Brussels'); require_once __DIR__ . '/../../vendor/autoload.php'; -require_once __DIR__ . '/utils.inc.php'; include_file('core', 'jeedom', 'config'); include_file('core', 'compatibility', 'config'); From 4faeb0209e942c2386ba3146dada93cea79836ca Mon Sep 17 00:00:00 2001 From: Emmanuel Bernaszuk Date: Sun, 14 Sep 2025 11:52:21 +0200 Subject: [PATCH 5/8] Extract compatibility.config.php --- composer.json | 1 + core/php/core.inc.php | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 253869add8..2bd0c7bfda 100644 --- a/composer.json +++ b/composer.json @@ -24,6 +24,7 @@ ], "files": [ "core/config/common.config.php", + "core/config/compatibility.config.php", "core/php/utils.inc.php" ] } diff --git a/core/php/core.inc.php b/core/php/core.inc.php index 0a1072dc85..1eca2e51e4 100644 --- a/core/php/core.inc.php +++ b/core/php/core.inc.php @@ -18,7 +18,6 @@ date_default_timezone_set('Europe/Brussels'); require_once __DIR__ . '/../../vendor/autoload.php'; include_file('core', 'jeedom', 'config'); -include_file('core', 'compatibility', 'config'); try { $configs = config::byKeys(array('timezone', 'log::level')); From 57f2cdbfae0f04eb00b18c49a8aa3adfe83f8b2a Mon Sep 17 00:00:00 2001 From: Emmanuel Bernaszuk Date: Sun, 14 Sep 2025 12:17:26 +0200 Subject: [PATCH 6/8] Extract jeedom.config.php --- composer.json | 1 + core/config/jeedom.config.php | 529 ++++++++++++++++++---------------- core/php/core.inc.php | 1 - core/php/utils.inc.php | 7 +- 4 files changed, 289 insertions(+), 249 deletions(-) diff --git a/composer.json b/composer.json index 2bd0c7bfda..3f1ca2f1a4 100644 --- a/composer.json +++ b/composer.json @@ -25,6 +25,7 @@ "files": [ "core/config/common.config.php", "core/config/compatibility.config.php", + "core/config/jeedom.config.php", "core/php/utils.inc.php" ] } diff --git a/core/config/jeedom.config.php b/core/config/jeedom.config.php index 3699788726..cf603f8b5b 100644 --- a/core/config/jeedom.config.php +++ b/core/config/jeedom.config.php @@ -16,18 +16,53 @@ * along with Jeedom. If not, see . */ +/** @internal */ +final class Translation{ + + /** @var string */ + private $key; + + /** @var string */ + private $file; + + /** @var bool */ + private $backslash; + + /** @var string */ + private $prefix; + + /** @var string */ + private $suffix; + + public function __construct(string $key, string $file, bool $backslash, string $prefix, string $suffix) { + $this->key = $key; + $this->file = $file; + $this->backslash = $backslash; + $this->prefix = $prefix; + $this->suffix = $suffix; + } + + public function __toString(): string { + return $this->prefix.\translate::sentence(str_replace("\'", "'", $this->key), $this->file, $this->backslash).$this->suffix; + } +} + +function t(string $key, string $file, bool $backslash = false, string $prefix = '', string $suffix = ''): Translation { + return new Translation($key, $file, $backslash, $prefix, $suffix); +} + global $JEEDOM_INTERNAL_CONFIG; $JEEDOM_INTERNAL_CONFIG = array( 'eqLogic' => array( 'category' => array( - 'heating' => array('name' => __('Chauffage', __FILE__), 'icon' => 'fas fa-fire'), - 'security' => array('name' => __('Sécurité', __FILE__), 'icon' => 'fas fa-lock'), - 'energy' => array('name' => __('Energie', __FILE__), 'icon' => 'fas fa-bolt'), - 'light' => array('name' => __('Lumière', __FILE__), 'icon' => 'far fa-lightbulb'), - 'opening' => array('name' => __('Ouvrant', __FILE__), 'icon' => 'fas fa-door-open'), - 'automatism' => array('name' => __('Automatisme', __FILE__), 'icon' => 'fas fa-magic'), - 'multimedia' => array('name' => __('Multimédia', __FILE__), 'icon' => 'fas fa-sliders-h'), - 'default' => array('name' => __('Autre', __FILE__), 'icon' => 'far fa-circle'), + 'heating' => array('name' => t('Chauffage', __FILE__), 'icon' => 'fas fa-fire'), + 'security' => array('name' => t('Sécurité', __FILE__), 'icon' => 'fas fa-lock'), + 'energy' => array('name' => t('Energie', __FILE__), 'icon' => 'fas fa-bolt'), + 'light' => array('name' => t('Lumière', __FILE__), 'icon' => 'far fa-lightbulb'), + 'opening' => array('name' => t('Ouvrant', __FILE__), 'icon' => 'fas fa-door-open'), + 'automatism' => array('name' => t('Automatisme', __FILE__), 'icon' => 'fas fa-magic'), + 'multimedia' => array('name' => t('Multimédia', __FILE__), 'icon' => 'fas fa-sliders-h'), + 'default' => array('name' => t('Autre', __FILE__), 'icon' => 'far fa-circle'), ), 'displayType' => array( 'dashboard' => array('name' => 'Dashboard'), @@ -44,34 +79,34 @@ ), 'plugin' => array( 'category' => array( - 'security' => array('name' => __('Sécurité', __FILE__), 'icon' => 'fas fa-lock'), - 'automation protocol' => array('name' => __('Protocole domotique', __FILE__), 'icon' => 'fas fa-rss'), - 'home automation protocol' => array('name' => __('Passerelle domotique', __FILE__), 'icon' => 'fas fa-asterisk'), - 'programming' => array('name' => __('Programmation', __FILE__), 'icon' => 'fas fa-code'), - 'organization' => array('name' => __('Organisation', __FILE__), 'icon' => 'far fa-calendar-alt', 'alias' => array('travel', 'finance')), - 'weather' => array('name' => __('Météo', __FILE__), 'icon' => 'far fa-sun'), - 'communication' => array('name' => __('Communication', __FILE__), 'icon' => 'fas fa-comment'), - 'devicecommunication' => array('name' => __('Objets connectés', __FILE__), 'icon' => 'fas fa-language'), - 'multimedia' => array('name' => __('Multimédia', __FILE__), 'icon' => 'fas fa-sliders-h'), - 'wellness' => array('name' => __('Confort', __FILE__), 'icon' => 'far fa-user'), - 'monitoring' => array('name' => __('Monitoring', __FILE__), 'icon' => 'fas fa-tachometer-alt'), - 'health' => array('name' => __('Santé', __FILE__), 'icon' => 'icon loisir-runner5'), - 'nature' => array('name' => __('Nature', __FILE__), 'icon' => 'icon nature-leaf32'), - 'automatisation' => array('name' => __('Automatisme', __FILE__), 'icon' => 'fas fa-magic'), - 'energy' => array('name' => __('Energie', __FILE__), 'icon' => 'fas fa-bolt'), - 'other' => array('name' => __('Autre', __FILE__), 'icon' => 'fas fa-bars'), + 'security' => array('name' => t('Sécurité', __FILE__), 'icon' => 'fas fa-lock'), + 'automation protocol' => array('name' => t('Protocole domotique', __FILE__), 'icon' => 'fas fa-rss'), + 'home automation protocol' => array('name' => t('Passerelle domotique', __FILE__), 'icon' => 'fas fa-asterisk'), + 'programming' => array('name' => t('Programmation', __FILE__), 'icon' => 'fas fa-code'), + 'organization' => array('name' => t('Organisation', __FILE__), 'icon' => 'far fa-calendar-alt', 'alias' => array('travel', 'finance')), + 'weather' => array('name' => t('Météo', __FILE__), 'icon' => 'far fa-sun'), + 'communication' => array('name' => t('Communication', __FILE__), 'icon' => 'fas fa-comment'), + 'devicecommunication' => array('name' => t('Objets connectés', __FILE__), 'icon' => 'fas fa-language'), + 'multimedia' => array('name' => t('Multimédia', __FILE__), 'icon' => 'fas fa-sliders-h'), + 'wellness' => array('name' => t('Confort', __FILE__), 'icon' => 'far fa-user'), + 'monitoring' => array('name' => t('Monitoring', __FILE__), 'icon' => 'fas fa-tachometer-alt'), + 'health' => array('name' => t('Santé', __FILE__), 'icon' => 'icon loisir-runner5'), + 'nature' => array('name' => t('Nature', __FILE__), 'icon' => 'icon nature-leaf32'), + 'automatisation' => array('name' => t('Automatisme', __FILE__), 'icon' => 'fas fa-magic'), + 'energy' => array('name' => t('Energie', __FILE__), 'icon' => 'fas fa-bolt'), + 'other' => array('name' => t('Autre', __FILE__), 'icon' => 'fas fa-bars'), ), ), 'messageChannel' => array( - 'alerting' => array('name' => __('Alerte des commandes', __FILE__), 'icon' => ''), - 'alertingReturnBack' => array('name' => __('Retour à l\'état normal des commandes', __FILE__), 'icon' => '') + 'alerting' => array('name' => t('Alerte des commandes', __FILE__), 'icon' => ''), + 'alertingReturnBack' => array('name' => t('Retour à l\'état normal des commandes', __FILE__), 'icon' => '') ), 'alerts' => array( - 'timeout' => array('name' => __('Timeout', __FILE__), 'icon' => 'far fa-clock', 'level' => 6, 'check' => false, 'color' => 'var(--al-danger-color)'), - 'batterywarning' => array('name' => __('Batterie en Warning', __FILE__), 'icon' => 'fas fa-battery-quarter', 'level' => 2, 'check' => false, 'color' => 'var(--al-warning-color)'), - 'batterydanger' => array('name' => __('Batterie en Danger', __FILE__), 'icon' => 'fas fa-battery-empty', 'level' => 3, 'check' => false, 'color' => 'var(--al-danger-color)'), - 'warning' => array('name' => __('Warning', __FILE__), 'icon' => 'fas fa-bell', 'level' => 4, 'check' => true, 'color' => 'var(--al-warning-color)'), - 'danger' => array('name' => __('Danger', __FILE__), 'icon' => 'fas fa-exclamation', 'level' => 5, 'check' => true, 'color' => 'var(--al-danger-color)'), + 'timeout' => array('name' => t('Timeout', __FILE__), 'icon' => 'far fa-clock', 'level' => 6, 'check' => false, 'color' => 'var(--al-danger-color)'), + 'batterywarning' => array('name' => t('Batterie en Warning', __FILE__), 'icon' => 'fas fa-battery-quarter', 'level' => 2, 'check' => false, 'color' => 'var(--al-warning-color)'), + 'batterydanger' => array('name' => t('Batterie en Danger', __FILE__), 'icon' => 'fas fa-battery-empty', 'level' => 3, 'check' => false, 'color' => 'var(--al-danger-color)'), + 'warning' => array('name' => t('Warning', __FILE__), 'icon' => 'fas fa-bell', 'level' => 4, 'check' => true, 'color' => 'var(--al-warning-color)'), + 'danger' => array('name' => t('Danger', __FILE__), 'icon' => 'fas fa-exclamation', 'level' => 5, 'check' => true, 'color' => 'var(--al-danger-color)'), ), 'cmd' => array( 'widgets' => array( @@ -168,700 +203,700 @@ ), 'generic_type' => array( 'TOGGLE' => array( - 'name' => __('Toggle', __FILE__), 'familyid' => 'Other', 'family' => __('Autre', __FILE__), + 'name' => t('Toggle', __FILE__), 'familyid' => 'Other', 'family' => t('Autre', __FILE__), 'type' => 'Action', 'subtype' => array('other') ), 'ONLINE' => array( - 'name' => __('Connecté', __FILE__), 'familyid' => 'Other', 'family' => __('Autre', __FILE__), + 'name' => t('Connecté', __FILE__), 'familyid' => 'Other', 'family' => t('Autre', __FILE__), 'type' => 'Info', 'subtype' => array('binary') ), 'LIGHT_TOGGLE' => array( - 'name' => __('Lumière Toggle', __FILE__), 'familyid' => 'Light', 'family' => __('Lumière', __FILE__), + 'name' => t('Lumière Toggle', __FILE__), 'familyid' => 'Light', 'family' => t('Lumière', __FILE__), 'type' => 'Action', 'subtype' => array('other') ), 'LIGHT_STATE' => array( - 'name' => __('Lumière Etat', __FILE__), 'familyid' => 'Light', 'family' => __('Lumière', __FILE__), + 'name' => t('Lumière Etat', __FILE__), 'familyid' => 'Light', 'family' => t('Lumière', __FILE__), 'type' => 'Info', 'subtype' => array('binary', 'numeric') ), 'LIGHT_ON' => array( - 'name' => __('Lumière Bouton On', __FILE__), 'familyid' => 'Light', 'family' => __('Lumière', __FILE__), + 'name' => t('Lumière Bouton On', __FILE__), 'familyid' => 'Light', 'family' => t('Lumière', __FILE__), 'type' => 'Action', 'summary' => array('subtype' => 'other'), 'subtype' => array('other') ), 'LIGHT_OFF' => array( - 'name' => __('Lumière Bouton Off', __FILE__), 'familyid' => 'Light', 'family' => __('Lumière', __FILE__), + 'name' => t('Lumière Bouton Off', __FILE__), 'familyid' => 'Light', 'family' => t('Lumière', __FILE__), 'type' => 'Action', 'summary' => array('subtype' => 'other'), 'subtype' => array('other') ), 'LIGHT_SLIDER' => array( - 'name' => __('Lumière Slider', __FILE__), 'familyid' => 'Light', 'family' => __('Lumière', __FILE__), + 'name' => t('Lumière Slider', __FILE__), 'familyid' => 'Light', 'family' => t('Lumière', __FILE__), 'type' => 'Action', 'summary' => array('subtype' => 'slider'), 'subtype' => array('slider') ), 'LIGHT_BRIGHTNESS' => array( - 'name' => __('Lumière Luminosité', __FILE__), 'familyid' => 'Light', 'family' => __('Lumière', __FILE__), + 'name' => t('Lumière Luminosité', __FILE__), 'familyid' => 'Light', 'family' => t('Lumière', __FILE__), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'LIGHT_COLOR' => array( - 'name' => __('Lumière Couleur', __FILE__), 'familyid' => 'Light', 'family' => __('Lumière', __FILE__), + 'name' => t('Lumière Couleur', __FILE__), 'familyid' => 'Light', 'family' => t('Lumière', __FILE__), 'type' => 'Info', 'subtype' => array('string') ), 'LIGHT_SET_COLOR' => array( - 'name' => __('Lumière Couleur', __FILE__), 'familyid' => 'Light', 'family' => __('Lumière', __FILE__), + 'name' => t('Lumière Couleur', __FILE__), 'familyid' => 'Light', 'family' => t('Lumière', __FILE__), 'type' => 'Action', 'summary' => array('subtype' => 'color'), 'subtype' => array('color') ), 'LIGHT_MODE' => array( - 'name' => __('Lumière Mode', __FILE__), 'familyid' => 'Light', 'family' => __('Lumière', __FILE__), + 'name' => t('Lumière Mode', __FILE__), 'familyid' => 'Light', 'family' => t('Lumière', __FILE__), 'type' => 'Action', 'subtype' => array('other','select') ), 'LIGHT_STATE_BOOL' => array( - 'name' => __('Lumière Etat (Binaire)', __FILE__), 'familyid' => 'Light', 'family' => __('Lumière', __FILE__), + 'name' => t('Lumière Etat (Binaire)', __FILE__), 'familyid' => 'Light', 'family' => t('Lumière', __FILE__), 'type' => 'Info', 'subtype' => array('binary') ), 'LIGHT_COLOR_TEMP' => array( - 'name' => __('Lumière Température Couleur', __FILE__), 'familyid' => 'Light', 'family' => __('Lumière', __FILE__), + 'name' => t('Lumière Température Couleur', __FILE__), 'familyid' => 'Light', 'family' => t('Lumière', __FILE__), 'type' => 'Info', 'subtype' => array('numeric') ), 'LIGHT_SET_COLOR_TEMP' => array( - 'name' => __('Lumière Température Couleur', __FILE__), 'familyid' => 'Light', 'family' => __('Lumière', __FILE__), + 'name' => t('Lumière Température Couleur', __FILE__), 'familyid' => 'Light', 'family' => t('Lumière', __FILE__), 'type' => 'Action' ), 'ENERGY_STATE' => array( - 'name' => __('Prise Etat', __FILE__), 'familyid' => 'Outlet', 'family' => __('Prise', __FILE__), + 'name' => t('Prise Etat', __FILE__), 'familyid' => 'Outlet', 'family' => t('Prise', __FILE__), 'type' => 'Info', 'subtype' => array('numeric', 'binary') ), 'ENERGY_ON' => array( - 'name' => __('Prise Bouton On', __FILE__), 'familyid' => 'Outlet', 'family' => __('Prise', __FILE__), + 'name' => t('Prise Bouton On', __FILE__), 'familyid' => 'Outlet', 'family' => t('Prise', __FILE__), 'type' => 'Action', 'summary' => array('subtype' => 'other'), 'subtype' => array('other') ), 'ENERGY_OFF' => array( - 'name' => __('Prise Bouton Off', __FILE__), 'familyid' => 'Outlet', 'family' => __('Prise', __FILE__), + 'name' => t('Prise Bouton Off', __FILE__), 'familyid' => 'Outlet', 'family' => t('Prise', __FILE__), 'type' => 'Action', 'summary' => array('subtype' => 'other'), 'subtype' => array('other') ), 'ENERGY_SLIDER' => array( - 'name' => __('Prise Slider', __FILE__), 'familyid' => 'Outlet', 'family' => __('Prise', __FILE__), + 'name' => t('Prise Slider', __FILE__), 'familyid' => 'Outlet', 'family' => t('Prise', __FILE__), 'type' => 'Action', 'summary' => array('subtype' => 'slider') ), 'FLAP_STATE' => array( - 'name' => __('Volet Etat', __FILE__), 'familyid' => 'Shutter', 'family' => __('Volet', __FILE__), + 'name' => t('Volet Etat', __FILE__), 'familyid' => 'Shutter', 'family' => t('Volet', __FILE__), 'type' => 'Info', 'subtype' => array('binary', 'numeric') ), 'FLAP_UP' => array( - 'name' => __('Volet Bouton Monter', __FILE__), 'familyid' => 'Shutter', 'family' => __('Volet', __FILE__), + 'name' => t('Volet Bouton Monter', __FILE__), 'familyid' => 'Shutter', 'family' => t('Volet', __FILE__), 'type' => 'Action', 'summary' => array('subtype' => 'other'), 'subtype' => array('other') ), 'FLAP_DOWN' => array( - 'name' => __('Volet Bouton Descendre', __FILE__), 'familyid' => 'Shutter', 'family' => __('Volet', __FILE__), + 'name' => t('Volet Bouton Descendre', __FILE__), 'familyid' => 'Shutter', 'family' => t('Volet', __FILE__), 'type' => 'Action', 'summary' => array('subtype' => 'other'), 'subtype' => array('other') ), 'FLAP_STOP' => array( - 'name' => __('Volet Bouton Stop', __FILE__), 'familyid' => 'Shutter', 'family' => __('Volet', __FILE__), + 'name' => t('Volet Bouton Stop', __FILE__), 'familyid' => 'Shutter', 'family' => t('Volet', __FILE__), 'type' => 'Action' ), 'FLAP_SLIDER' => array( - 'name' => __('Volet Bouton Slider', __FILE__), 'familyid' => 'Shutter', 'family' => __('Volet', __FILE__), + 'name' => t('Volet Bouton Slider', __FILE__), 'familyid' => 'Shutter', 'family' => t('Volet', __FILE__), 'type' => 'Action', 'summary' => array('subtype' => 'slider'), 'subtype' => array('slider') ), 'FLAP_BSO_STATE' => array( - 'name' => __('Volet BSO Etat', __FILE__), 'familyid' => 'Shutter', 'family' => __('Volet', __FILE__), + 'name' => t('Volet BSO Etat', __FILE__), 'familyid' => 'Shutter', 'family' => t('Volet', __FILE__), 'type' => 'Info', 'subtype' => array('binary', 'numeric') ), 'FLAP_BSO_UP' => array( - 'name' => __('Volet BSO Bouton Monter', __FILE__), 'familyid' => 'Shutter', 'family' => __('Volet', __FILE__), + 'name' => t('Volet BSO Bouton Monter', __FILE__), 'familyid' => 'Shutter', 'family' => t('Volet', __FILE__), 'type' => 'Action', 'summary' => array('subtype' => 'other'), 'subtype' => array('other') ), 'FLAP_BSO_DOWN' => array( - 'name' => __('Volet BSO Bouton Descendre', __FILE__), 'familyid' => 'Shutter', 'family' => __('Volet', __FILE__), + 'name' => t('Volet BSO Bouton Descendre', __FILE__), 'familyid' => 'Shutter', 'family' => t('Volet', __FILE__), 'type' => 'Action', 'summary' => array('subtype' => 'other'), 'subtype' => array('other') ), 'HEATING_ON' => array( - 'name' => __('Chauffage fil pilote Bouton ON', __FILE__), 'familyid' => 'Heating', 'family' => __('Chauffage', __FILE__), + 'name' => t('Chauffage fil pilote Bouton ON', __FILE__), 'familyid' => 'Heating', 'family' => t('Chauffage', __FILE__), 'type' => 'Action', 'summary' => array('subtype' => 'other'), 'subtype' => array('other') ), 'HEATING_OFF' => array( - 'name' => __('Chauffage fil pilote Bouton OFF', __FILE__), 'familyid' => 'Heating', 'family' => __('Chauffage', __FILE__), + 'name' => t('Chauffage fil pilote Bouton OFF', __FILE__), 'familyid' => 'Heating', 'family' => t('Chauffage', __FILE__), 'type' => 'Action', 'summary' => array('subtype' => 'other'), 'subtype' => array('other') ), 'HEATING_STATE' => array( - 'name' => __('Chauffage fil pilote Etat', __FILE__), 'familyid' => 'Heating', 'family' => __('Chauffage', __FILE__), + 'name' => t('Chauffage fil pilote Etat', __FILE__), 'familyid' => 'Heating', 'family' => t('Chauffage', __FILE__), 'type' => 'Info', 'subtype' => array('binary', 'numeric') ), 'HEATING_OTHER' => array( - 'name' => __('Chauffage fil pilote Bouton', __FILE__), 'familyid' => 'Heating', 'family' => __('Chauffage', __FILE__), + 'name' => t('Chauffage fil pilote Bouton', __FILE__), 'familyid' => 'Heating', 'family' => t('Chauffage', __FILE__), 'type' => 'Action', 'subtype' => array('other') ), 'LOCK_STATE' => array( - 'name' => __('Serrure Etat', __FILE__), 'familyid' => 'Opening', 'family' => __('Ouvrant', __FILE__), + 'name' => t('Serrure Etat', __FILE__), 'familyid' => 'Opening', 'family' => t('Ouvrant', __FILE__), 'type' => 'Info', 'subtype' => array('binary') ), 'LOCK_OPEN' => array( - 'name' => __('Serrure Bouton Ouvrir', __FILE__), 'familyid' => 'Opening', 'family' => __('Ouvrant', __FILE__), + 'name' => t('Serrure Bouton Ouvrir', __FILE__), 'familyid' => 'Opening', 'family' => t('Ouvrant', __FILE__), 'type' => 'Action', 'summary' => array('subtype' => 'other'), 'subtype' => array('other') ), 'LOCK_CLOSE' => array( - 'name' => __('Serrure Bouton Fermer', __FILE__), 'familyid' => 'Opening', 'family' => __('Ouvrant', __FILE__), + 'name' => t('Serrure Bouton Fermer', __FILE__), 'familyid' => 'Opening', 'family' => t('Ouvrant', __FILE__), 'type' => 'Action', 'summary' => array('subtype' => 'other'), 'subtype' => array('other') ), 'GB_OPEN' => array( - 'name' => __('Portail ou garage bouton d\'ouverture', __FILE__), 'familyid' => 'Opening', 'family' => __('Ouvrant', __FILE__), + 'name' => t('Portail ou garage bouton d\'ouverture', __FILE__), 'familyid' => 'Opening', 'family' => t('Ouvrant', __FILE__), 'type' => 'Action', 'summary' => array('subtype' => 'other'), 'subtype' => array('other') ), 'GB_CLOSE' => array( - 'name' => __('Portail ou garage bouton de fermeture', __FILE__), 'familyid' => 'Opening', 'family' => __('Ouvrant', __FILE__), + 'name' => t('Portail ou garage bouton de fermeture', __FILE__), 'familyid' => 'Opening', 'family' => t('Ouvrant', __FILE__), 'type' => 'Action', 'summary' => array('subtype' => 'other'), 'subtype' => array('other') ), 'GB_TOGGLE' => array( - 'name' => __('Portail ou garage bouton toggle', __FILE__), 'familyid' => 'Opening', 'family' => __('Ouvrant', __FILE__), + 'name' => t('Portail ou garage bouton toggle', __FILE__), 'familyid' => 'Opening', 'family' => t('Ouvrant', __FILE__), 'type' => 'Action', 'subtype' => array('other') ), 'BARRIER_STATE' => array( - 'name' => __('Portail (ouvrant) Etat', __FILE__), 'familyid' => 'Opening', 'family' => __('Ouvrant', __FILE__), + 'name' => t('Portail (ouvrant) Etat', __FILE__), 'familyid' => 'Opening', 'family' => t('Ouvrant', __FILE__), 'type' => 'Info', 'subtype' => array('binary') ), 'GARAGE_STATE' => array( - 'name' => __('Garage (ouvrant) Etat', __FILE__), 'familyid' => 'Opening', 'family' => __('Ouvrant', __FILE__), + 'name' => t('Garage (ouvrant) Etat', __FILE__), 'familyid' => 'Opening', 'family' => t('Ouvrant', __FILE__), 'type' => 'Info', 'subtype' => array('binary') ), 'OPENING' => array( - 'name' => __('Porte', __FILE__), 'familyid' => 'Opening', 'family' => __('Ouvrant', __FILE__), + 'name' => t('Porte', __FILE__), 'familyid' => 'Opening', 'family' => t('Ouvrant', __FILE__), 'type' => 'Info', 'subtype' => array('binary') ), 'OPENING_WINDOW' => array( - 'name' => __('Fenêtre', __FILE__), 'familyid' => 'Opening', 'family' => __('Ouvrant', __FILE__), + 'name' => t('Fenêtre', __FILE__), 'familyid' => 'Opening', 'family' => t('Ouvrant', __FILE__), 'type' => 'Info', 'subtype' => array('binary') ), 'THERMOSTAT_STATE' => array( - 'name' => __('Thermostat Etat', __FILE__), 'familyid' => 'Thermostat', 'family' => __('Thermostat', __FILE__), + 'name' => t('Thermostat Etat', __FILE__), 'familyid' => 'Thermostat', 'family' => t('Thermostat', __FILE__), 'type' => 'Info', 'subtype' => array('binary') ), 'THERMOSTAT_TEMPERATURE' => array( - 'name' => __('Thermostat Température ambiante', __FILE__), 'familyid' => 'Thermostat', 'family' => __('Thermostat', __FILE__), + 'name' => t('Thermostat Température ambiante', __FILE__), 'familyid' => 'Thermostat', 'family' => t('Thermostat', __FILE__), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'THERMOSTAT_SET_SETPOINT' => array( - 'name' => __('Thermostat consigne', __FILE__), 'familyid' => 'Thermostat', 'family' => __('Thermostat', __FILE__), + 'name' => t('Thermostat consigne', __FILE__), 'familyid' => 'Thermostat', 'family' => t('Thermostat', __FILE__), 'type' => 'Action', 'subtype' => array('slider') ), 'THERMOSTAT_SETPOINT' => array( - 'name' => __('Thermostat consigne', __FILE__), 'familyid' => 'Thermostat', 'family' => __('Thermostat', __FILE__), + 'name' => t('Thermostat consigne', __FILE__), 'familyid' => 'Thermostat', 'family' => t('Thermostat', __FILE__), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'THERMOSTAT_SET_MODE' => array( - 'name' => __('Thermostat Mode', __FILE__), 'familyid' => 'Thermostat', 'family' => __('Thermostat', __FILE__), + 'name' => t('Thermostat Mode', __FILE__), 'familyid' => 'Thermostat', 'family' => t('Thermostat', __FILE__), 'type' => 'Action', 'subtype' => array('other','select') ), 'THERMOSTAT_MODE' => array( - 'name' => __('Thermostat Mode', __FILE__), 'familyid' => 'Thermostat', 'family' => __('Thermostat', __FILE__), + 'name' => t('Thermostat Mode', __FILE__), 'familyid' => 'Thermostat', 'family' => t('Thermostat', __FILE__), 'type' => 'Info', 'subtype' => array('string') ), 'THERMOSTAT_SET_LOCK' => array( - 'name' => __('Thermostat Verrouillage', __FILE__), 'familyid' => 'Thermostat', 'family' => __('Thermostat', __FILE__), + 'name' => t('Thermostat Verrouillage', __FILE__), 'familyid' => 'Thermostat', 'family' => t('Thermostat', __FILE__), 'type' => 'Action', 'subtype' => array('other') ), 'THERMOSTAT_SET_UNLOCK' => array( - 'name' => __('Thermostat Déverrouillage', __FILE__), 'familyid' => 'Thermostat', 'family' => __('Thermostat', __FILE__), + 'name' => t('Thermostat Déverrouillage', __FILE__), 'familyid' => 'Thermostat', 'family' => t('Thermostat', __FILE__), 'type' => 'Action', 'subtype' => array('other') ), 'THERMOSTAT_LOCK' => array( - 'name' => __('Thermostat Verrouillage', __FILE__), 'familyid' => 'Thermostat', 'family' => __('Thermostat', __FILE__), + 'name' => t('Thermostat Verrouillage', __FILE__), 'familyid' => 'Thermostat', 'family' => t('Thermostat', __FILE__), 'type' => 'Info', 'subtype' => array('binary') ), 'THERMOSTAT_TEMPERATURE_OUTDOOR' => array( - 'name' => __('Thermostat Température Exterieur', __FILE__), 'familyid' => 'Thermostat', 'family' => __('Thermostat', __FILE__), + 'name' => t('Thermostat Température Exterieur', __FILE__), 'familyid' => 'Thermostat', 'family' => t('Thermostat', __FILE__), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'THERMOSTAT_STATE_NAME' => array( - 'name' => __('Thermostat Etat (HUMAIN)', __FILE__), 'familyid' => 'Thermostat', 'family' => __('Thermostat', __FILE__), + 'name' => t('Thermostat Etat (HUMAIN)', __FILE__), 'familyid' => 'Thermostat', 'family' => t('Thermostat', __FILE__), 'type' => 'Info', 'subtype' => array('string') ), 'THERMOSTAT_HUMIDITY' => array( - 'name' => __('Thermostat humidité ambiante', __FILE__), 'familyid' => 'Thermostat', 'family' => __('Thermostat', __FILE__), + 'name' => t('Thermostat humidité ambiante', __FILE__), 'familyid' => 'Thermostat', 'family' => t('Thermostat', __FILE__), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'THERMOSTAT_SET_MAX_TEMP' => array( - 'name' => __('Thermostat maximum consigne', __FILE__), 'familyid' => 'Thermostat', 'family' => __('Thermostat', __FILE__), + 'name' => t('Thermostat maximum consigne', __FILE__), 'familyid' => 'Thermostat', 'family' => t('Thermostat', __FILE__), 'type' => 'Action', 'subtype' => array('slider') ), 'THERMOSTAT_SET_MIN_TEMP' => array( - 'name' => __('Thermostat minimum consigne', __FILE__), 'familyid' => 'Thermostat', 'family' => __('Thermostat', __FILE__), + 'name' => t('Thermostat minimum consigne', __FILE__), 'familyid' => 'Thermostat', 'family' => t('Thermostat', __FILE__), 'type' => 'Action', 'subtype' => array('slider') ), 'THERMOSTAT_HUMIDITY' => array( - 'name' => __('Thermostat humidité ambiante', __FILE__), 'familyid' => 'Thermostat', 'family' => __('Thermostat', __FILE__), + 'name' => t('Thermostat humidité ambiante', __FILE__), 'familyid' => 'Thermostat', 'family' => t('Thermostat', __FILE__), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'HUMIDITY_SETPOINT' => array( - 'name' => __('Humidité consigne', __FILE__), 'familyid' => 'Thermostat', 'family' => __('Thermostat', __FILE__), + 'name' => t('Humidité consigne', __FILE__), 'familyid' => 'Thermostat', 'family' => t('Thermostat', __FILE__), 'type' => 'Info', 'subtype' => array('slider') ), 'HUMIDITY_SET_SETPOINT' => array( - 'name' => __('Humidité consigne', __FILE__), 'familyid' => 'Thermostat', 'family' => __('Thermostat', __FILE__), + 'name' => t('Humidité consigne', __FILE__), 'familyid' => 'Thermostat', 'family' => t('Thermostat', __FILE__), 'type' => 'Action', 'subtype' => array('slider') ), 'CAMERA_UP' => array( - 'name' => __('Mouvement caméra vers le haut', __FILE__), 'familyid' => 'Camera', 'family' => __('Caméra', __FILE__), + 'name' => t('Mouvement caméra vers le haut', __FILE__), 'familyid' => 'Camera', 'family' => t('Caméra', __FILE__), 'type' => 'Action', 'subtype' => array('other') ), 'CAMERA_DOWN' => array( - 'name' => __('Mouvement caméra vers le bas', __FILE__), 'familyid' => 'Camera', 'family' => __('Caméra', __FILE__), + 'name' => t('Mouvement caméra vers le bas', __FILE__), 'familyid' => 'Camera', 'family' => t('Caméra', __FILE__), 'type' => 'Action', 'subtype' => array('other') ), 'CAMERA_LEFT' => array( - 'name' => __('Mouvement caméra vers la gauche', __FILE__), 'familyid' => 'Camera', 'family' => __('Caméra', __FILE__), + 'name' => t('Mouvement caméra vers la gauche', __FILE__), 'familyid' => 'Camera', 'family' => t('Caméra', __FILE__), 'type' => 'Action', 'subtype' => array('other') ), 'CAMERA_RIGHT' => array( - 'name' => __('Mouvement caméra vers la droite', __FILE__), 'familyid' => 'Camera', 'family' => __('Caméra', __FILE__), + 'name' => t('Mouvement caméra vers la droite', __FILE__), 'familyid' => 'Camera', 'family' => t('Caméra', __FILE__), 'type' => 'Action', 'subtype' => array('other') ), 'CAMERA_ZOOM' => array( - 'name' => __('Zoom caméra vers l\'avant', __FILE__), 'familyid' => 'Camera', 'family' => __('Caméra', __FILE__), + 'name' => t('Zoom caméra vers l\'avant', __FILE__), 'familyid' => 'Camera', 'family' => t('Caméra', __FILE__), 'type' => 'Action', 'subtype' => array('other') ), 'CAMERA_DEZOOM' => array( - 'name' => __('Zoom caméra vers l\'arrière', __FILE__), 'familyid' => 'Camera', 'family' => __('Caméra', __FILE__), + 'name' => t('Zoom caméra vers l\'arrière', __FILE__), 'familyid' => 'Camera', 'family' => t('Caméra', __FILE__), 'type' => 'Action', 'subtype' => array('other') ), 'CAMERA_STOP' => array( - 'name' => __('Stop caméra', __FILE__), 'familyid' => 'Camera', 'family' => __('Caméra', __FILE__), + 'name' => t('Stop caméra', __FILE__), 'familyid' => 'Camera', 'family' => t('Caméra', __FILE__), 'type' => 'Action', 'subtype' => array('other') ), 'CAMERA_PRESET' => array( - 'name' => __('Preset caméra', __FILE__), 'familyid' => 'Camera', 'family' => __('Caméra', __FILE__), + 'name' => t('Preset caméra', __FILE__), 'familyid' => 'Camera', 'family' => t('Caméra', __FILE__), 'type' => 'Action', 'subtype' => array('other') ), 'CAMERA_URL' => array( - 'name' => __('URL caméra', __FILE__), 'familyid' => 'Camera', 'family' => __('Caméra', __FILE__), + 'name' => t('URL caméra', __FILE__), 'familyid' => 'Camera', 'family' => t('Caméra', __FILE__), 'type' => 'Info', 'subtype' => array('string') ), 'CAMERA_RECORD_STATE' => array( - 'name' => __('État enregistrement caméra', __FILE__), 'familyid' => 'Camera', 'family' => __('Caméra', __FILE__), + 'name' => t('État enregistrement caméra', __FILE__), 'familyid' => 'Camera', 'family' => t('Caméra', __FILE__), 'type' => 'Info', 'subtype' => array('binary') ), 'CAMERA_RECORD' => array( - 'name' => __('Enregistrement caméra', __FILE__), 'familyid' => 'Camera', 'family' => __('Caméra', __FILE__), + 'name' => t('Enregistrement caméra', __FILE__), 'familyid' => 'Camera', 'family' => t('Caméra', __FILE__), 'type' => 'Action' ), 'CAMERA_TAKE' => array( - 'name' => __('Snapshot caméra', __FILE__), 'familyid' => 'Camera', 'family' => __('Caméra', __FILE__), + 'name' => t('Snapshot caméra', __FILE__), 'familyid' => 'Camera', 'family' => t('Caméra', __FILE__), 'type' => 'Action' ), 'MODE_STATE' => array( - 'name' => __('Mode Etat', __FILE__), 'familyid' => 'Mode', 'family' => __('Mode', __FILE__), + 'name' => t('Mode Etat', __FILE__), 'familyid' => 'Mode', 'family' => t('Mode', __FILE__), 'type' => 'Info', 'subtype' => array('string') ), 'MODE_SET_STATE' => array( - 'name' => __('Changer Mode', __FILE__), 'familyid' => 'Mode', 'family' => __('Mode', __FILE__), + 'name' => t('Changer Mode', __FILE__), 'familyid' => 'Mode', 'family' => t('Mode', __FILE__), 'type' => 'Action', 'subtype' => array('other','select') ), 'SIREN_STATE' => array( - 'name' => __('Sirène Etat', __FILE__), 'familyid' => 'Security', 'family' => __('Sécurité', __FILE__), + 'name' => t('Sirène Etat', __FILE__), 'familyid' => 'Security', 'family' => t('Sécurité', __FILE__), 'type' => 'Info', 'subtype' => array('binary') ), 'SIREN_OFF' => array( - 'name' => __('Sirène Bouton Off', __FILE__), 'familyid' => 'Security', 'family' => __('Sécurité', __FILE__), + 'name' => t('Sirène Bouton Off', __FILE__), 'familyid' => 'Security', 'family' => t('Sécurité', __FILE__), 'type' => 'Action', 'summary' => array('subtype' => 'other'), 'subtype' => array('other') ), 'SIREN_ON' => array( - 'name' => __('Sirène Bouton On', __FILE__), 'familyid' => 'Security', 'family' => __('Sécurité', __FILE__), + 'name' => t('Sirène Bouton On', __FILE__), 'familyid' => 'Security', 'family' => t('Sécurité', __FILE__), 'type' => 'Action', 'summary' => array('subtype' => 'other'), 'subtype' => array('other') ), 'ALARM_STATE' => array( - 'name' => __('Alarme Etat', __FILE__), 'familyid' => 'Security', 'family' => __('Sécurité', __FILE__), + 'name' => t('Alarme Etat', __FILE__), 'familyid' => 'Security', 'family' => t('Sécurité', __FILE__), 'type' => 'Info', 'subtype' => array('binary', 'string') ), 'ALARM_MODE' => array( - 'name' => __('Alarme mode', __FILE__), 'familyid' => 'Security', 'family' => __('Sécurité', __FILE__), + 'name' => t('Alarme mode', __FILE__), 'familyid' => 'Security', 'family' => t('Sécurité', __FILE__), 'type' => 'Info', 'subtype' => array('string') ), 'ALARM_ENABLE_STATE' => array( - 'name' => __('Alarme Etat activée', __FILE__), 'familyid' => 'Security', 'family' => __('Sécurité', __FILE__), + 'name' => t('Alarme Etat activée', __FILE__), 'familyid' => 'Security', 'family' => t('Sécurité', __FILE__), 'type' => 'Info', 'subtype' => array('binary') ), 'ALARM_ARMED' => array( - 'name' => __('Alarme armée', __FILE__), 'familyid' => 'Security', 'family' => __('Sécurité', __FILE__), + 'name' => t('Alarme armée', __FILE__), 'familyid' => 'Security', 'family' => t('Sécurité', __FILE__), 'type' => 'Action', 'subtype' => array('other') ), 'ALARM_RELEASED' => array( - 'name' => __('Alarme libérée', __FILE__), 'familyid' => 'Security', 'family' => __('Sécurité', __FILE__), + 'name' => t('Alarme libérée', __FILE__), 'familyid' => 'Security', 'family' => t('Sécurité', __FILE__), 'type' => 'Action', 'subtype' => array('other') ), 'ALARM_SET_MODE' => array( - 'name' => __('Alarme Mode', __FILE__), 'familyid' => 'Security', 'family' => __('Sécurité', __FILE__), + 'name' => t('Alarme Mode', __FILE__), 'familyid' => 'Security', 'family' => t('Sécurité', __FILE__), 'type' => 'Action', 'subtype' => array('other','select') ), 'FLOOD' => array( - 'name' => __('Inondation', __FILE__), 'familyid' => 'Security', 'family' => __('Sécurité', __FILE__), + 'name' => t('Inondation', __FILE__), 'familyid' => 'Security', 'family' => t('Sécurité', __FILE__), 'type' => 'Info', 'subtype' => array('binary') ), 'SABOTAGE' => array( - 'name' => __('Sabotage', __FILE__), 'familyid' => 'Security', 'family' => __('Sécurité', __FILE__), + 'name' => t('Sabotage', __FILE__), 'familyid' => 'Security', 'family' => t('Sécurité', __FILE__), 'type' => 'Info', 'subtype' => array('binary') ), 'SHOCK' => array( - 'name' => __('Choc', __FILE__), 'familyid' => 'Security', 'family' => __('Sécurité', __FILE__), + 'name' => t('Choc', __FILE__), 'familyid' => 'Security', 'family' => t('Sécurité', __FILE__), 'type' => 'Info', 'subtype' => array('binary', 'numeric') ), 'WEATHER_TEMPERATURE' => array( - 'name' => __('Météo Température', __FILE__), 'familyid' => 'Weather', 'family' => __('Météo', __FILE__), + 'name' => t('Météo Température', __FILE__), 'familyid' => 'Weather', 'family' => t('Météo', __FILE__), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'WEATHER_HUMIDITY' => array( - 'name' => __('Météo Humidité', __FILE__), 'familyid' => 'Weather', 'family' => __('Météo', __FILE__), + 'name' => t('Météo Humidité', __FILE__), 'familyid' => 'Weather', 'family' => t('Météo', __FILE__), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'WEATHER_PRESSURE' => array( - 'name' => __('Météo Pression', __FILE__), 'familyid' => 'Weather', 'family' => __('Météo', __FILE__), + 'name' => t('Météo Pression', __FILE__), 'familyid' => 'Weather', 'family' => t('Météo', __FILE__), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'WEATHER_WIND_SPEED' => array( - 'name' => __('Météo vitesse du vent', __FILE__), 'familyid' => 'Weather', 'family' => __('Météo', __FILE__), + 'name' => t('Météo vitesse du vent', __FILE__), 'familyid' => 'Weather', 'family' => t('Météo', __FILE__), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'WEATHER_WIND_DIRECTION' => array( - 'name' => __('Météo direction du vent', __FILE__), 'familyid' => 'Weather', 'family' => __('Météo', __FILE__), + 'name' => t('Météo direction du vent', __FILE__), 'familyid' => 'Weather', 'family' => t('Météo', __FILE__), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'WEATHER_SUNSET' => array( - 'name' => __('Météo coucher de soleil', __FILE__), 'familyid' => 'Weather', 'family' => __('Météo', __FILE__), + 'name' => t('Météo coucher de soleil', __FILE__), 'familyid' => 'Weather', 'family' => t('Météo', __FILE__), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'WEATHER_SUNRISE' => array( - 'name' => __('Météo lever de soleil', __FILE__), 'familyid' => 'Weather', 'family' => __('Météo', __FILE__), + 'name' => t('Météo lever de soleil', __FILE__), 'familyid' => 'Weather', 'family' => t('Météo', __FILE__), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'WEATHER_TEMPERATURE_MIN' => array( - 'name' => __('Météo Température min', __FILE__), 'familyid' => 'Weather', 'family' => __('Météo', __FILE__), + 'name' => t('Météo Température min', __FILE__), 'familyid' => 'Weather', 'family' => t('Météo', __FILE__), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'WEATHER_TEMPERATURE_MAX' => array( - 'name' => __('Météo Température max', __FILE__), 'familyid' => 'Weather', 'family' => __('Météo', __FILE__), + 'name' => t('Météo Température max', __FILE__), 'familyid' => 'Weather', 'family' => t('Météo', __FILE__), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'WEATHER_CONDITION' => array( - 'name' => __('Météo condition', __FILE__), 'familyid' => 'Weather', 'family' => __('Météo', __FILE__), + 'name' => t('Météo condition', __FILE__), 'familyid' => 'Weather', 'family' => t('Météo', __FILE__), 'type' => 'Info', 'subtype' => array('string') ), 'WEATHER_CONDITION_ID' => array( - 'name' => __('Météo condition (id)', __FILE__), 'familyid' => 'Weather', 'family' => __('Météo', __FILE__), + 'name' => t('Météo condition (id)', __FILE__), 'familyid' => 'Weather', 'family' => t('Météo', __FILE__), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'text' ), 'WEATHER_TEMPERATURE_MIN_1' => array( - 'name' => __('Météo Température min j+1', __FILE__), 'familyid' => 'Weather', 'family' => __('Météo', __FILE__), + 'name' => t('Météo Température min j+1', __FILE__), 'familyid' => 'Weather', 'family' => t('Météo', __FILE__), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'WEATHER_TEMPERATURE_MAX_1' => array( - 'name' => __('Météo Température max j+1', __FILE__), 'familyid' => 'Weather', 'family' => __('Météo', __FILE__), + 'name' => t('Météo Température max j+1', __FILE__), 'familyid' => 'Weather', 'family' => t('Météo', __FILE__), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'WEATHER_CONDITION_1' => array( - 'name' => __('Météo condition j+1', __FILE__), 'familyid' => 'Weather', 'family' => __('Météo', __FILE__), + 'name' => t('Météo condition j+1', __FILE__), 'familyid' => 'Weather', 'family' => t('Météo', __FILE__), 'type' => 'Info', 'subtype' => array('string'), 'calcul' => 'text' ), 'WEATHER_CONDITION_ID_1' => array( - 'name' => __('Météo condition (id) j+1', __FILE__), 'familyid' => 'Weather', 'family' => __('Météo', __FILE__), + 'name' => t('Météo condition (id) j+1', __FILE__), 'familyid' => 'Weather', 'family' => t('Météo', __FILE__), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'text' ), 'WEATHER_TEMPERATURE_MIN_2' => array( - 'name' => __('Météo Température min j+2', __FILE__), 'familyid' => 'Weather', 'family' => __('Météo', __FILE__), + 'name' => t('Météo Température min j+2', __FILE__), 'familyid' => 'Weather', 'family' => t('Météo', __FILE__), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'WEATHER_TEMPERATURE_MAX_2' => array( - 'name' => __('Météo condition j+1 max j+2', __FILE__), 'familyid' => 'Weather', 'family' => __('Météo', __FILE__), + 'name' => t('Météo condition j+1 max j+2', __FILE__), 'familyid' => 'Weather', 'family' => t('Météo', __FILE__), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'WEATHER_CONDITION_2' => array( - 'name' => __('Météo condition j+2', __FILE__), 'familyid' => 'Weather', 'family' => __('Météo', __FILE__), + 'name' => t('Météo condition j+2', __FILE__), 'familyid' => 'Weather', 'family' => t('Météo', __FILE__), 'type' => 'Info', 'subtype' => array('string'), 'calcul' => 'text' ), 'WEATHER_CONDITION_ID_2' => array( - 'name' => __('Météo condition (id) j+2', __FILE__), 'familyid' => 'Weather', 'family' => __('Météo', __FILE__), + 'name' => t('Météo condition (id) j+2', __FILE__), 'familyid' => 'Weather', 'family' => t('Météo', __FILE__), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'text' ), 'WEATHER_TEMPERATURE_MIN_3' => array( - 'name' => __('Météo Température min j+3', __FILE__), 'familyid' => 'Weather', 'family' => __('Météo', __FILE__), + 'name' => t('Météo Température min j+3', __FILE__), 'familyid' => 'Weather', 'family' => t('Météo', __FILE__), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'WEATHER_TEMPERATURE_MAX_3' => array( - 'name' => __('Météo Température max j+3', __FILE__), 'familyid' => 'Weather', 'family' => __('Météo', __FILE__), + 'name' => t('Météo Température max j+3', __FILE__), 'familyid' => 'Weather', 'family' => t('Météo', __FILE__), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'WEATHER_CONDITION_3' => array( - 'name' => __('Météo condition j+3', __FILE__), 'familyid' => 'Weather', 'family' => __('Météo', __FILE__), + 'name' => t('Météo condition j+3', __FILE__), 'familyid' => 'Weather', 'family' => t('Météo', __FILE__), 'type' => 'Info', 'subtype' => array('string'), 'calcul' => 'text' ), 'WEATHER_CONDITION_ID_3' => array( - 'name' => __('Météo condition (id) j+3', __FILE__), 'familyid' => 'Weather', 'family' => __('Météo', __FILE__), + 'name' => t('Météo condition (id) j+3', __FILE__), 'familyid' => 'Weather', 'family' => t('Météo', __FILE__), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'text' ), 'WEATHER_TEMPERATURE_MIN_4' => array( - 'name' => __('Météo Température min j+4', __FILE__), 'familyid' => 'Weather', 'family' => __('Météo', __FILE__), + 'name' => t('Météo Température min j+4', __FILE__), 'familyid' => 'Weather', 'family' => t('Météo', __FILE__), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'WEATHER_TEMPERATURE_MAX_4' => array( - 'name' => __('Météo Température max j+4', __FILE__), 'familyid' => 'Weather', 'family' => __('Météo', __FILE__), + 'name' => t('Météo Température max j+4', __FILE__), 'familyid' => 'Weather', 'family' => t('Météo', __FILE__), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'WEATHER_CONDITION_4' => array( - 'name' => __('Météo condition j+4', __FILE__), 'familyid' => 'Weather', 'family' => __('Météo', __FILE__), + 'name' => t('Météo condition j+4', __FILE__), 'familyid' => 'Weather', 'family' => t('Météo', __FILE__), 'type' => 'Info', 'subtype' => array('string'), 'calcul' => 'text' ), 'WEATHER_CONDITION_ID_4' => array( - 'name' => __('Météo condition (id) j+4', __FILE__), 'familyid' => 'Weather', 'family' => __('Météo', __FILE__), + 'name' => t('Météo condition (id) j+4', __FILE__), 'familyid' => 'Weather', 'family' => t('Météo', __FILE__), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'text' ), 'RAIN_CURRENT' => array( - 'name' => __('Pluie (mm/h)', __FILE__), 'familyid' => 'Weather', 'family' => __('Météo', __FILE__), + 'name' => t('Pluie (mm/h)', __FILE__), 'familyid' => 'Weather', 'family' => t('Météo', __FILE__), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'RAIN_TOTAL' => array( - 'name' => __('Pluie (accumulation)', __FILE__), 'familyid' => 'Weather', 'family' => __('Météo', __FILE__), + 'name' => t('Pluie (accumulation)', __FILE__), 'familyid' => 'Weather', 'family' => t('Météo', __FILE__), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'WIND_SPEED' => array( - 'name' => __('Vent (vitesse)', __FILE__), 'familyid' => 'Weather', 'family' => __('Météo', __FILE__), + 'name' => t('Vent (vitesse)', __FILE__), 'familyid' => 'Weather', 'family' => t('Météo', __FILE__), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'WIND_DIRECTION' => array( - 'name' => __('Vent (direction)', __FILE__), 'familyid' => 'Weather', 'family' => __('Météo', __FILE__), + 'name' => t('Vent (direction)', __FILE__), 'familyid' => 'Weather', 'family' => t('Météo', __FILE__), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'POWER' => array( - 'name' => __('Puissance Electrique', __FILE__), 'familyid' => 'Electricity', 'family' => __('Electricité', __FILE__), + 'name' => t('Puissance Electrique', __FILE__), 'familyid' => 'Electricity', 'family' => t('Electricité', __FILE__), 'type' => 'Info', 'subtype' => array('numeric') ), 'CONSUMPTION' => array( - 'name' => __('Consommation Electrique', __FILE__), 'familyid' => 'Electricity', 'family' => __('Electricité', __FILE__), + 'name' => t('Consommation Electrique', __FILE__), 'familyid' => 'Electricity', 'family' => t('Electricité', __FILE__), 'type' => 'Info', 'subtype' => array('numeric') ), 'DAILY_CONSUMPTION' => array( - 'name' => __('Consommation Electrique Journalière', __FILE__), 'familyid' => 'Electricity', 'family' => __('Electricité', __FILE__), + 'name' => t('Consommation Electrique Journalière', __FILE__), 'familyid' => 'Electricity', 'family' => t('Electricité', __FILE__), 'type' => 'Info', 'subtype' => array('numeric') ), 'PRODUCTION' => array( - 'name' => __('Production Electrique', __FILE__), 'familyid' => 'Electricity', 'family' => __('Electricité', __FILE__), + 'name' => t('Production Electrique', __FILE__), 'familyid' => 'Electricity', 'family' => t('Electricité', __FILE__), 'type' => 'Info', 'subtype' => array('numeric') ), 'DAILY_PRODUCTION' => array( - 'name' => __('Production Electrique Journalière', __FILE__), 'familyid' => 'Electricity', 'family' => __('Electricité', __FILE__), + 'name' => t('Production Electrique Journalière', __FILE__), 'familyid' => 'Electricity', 'family' => t('Electricité', __FILE__), 'type' => 'Info', 'subtype' => array('numeric') ), 'VOLTAGE' => array( - 'name' => __('Tension', __FILE__), 'familyid' => 'Electricity', 'family' => __('Electricité', __FILE__), + 'name' => t('Tension', __FILE__), 'familyid' => 'Electricity', 'family' => t('Electricité', __FILE__), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'REBOOT' => array( - 'name' => __('Redémarrage', __FILE__), 'familyid' => 'Electricity', 'family' => __('Electricité', __FILE__), + 'name' => t('Redémarrage', __FILE__), 'familyid' => 'Electricity', 'family' => t('Electricité', __FILE__), 'type' => 'Action', 'subtype' => array('other') ), 'TEMPERATURE' => array( - 'name' => __('Température', __FILE__), 'familyid' => 'Environment', 'family' => __('Environnement', __FILE__), + 'name' => t('Température', __FILE__), 'familyid' => 'Environment', 'family' => t('Environnement', __FILE__), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'AIR_QUALITY' => array( - 'name' => __('Qualité de l\'air', __FILE__), 'familyid' => 'Environment', 'family' => __('Environnement', __FILE__), + 'name' => t('Qualité de l\'air', __FILE__), 'familyid' => 'Environment', 'family' => t('Environnement', __FILE__), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'BRIGHTNESS' => array( - 'name' => __('Luminosité', __FILE__), 'familyid' => 'Environment', 'family' => __('Environnement', __FILE__), + 'name' => t('Luminosité', __FILE__), 'familyid' => 'Environment', 'family' => t('Environnement', __FILE__), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'PRESENCE' => array( - 'name' => __('Présence', __FILE__), 'familyid' => 'Environment', 'family' => __('Environnement', __FILE__), + 'name' => t('Présence', __FILE__), 'familyid' => 'Environment', 'family' => t('Environnement', __FILE__), 'type' => 'Info', 'subtype' => array('binary') ), 'SMOKE' => array( - 'name' => __('Détection de fumée', __FILE__), 'familyid' => 'Environment', 'family' => __('Environnement', __FILE__), + 'name' => t('Détection de fumée', __FILE__), 'familyid' => 'Environment', 'family' => t('Environnement', __FILE__), 'type' => 'Info', 'subtype' => array('binary') ), 'HUMIDITY' => array( - 'name' => __('Humidité', __FILE__), 'familyid' => 'Environment', 'family' => __('Environnement', __FILE__), + 'name' => t('Humidité', __FILE__), 'familyid' => 'Environment', 'family' => t('Environnement', __FILE__), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'UV' => array( - 'name' => __('UV', __FILE__), 'familyid' => 'Environment', 'family' => __('Environnement', __FILE__), + 'name' => t('UV', __FILE__), 'familyid' => 'Environment', 'family' => t('Environnement', __FILE__), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'CO2' => array( - 'name' => __('CO2 (ppm)', __FILE__), 'familyid' => 'Environment', 'family' => __('Environnement', __FILE__), + 'name' => t('CO2 (ppm)', __FILE__), 'familyid' => 'Environment', 'family' => t('Environnement', __FILE__), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'CO' => array( - 'name' => __('CO (ppm)', __FILE__), 'familyid' => 'Environment', 'family' => __('Environnement', __FILE__), + 'name' => t('CO (ppm)', __FILE__), 'familyid' => 'Environment', 'family' => t('Environnement', __FILE__), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'NOISE' => array( - 'name' => __('Son (dB)', __FILE__), 'familyid' => 'Environment', 'family' => __('Environnement', __FILE__), + 'name' => t('Son (dB)', __FILE__), 'familyid' => 'Environment', 'family' => t('Environnement', __FILE__), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'PRESSURE' => array( - 'name' => __('Pression', __FILE__), 'familyid' => 'Environment', 'family' => __('Environnement', __FILE__), + 'name' => t('Pression', __FILE__), 'familyid' => 'Environment', 'family' => t('Environnement', __FILE__), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'WATER_LEAK' => array( - 'name' => __('Fuite d\'eau', __FILE__), 'familyid' => 'Environment', 'family' => __('Environnement', __FILE__), + 'name' => t('Fuite d\'eau', __FILE__), 'familyid' => 'Environment', 'family' => t('Environnement', __FILE__), 'type' => 'Info' ), 'FILTER_CLEAN_STATE' => array( - 'name' => __('Etat du filtre', __FILE__), 'familyid' => 'Environment', 'family' => __('Environnement', __FILE__), + 'name' => t('Etat du filtre', __FILE__), 'familyid' => 'Environment', 'family' => t('Environnement', __FILE__), 'type' => 'Info', 'subtype' => array('binary') ), 'DEPTH' => array( - 'name' => __('Profondeur', __FILE__), 'familyid' => 'Generic', 'family' => __('Generic', __FILE__), + 'name' => t('Profondeur', __FILE__), 'familyid' => 'Generic', 'family' => t('Generic', __FILE__), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'DISTANCE' => array( - 'name' => __('Distance', __FILE__), 'familyid' => 'Generic', 'family' => __('Generic', __FILE__), + 'name' => t('Distance', __FILE__), 'familyid' => 'Generic', 'family' => t('Generic', __FILE__), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'BUTTON' => array( - 'name' => __('Bouton', __FILE__), 'familyid' => 'Generic', 'family' => __('Generic', __FILE__), + 'name' => t('Bouton', __FILE__), 'familyid' => 'Generic', 'family' => t('Generic', __FILE__), 'type' => 'Info', 'subtype' => array('binary', 'numeric') ), 'GENERIC_INFO' => array( - 'name' => ' ' . __('Générique', __FILE__), 'familyid' => 'Generic', 'family' => __('Generic', __FILE__), + 'name' => t('Générique', __FILE__, false, ' '), 'familyid' => 'Generic', 'family' => t('Generic', __FILE__), 'type' => 'Info' ), 'GENERIC_ACTION' => array( - 'name' => ' ' . __('Générique', __FILE__), 'familyid' => 'Generic', 'family' => __('Generic', __FILE__), + 'name' => t('Générique', __FILE__, false, ' '), 'familyid' => 'Generic', 'family' => t('Generic', __FILE__), 'type' => 'Action' ), 'DONT' => array( - 'name' => __('Ne pas tenir compte de cette commande', __FILE__), 'familyid' => 'Generic', 'family' => __('Generic', __FILE__), + 'name' => t('Ne pas tenir compte de cette commande', __FILE__), 'familyid' => 'Generic', 'family' => t('Generic', __FILE__), 'type' => 'All' ), 'BATTERY' => array( - 'name' => __('Batterie', __FILE__), 'familyid' => 'Battery', 'family' => __('Batterie', __FILE__), + 'name' => t('Batterie', __FILE__), 'familyid' => 'Battery', 'family' => t('Batterie', __FILE__), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'BATTERY_CHARGING' => array( - 'name' => __('Batterie en charge', __FILE__), 'familyid' => 'Battery', 'family' => __('Batterie', __FILE__), + 'name' => t('Batterie en charge', __FILE__), 'familyid' => 'Battery', 'family' => t('Batterie', __FILE__), 'type' => 'Info', 'subtype' => array('binary') ), 'VOLUME' => array( - 'name' => __('Volume', __FILE__), 'familyid' => 'Multimedia', 'family' => __('Multimédia', __FILE__), + 'name' => t('Volume', __FILE__), 'familyid' => 'Multimedia', 'family' => t('Multimédia', __FILE__), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'MEDIA_STATUS' => array( - 'name' => __('Status', __FILE__), 'familyid' => 'Multimedia', 'family' => __('Multimédia', __FILE__), + 'name' => t('Status', __FILE__), 'familyid' => 'Multimedia', 'family' => t('Multimédia', __FILE__), 'type' => 'Info', 'subtype' => array('string') ), 'MEDIA_ALBUM' => array( - 'name' => __('Album', __FILE__), 'familyid' => 'Multimedia', 'family' => __('Multimédia', __FILE__), + 'name' => t('Album', __FILE__), 'familyid' => 'Multimedia', 'family' => t('Multimédia', __FILE__), 'type' => 'Info', 'subtype' => array('string') ), 'MEDIA_ARTIST' => array( - 'name' => __('Artiste', __FILE__), 'familyid' => 'Multimedia', 'family' => __('Multimédia', __FILE__), + 'name' => t('Artiste', __FILE__), 'familyid' => 'Multimedia', 'family' => t('Multimédia', __FILE__), 'type' => 'Info', 'subtype' => array('string') ), 'MEDIA_TITLE' => array( - 'name' => __('Titre', __FILE__), 'familyid' => 'Multimedia', 'family' => __('Multimédia', __FILE__), + 'name' => t('Titre', __FILE__), 'familyid' => 'Multimedia', 'family' => t('Multimédia', __FILE__), 'type' => 'Info', 'subtype' => array('string') ), 'MEDIA_POWER' => array( - 'name' => __('Power', __FILE__), 'familyid' => 'Multimedia', 'family' => __('Multimédia', __FILE__), + 'name' => t('Power', __FILE__), 'familyid' => 'Multimedia', 'family' => t('Multimédia', __FILE__), 'type' => 'Info', 'subtype' => array('string') ), 'SET_VOLUME' => array( - 'name' => __('Volume', __FILE__), 'familyid' => 'Multimedia', 'family' => __('Multimédia', __FILE__), + 'name' => t('Volume', __FILE__), 'familyid' => 'Multimedia', 'family' => t('Multimédia', __FILE__), 'type' => 'Action', 'subtype' => array('slider') ), 'CHANNEL' => array( - 'name' => __('Chaine', __FILE__), 'familyid' => 'Multimedia', 'family' => __('Multimédia', __FILE__), + 'name' => t('Chaine', __FILE__), 'familyid' => 'Multimedia', 'family' => t('Multimédia', __FILE__), 'type' => 'Info', 'subtype' => array('numeric', 'string'), 'calcul' => 'text' ), 'SET_CHANNEL' => array( - 'name' => __('Chaine', __FILE__), 'familyid' => 'Multimedia', 'family' => __('Multimédia', __FILE__), + 'name' => t('Chaine', __FILE__), 'familyid' => 'Multimedia', 'family' => t('Multimédia', __FILE__), 'type' => 'Action', 'subtype' => array('other', 'slider') ), 'MEDIA_PAUSE' => array( - 'name' => __('Pause', __FILE__), 'familyid' => 'Multimedia', 'family' => __('Multimédia', __FILE__), + 'name' => t('Pause', __FILE__), 'familyid' => 'Multimedia', 'family' => t('Multimédia', __FILE__), 'type' => 'Action', 'subtype' => array('other') ), 'MEDIA_RESUME' => array( - 'name' => __('Lecture', __FILE__), 'familyid' => 'Multimedia', 'family' => __('Multimédia', __FILE__), + 'name' => t('Lecture', __FILE__), 'familyid' => 'Multimedia', 'family' => t('Multimédia', __FILE__), 'type' => 'Action', 'subtype' => array('other') ), 'MEDIA_STOP' => array( - 'name' => __('Stop', __FILE__), 'familyid' => 'Multimedia', 'family' => __('Multimédia', __FILE__), + 'name' => t('Stop', __FILE__), 'familyid' => 'Multimedia', 'family' => t('Multimédia', __FILE__), 'type' => 'Action', 'subtype' => array('other') ), 'MEDIA_NEXT' => array( - 'name' => __('Suivant', __FILE__), 'familyid' => 'Multimedia', 'family' => __('Multimédia', __FILE__), + 'name' => t('Suivant', __FILE__), 'familyid' => 'Multimedia', 'family' => t('Multimédia', __FILE__), 'type' => 'Action', 'subtype' => array('other') ), 'MEDIA_PREVIOUS' => array( - 'name' => __('Précedent', __FILE__), 'familyid' => 'Multimedia', 'family' => __('Multimédia', __FILE__), + 'name' => t('Précedent', __FILE__), 'familyid' => 'Multimedia', 'family' => t('Multimédia', __FILE__), 'type' => 'Action', 'subtype' => array('other') ), 'MEDIA_ON' => array( - 'name' => __('On', __FILE__), 'familyid' => 'Multimedia', 'family' => __('Multimédia', __FILE__), + 'name' => t('On', __FILE__), 'familyid' => 'Multimedia', 'family' => t('Multimédia', __FILE__), 'type' => 'Action', 'subtype' => array('other') ), 'MEDIA_OFF' => array( - 'name' => __('Off', __FILE__), 'familyid' => 'Multimedia', 'family' => __('Multimédia', __FILE__), + 'name' => t('Off', __FILE__), 'familyid' => 'Multimedia', 'family' => t('Multimédia', __FILE__), 'type' => 'Action', 'subtype' => array('other') ), 'MEDIA_STATE' => array( - 'name' => __('Etat', __FILE__), 'familyid' => 'Multimedia', 'family' => __('Multimédia', __FILE__), + 'name' => t('Etat', __FILE__), 'familyid' => 'Multimedia', 'family' => t('Multimédia', __FILE__), 'type' => 'Info', 'subtype' => array('binary') ), 'MEDIA_MUTE' => array( - 'name' => __('Muet', __FILE__), 'familyid' => 'Multimedia', 'family' => __('Multimédia', __FILE__), + 'name' => t('Muet', __FILE__), 'familyid' => 'Multimedia', 'family' => t('Multimédia', __FILE__), 'type' => 'Action', 'subtype' => array('other') ), 'MEDIA_UNMUTE' => array( - 'name' => __('Non Muet', __FILE__), 'familyid' => 'Multimedia', 'family' => __('Multimédia', __FILE__), + 'name' => t('Non Muet', __FILE__), 'familyid' => 'Multimedia', 'family' => t('Multimédia', __FILE__), 'type' => 'Action', 'subtype' => array('other') ), 'FAN_SPEED' => array( - 'name' => __('Vitesse ventilateur', __FILE__), 'familyid' => 'Fan', 'family' => __('Ventilateur', __FILE__), + 'name' => t('Vitesse ventilateur', __FILE__), 'familyid' => 'Fan', 'family' => t('Ventilateur', __FILE__), 'type' => 'Action', 'subtype' => array('slider') ), 'FAN_SPEED_STATE' => array( - 'name' => __('Vitesse ventilateur Etat', __FILE__), 'familyid' => 'Fan', 'family' => __('Ventilateur', __FILE__), + 'name' => t('Vitesse ventilateur Etat', __FILE__), 'familyid' => 'Fan', 'family' => t('Ventilateur', __FILE__), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'ROTATION' => array( - 'name' => __('Rotation', __FILE__), 'familyid' => 'Fan', 'family' => __('Ventilateur', __FILE__), + 'name' => t('Rotation', __FILE__), 'familyid' => 'Fan', 'family' => t('Ventilateur', __FILE__), 'type' => 'Action', 'subtype' => array('slider') ), 'ROTATION_STATE' => array( - 'name' => __('Rotation Etat', __FILE__), 'familyid' => 'Fan', 'family' => __('Ventilateur', __FILE__), + 'name' => t('Rotation Etat', __FILE__), 'familyid' => 'Fan', 'family' => t('Ventilateur', __FILE__), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'DOCK' => array( - 'name' => __('Retour base', __FILE__), 'familyid' => 'Robot', 'family' => __('Robot', __FILE__), + 'name' => t('Retour base', __FILE__), 'familyid' => 'Robot', 'family' => t('Robot', __FILE__), 'type' => 'Action', 'subtype' => array('other') ), 'DOCK_STATE' => array( - 'name' => __('Base Etat', __FILE__), 'familyid' => 'Robot', 'family' => __('Robot', __FILE__), + 'name' => t('Base Etat', __FILE__), 'familyid' => 'Robot', 'family' => t('Robot', __FILE__), 'type' => 'Info', 'subtype' => array('binary') ), 'TIMER' => array( - 'name' => __('Minuteur Etat', __FILE__), 'familyid' => 'Other', 'family' => __('Autre', __FILE__), + 'name' => t('Minuteur Etat', __FILE__), 'familyid' => 'Other', 'family' => t('Autre', __FILE__), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'SET_TIMER' => array( - 'name' => __('Minuteur', __FILE__), 'familyid' => 'Other', 'family' => __('Autre', __FILE__), + 'name' => t('Minuteur', __FILE__), 'familyid' => 'Other', 'family' => t('Autre', __FILE__), 'type' => 'Action', 'subtype' => array('slider') ), 'TIMER_STATE' => array( - 'name' => __('Minuteur Etat (pause ou non)', __FILE__), 'familyid' => 'Other', 'family' => __('Autre', __FILE__), + 'name' => t('Minuteur Etat (pause ou non)', __FILE__), 'familyid' => 'Other', 'family' => t('Autre', __FILE__), 'type' => 'Info', 'subtype' => array('binary', 'numeric'), 'calcul' => 'avg' ), 'TIMER_PAUSE' => array( - 'name' => __('Minuteur pause', __FILE__), 'familyid' => 'Other', 'family' => __('Autre', __FILE__), + 'name' => t('Minuteur pause', __FILE__), 'familyid' => 'Other', 'family' => t('Autre', __FILE__), 'type' => 'Action', 'subtype' => array('other') ), 'TIMER_RESUME' => array( - 'name' => __('Minuteur reprendre', __FILE__), 'familyid' => 'Other', 'family' => __('Autre', __FILE__), + 'name' => t('Minuteur reprendre', __FILE__), 'familyid' => 'Other', 'family' => t('Autre', __FILE__), 'type' => 'Action', 'subtype' => array('other') ), ), 'type' => array( 'info' => array( - 'name' => __('Info', __FILE__), + 'name' => t('Info', __FILE__), 'subtype' => array( 'numeric' => array( - 'name' => __('Numérique', __FILE__), + 'name' => t('Numérique', __FILE__), 'configuration' => array( 'minValue' => array('visible' => true), 'maxValue' => array('visible' => true), @@ -875,7 +910,7 @@ ), ), 'binary' => array( - 'name' => __('Binaire', __FILE__), + 'name' => t('Binaire', __FILE__), 'configuration' => array( 'minValue' => array('visible' => false), 'maxValue' => array('visible' => false), @@ -889,7 +924,7 @@ ), ), 'string' => array( - 'name' => __('Autre', __FILE__), + 'name' => t('Autre', __FILE__), 'configuration' => array( 'minValue' => array('visible' => false), 'maxValue' => array('visible' => false), @@ -905,10 +940,10 @@ ), ), 'action' => array( - 'name' => __('Action', __FILE__), + 'name' => t('Action', __FILE__), 'subtype' => array( 'other' => array( - 'name' => __('Défaut', __FILE__), + 'name' => t('Défaut', __FILE__), 'configuration' => array( 'minValue' => array('visible' => false), 'maxValue' => array('visible' => false), @@ -922,7 +957,7 @@ ), ), 'slider' => array( - 'name' => __('Curseur', __FILE__), + 'name' => t('Curseur', __FILE__), 'configuration' => array( 'minValue' => array('visible' => true), 'maxValue' => array('visible' => true), @@ -936,7 +971,7 @@ ), ), 'message' => array( - 'name' => __('Message', __FILE__), + 'name' => t('Message', __FILE__), 'configuration' => array( 'minValue' => array('visible' => false), 'maxValue' => array('visible' => false), @@ -950,7 +985,7 @@ ), ), 'color' => array( - 'name' => __('Couleur', __FILE__), + 'name' => t('Couleur', __FILE__), 'configuration' => array( 'minValue' => array('visible' => false), 'maxValue' => array('visible' => false), @@ -964,7 +999,7 @@ ), ), 'select' => array( - 'name' => __('Liste', __FILE__), + 'name' => t('Liste', __FILE__), 'configuration' => array( 'minValue' => array('visible' => false), 'maxValue' => array('visible' => false), @@ -983,41 +1018,41 @@ ), ); $GLOBALS['JEEDOM_SCLOG_TEXT'] = array( - 'startManual' => array('txt' => __('Scénario lancé manuellement', __FILE__), 'replace' => ''), - 'startAutoOnEvent' => array('txt' => __('Scénario exécuté automatiquement sur événement venant de :', __FILE__) . ' ', 'replace' => ''), - 'startOnEvent' => array('txt' => __('Scénario exécuté sur événement', __FILE__), 'replace' => ''), - 'startAutoOnShedule' => array('txt' => __('Scénario exécuté automatiquement sur programmation', __FILE__), 'replace' => ''), - 'finishOk' => array('txt' => __('Fin correcte du scénario', __FILE__), 'replace' => ''), - 'sheduledOn' => array('txt' => ' ' . __('programmée à :', __FILE__) . ' ', 'replace' => ''), - 'startByScenario' => array('txt' => __('Lancement provoqué par le scénario :', __FILE__) . ' ', 'replace' => ''), - 'startCausedBy' => array('txt' => __('Lancement provoqué', __FILE__), 'replace' => ''), - 'startSubTask' => array('txt' => __('************Lancement sous tâche**************', __FILE__), 'replace' => ''), - 'endSubTask' => array('txt' => __('************FIN sous tâche**************', __FILE__), 'replace' => ''), - 'sheduleNow' => array('txt' => ' ' . __('lancement immédiat', __FILE__) . ' ', 'replace' => ''), + 'startManual' => array('txt' => t('Scénario lancé manuellement', __FILE__), 'replace' => ''), + 'startAutoOnEvent' => array('txt' => t('Scénario exécuté automatiquement sur événement venant de :', __FILE__, false, '', ' '), 'replace' => ''), + 'startOnEvent' => array('txt' => t('Scénario exécuté sur événement', __FILE__), 'replace' => ''), + 'startAutoOnShedule' => array('txt' => t('Scénario exécuté automatiquement sur programmation', __FILE__), 'replace' => ''), + 'finishOk' => array('txt' => t('Fin correcte du scénario', __FILE__), 'replace' => ''), + 'sheduledOn' => array('txt' => t('programmée à :', __FILE__, false, ' ', ' '), 'replace' => ''), + 'startByScenario' => array('txt' => t('Lancement provoqué par le scénario :', __FILE__, false, '', ' '), 'replace' => ''), + 'startCausedBy' => array('txt' => t('Lancement provoqué', __FILE__), 'replace' => ''), + 'startSubTask' => array('txt' => t('************Lancement sous tâche**************', __FILE__), 'replace' => ''), + 'endSubTask' => array('txt' => t('************FIN sous tâche**************', __FILE__), 'replace' => ''), + 'sheduleNow' => array('txt' => t('lancement immédiat', __FILE__, false, ' ', ' '), 'replace' => ''), - 'execAction' => array('txt' => '- ' . __('Exécution du sous-élément de type [action] :', __FILE__) . ' ', 'replace' => ''), - 'execCondition' => array('txt' => '- ' . __('Exécution du sous-élément de type [condition] :', __FILE__) . ' ', 'replace' => ''), + 'execAction' => array('txt' => t('Exécution du sous-élément de type [action] :', __FILE__, false, '- ', ' '), 'replace' => ''), + 'execCondition' => array('txt' => t('Exécution du sous-élément de type [condition] :', __FILE__, false, '- ', ' '), 'replace' => ''), - 'execCmd' => array('txt' => __('Exécution de la commande', __FILE__) . ' ', 'replace' => ''), - 'execCode' => array('txt' => __('Exécution d\'un bloc code', __FILE__) . ' ', 'replace' => ''), - 'launchScenario' => array('txt' => __('Lancement du scénario :', __FILE__) . ' ', 'replace' => ''), - 'launchScenarioSync' => array('txt' => __('Lancement du scénario en mode synchrone', __FILE__) . ' ', 'replace' => ''), - 'start' => array('txt' => '-- ' . __('Début :', __FILE__), 'replace' => '::'), - 'task' => array('txt' => __('Tâche :', __FILE__) . ' ', 'replace' => ''), - 'event' => array('txt' => __('Changement de', __FILE__) . ' ', 'replace' => ''), - 'setTag' => array('txt' => __('Mise à jour du tag', __FILE__) . ' ', 'replace' => ''), + 'execCmd' => array('txt' => t('Exécution de la commande', __FILE__, false, '', ' '), 'replace' => ''), + 'execCode' => array('txt' => t('Exécution d\'un bloc code', __FILE__, false, '', ' '), 'replace' => ''), + 'launchScenario' => array('txt' => t('Lancement du scénario :', __FILE__, false, '', ' '), 'replace' => ''), + 'launchScenarioSync' => array('txt' => t('Lancement du scénario en mode synchrone', __FILE__, false, '', ' '), 'replace' => ''), + 'start' => array('txt' => t('Début :', __FILE__, false, '-- '), 'replace' => '::'), + 'task' => array('txt' => t('Tâche :', __FILE__, false, '', ' '), 'replace' => ''), + 'event' => array('txt' => t('Changement de', __FILE__, false, '', ' '), 'replace' => ''), + 'setTag' => array('txt' => t('Mise à jour du tag', __FILE__, false, '', ' '), 'replace' => ''), - 'stopTimeout' => array('txt' => __('Arrêt du scénario car il a dépassé son temps de timeout :', __FILE__) . ' ', 'replace' => ''), - 'disableNoSubtask' => array('txt' => __('Scénario désactivé non lancement de la sous tâche', __FILE__), 'replace' => ''), - 'disableEqNoExecCmd' => array('txt' => __('Equipement désactivé - impossible d\'exécuter la commande :', __FILE__) . ' ', 'replace' => ''), - 'toStartUnfound' => array('txt' => __('Eléments à lancer non trouvé', __FILE__), 'replace' => ''), - 'invalideShedule' => array('txt' => __(', heure programmée invalide :', __FILE__) . ' ', 'replace' => ''), - 'noCmdFoundFor' => array('txt' => __('[Erreur] Aucune commande trouvée pour', __FILE__) . ' ', 'replace' => ''), - 'unfoundCmd' => array('txt' => __('Commande introuvable', __FILE__), 'replace' => ''), - 'unfoundCmdCheckId' => array('txt' => __('Commande introuvable - Vérifiez l\'id', __FILE__), 'replace' => ''), - 'unfoundEq' => array('txt' => __('Action sur l\'équipement impossible. Equipement introuvable - Vérifiez l\'id :', __FILE__) . ' ', 'replace' => ''), - 'unfoundScenario' => array('txt' => __('Action sur scénario impossible. Scénario introuvable - Vérifiez l\'id :', __FILE__) . ' ', 'replace' => ''), - 'disableScenario' => array('txt' => __('Impossible d\'exécuter le scénario :', __FILE__) . ' ', 'replace' => ''), - 'invalidExpr' => array('txt' => __('Expression non valide :', __FILE__) . ' ', 'replace' => ''), - 'invalidDuration' => array('txt' => __('Aucune durée trouvée pour l\'action sleep ou la durée n\'est pas valide :', __FILE__) . ' ', 'replace' => ''), + 'stopTimeout' => array('txt' => t('Arrêt du scénario car il a dépassé son temps de timeout :', __FILE__, false, '', ' '), 'replace' => ''), + 'disableNoSubtask' => array('txt' => t('Scénario désactivé non lancement de la sous tâche', __FILE__), 'replace' => ''), + 'disableEqNoExecCmd' => array('txt' => t('Equipement désactivé - impossible d\'exécuter la commande :', __FILE__, false, '', ' '), 'replace' => ''), + 'toStartUnfound' => array('txt' => t('Eléments à lancer non trouvé', __FILE__), 'replace' => ''), + 'invalideShedule' => array('txt' => t(', heure programmée invalide :', __FILE__, false, '', ' '), 'replace' => ''), + 'noCmdFoundFor' => array('txt' => t('[Erreur] Aucune commande trouvée pour', __FILE__, false, '', ' '), 'replace' => ''), + 'unfoundCmd' => array('txt' => t('Commande introuvable', __FILE__), 'replace' => ''), + 'unfoundCmdCheckId' => array('txt' => t('Commande introuvable - Vérifiez l\'id', __FILE__), 'replace' => ''), + 'unfoundEq' => array('txt' => t('Action sur l\'équipement impossible. Equipement introuvable - Vérifiez l\'id :', __FILE__, false, '', ' '), 'replace' => ''), + 'unfoundScenario' => array('txt' => t('Action sur scénario impossible. Scénario introuvable - Vérifiez l\'id :', __FILE__, false, '', ' '), 'replace' => ''), + 'disableScenario' => array('txt' => t('Impossible d\'exécuter le scénario :', __FILE__, false, '', ' '), 'replace' => ''), + 'invalidExpr' => array('txt' => t('Expression non valide :', __FILE__, false, '', ' '), 'replace' => ''), + 'invalidDuration' => array('txt' => t('Aucune durée trouvée pour l\'action sleep ou la durée n\'est pas valide :', __FILE__, false, '', ' '), 'replace' => ''), ); diff --git a/core/php/core.inc.php b/core/php/core.inc.php index 1eca2e51e4..ff2a246471 100644 --- a/core/php/core.inc.php +++ b/core/php/core.inc.php @@ -17,7 +17,6 @@ */ date_default_timezone_set('Europe/Brussels'); require_once __DIR__ . '/../../vendor/autoload.php'; -include_file('core', 'jeedom', 'config'); try { $configs = config::byKeys(array('timezone', 'log::level')); diff --git a/core/php/utils.inc.php b/core/php/utils.inc.php index 26e5da189f..858de46155 100644 --- a/core/php/utils.inc.php +++ b/core/php/utils.inc.php @@ -1842,5 +1842,10 @@ function implode_recursive($_array, $_separator, $_key = '') { function __($_content, $_name, $_backslash = false) { - return translate::sentence(str_replace("\'", "'", $_content), $_name, $_backslash); + try { + return translate::sentence(str_replace("\'", "'", $_content), $_name, $_backslash); + } catch (\Throwable $t) { + error_log($t->getMessage()); + throw $t; + } } From b27b7473c3cd993988a9a8e8b9d10b3f23c447ed Mon Sep 17 00:00:00 2001 From: Emmanuel Bernaszuk Date: Sun, 14 Sep 2025 14:52:34 +0200 Subject: [PATCH 7/8] Simplify jeedom config --- core/config/jeedom.config.php | 498 +++++++++++++++++----------------- 1 file changed, 249 insertions(+), 249 deletions(-) diff --git a/core/config/jeedom.config.php b/core/config/jeedom.config.php index cf603f8b5b..99c6561d98 100644 --- a/core/config/jeedom.config.php +++ b/core/config/jeedom.config.php @@ -47,22 +47,22 @@ public function __toString(): string { } } -function t(string $key, string $file, bool $backslash = false, string $prefix = '', string $suffix = ''): Translation { - return new Translation($key, $file, $backslash, $prefix, $suffix); +function t(string $key, string $prefix = '', string $suffix = ''): Translation { + return new Translation($key, __FILE__, false, $prefix, $suffix); } global $JEEDOM_INTERNAL_CONFIG; $JEEDOM_INTERNAL_CONFIG = array( 'eqLogic' => array( 'category' => array( - 'heating' => array('name' => t('Chauffage', __FILE__), 'icon' => 'fas fa-fire'), - 'security' => array('name' => t('Sécurité', __FILE__), 'icon' => 'fas fa-lock'), - 'energy' => array('name' => t('Energie', __FILE__), 'icon' => 'fas fa-bolt'), - 'light' => array('name' => t('Lumière', __FILE__), 'icon' => 'far fa-lightbulb'), - 'opening' => array('name' => t('Ouvrant', __FILE__), 'icon' => 'fas fa-door-open'), - 'automatism' => array('name' => t('Automatisme', __FILE__), 'icon' => 'fas fa-magic'), - 'multimedia' => array('name' => t('Multimédia', __FILE__), 'icon' => 'fas fa-sliders-h'), - 'default' => array('name' => t('Autre', __FILE__), 'icon' => 'far fa-circle'), + 'heating' => array('name' => t('Chauffage'), 'icon' => 'fas fa-fire'), + 'security' => array('name' => t('Sécurité'), 'icon' => 'fas fa-lock'), + 'energy' => array('name' => t('Energie'), 'icon' => 'fas fa-bolt'), + 'light' => array('name' => t('Lumière'), 'icon' => 'far fa-lightbulb'), + 'opening' => array('name' => t('Ouvrant'), 'icon' => 'fas fa-door-open'), + 'automatism' => array('name' => t('Automatisme'), 'icon' => 'fas fa-magic'), + 'multimedia' => array('name' => t('Multimédia'), 'icon' => 'fas fa-sliders-h'), + 'default' => array('name' => t('Autre'), 'icon' => 'far fa-circle'), ), 'displayType' => array( 'dashboard' => array('name' => 'Dashboard'), @@ -79,34 +79,34 @@ function t(string $key, string $file, bool $backslash = false, string $prefix = ), 'plugin' => array( 'category' => array( - 'security' => array('name' => t('Sécurité', __FILE__), 'icon' => 'fas fa-lock'), - 'automation protocol' => array('name' => t('Protocole domotique', __FILE__), 'icon' => 'fas fa-rss'), - 'home automation protocol' => array('name' => t('Passerelle domotique', __FILE__), 'icon' => 'fas fa-asterisk'), - 'programming' => array('name' => t('Programmation', __FILE__), 'icon' => 'fas fa-code'), - 'organization' => array('name' => t('Organisation', __FILE__), 'icon' => 'far fa-calendar-alt', 'alias' => array('travel', 'finance')), - 'weather' => array('name' => t('Météo', __FILE__), 'icon' => 'far fa-sun'), - 'communication' => array('name' => t('Communication', __FILE__), 'icon' => 'fas fa-comment'), - 'devicecommunication' => array('name' => t('Objets connectés', __FILE__), 'icon' => 'fas fa-language'), - 'multimedia' => array('name' => t('Multimédia', __FILE__), 'icon' => 'fas fa-sliders-h'), - 'wellness' => array('name' => t('Confort', __FILE__), 'icon' => 'far fa-user'), - 'monitoring' => array('name' => t('Monitoring', __FILE__), 'icon' => 'fas fa-tachometer-alt'), - 'health' => array('name' => t('Santé', __FILE__), 'icon' => 'icon loisir-runner5'), - 'nature' => array('name' => t('Nature', __FILE__), 'icon' => 'icon nature-leaf32'), - 'automatisation' => array('name' => t('Automatisme', __FILE__), 'icon' => 'fas fa-magic'), - 'energy' => array('name' => t('Energie', __FILE__), 'icon' => 'fas fa-bolt'), - 'other' => array('name' => t('Autre', __FILE__), 'icon' => 'fas fa-bars'), + 'security' => array('name' => t('Sécurité'), 'icon' => 'fas fa-lock'), + 'automation protocol' => array('name' => t('Protocole domotique'), 'icon' => 'fas fa-rss'), + 'home automation protocol' => array('name' => t('Passerelle domotique'), 'icon' => 'fas fa-asterisk'), + 'programming' => array('name' => t('Programmation'), 'icon' => 'fas fa-code'), + 'organization' => array('name' => t('Organisation'), 'icon' => 'far fa-calendar-alt', 'alias' => array('travel', 'finance')), + 'weather' => array('name' => t('Météo'), 'icon' => 'far fa-sun'), + 'communication' => array('name' => t('Communication'), 'icon' => 'fas fa-comment'), + 'devicecommunication' => array('name' => t('Objets connectés'), 'icon' => 'fas fa-language'), + 'multimedia' => array('name' => t('Multimédia'), 'icon' => 'fas fa-sliders-h'), + 'wellness' => array('name' => t('Confort'), 'icon' => 'far fa-user'), + 'monitoring' => array('name' => t('Monitoring'), 'icon' => 'fas fa-tachometer-alt'), + 'health' => array('name' => t('Santé'), 'icon' => 'icon loisir-runner5'), + 'nature' => array('name' => t('Nature'), 'icon' => 'icon nature-leaf32'), + 'automatisation' => array('name' => t('Automatisme'), 'icon' => 'fas fa-magic'), + 'energy' => array('name' => t('Energie'), 'icon' => 'fas fa-bolt'), + 'other' => array('name' => t('Autre'), 'icon' => 'fas fa-bars'), ), ), 'messageChannel' => array( - 'alerting' => array('name' => t('Alerte des commandes', __FILE__), 'icon' => ''), - 'alertingReturnBack' => array('name' => t('Retour à l\'état normal des commandes', __FILE__), 'icon' => '') + 'alerting' => array('name' => t('Alerte des commandes'), 'icon' => ''), + 'alertingReturnBack' => array('name' => t('Retour à l\'état normal des commandes'), 'icon' => '') ), 'alerts' => array( - 'timeout' => array('name' => t('Timeout', __FILE__), 'icon' => 'far fa-clock', 'level' => 6, 'check' => false, 'color' => 'var(--al-danger-color)'), - 'batterywarning' => array('name' => t('Batterie en Warning', __FILE__), 'icon' => 'fas fa-battery-quarter', 'level' => 2, 'check' => false, 'color' => 'var(--al-warning-color)'), - 'batterydanger' => array('name' => t('Batterie en Danger', __FILE__), 'icon' => 'fas fa-battery-empty', 'level' => 3, 'check' => false, 'color' => 'var(--al-danger-color)'), - 'warning' => array('name' => t('Warning', __FILE__), 'icon' => 'fas fa-bell', 'level' => 4, 'check' => true, 'color' => 'var(--al-warning-color)'), - 'danger' => array('name' => t('Danger', __FILE__), 'icon' => 'fas fa-exclamation', 'level' => 5, 'check' => true, 'color' => 'var(--al-danger-color)'), + 'timeout' => array('name' => t('Timeout'), 'icon' => 'far fa-clock', 'level' => 6, 'check' => false, 'color' => 'var(--al-danger-color)'), + 'batterywarning' => array('name' => t('Batterie en Warning'), 'icon' => 'fas fa-battery-quarter', 'level' => 2, 'check' => false, 'color' => 'var(--al-warning-color)'), + 'batterydanger' => array('name' => t('Batterie en Danger'), 'icon' => 'fas fa-battery-empty', 'level' => 3, 'check' => false, 'color' => 'var(--al-danger-color)'), + 'warning' => array('name' => t('Warning'), 'icon' => 'fas fa-bell', 'level' => 4, 'check' => true, 'color' => 'var(--al-warning-color)'), + 'danger' => array('name' => t('Danger'), 'icon' => 'fas fa-exclamation', 'level' => 5, 'check' => true, 'color' => 'var(--al-danger-color)'), ), 'cmd' => array( 'widgets' => array( @@ -203,700 +203,700 @@ function t(string $key, string $file, bool $backslash = false, string $prefix = ), 'generic_type' => array( 'TOGGLE' => array( - 'name' => t('Toggle', __FILE__), 'familyid' => 'Other', 'family' => t('Autre', __FILE__), + 'name' => t('Toggle'), 'familyid' => 'Other', 'family' => t('Autre'), 'type' => 'Action', 'subtype' => array('other') ), 'ONLINE' => array( - 'name' => t('Connecté', __FILE__), 'familyid' => 'Other', 'family' => t('Autre', __FILE__), + 'name' => t('Connecté'), 'familyid' => 'Other', 'family' => t('Autre'), 'type' => 'Info', 'subtype' => array('binary') ), 'LIGHT_TOGGLE' => array( - 'name' => t('Lumière Toggle', __FILE__), 'familyid' => 'Light', 'family' => t('Lumière', __FILE__), + 'name' => t('Lumière Toggle'), 'familyid' => 'Light', 'family' => t('Lumière'), 'type' => 'Action', 'subtype' => array('other') ), 'LIGHT_STATE' => array( - 'name' => t('Lumière Etat', __FILE__), 'familyid' => 'Light', 'family' => t('Lumière', __FILE__), + 'name' => t('Lumière Etat'), 'familyid' => 'Light', 'family' => t('Lumière'), 'type' => 'Info', 'subtype' => array('binary', 'numeric') ), 'LIGHT_ON' => array( - 'name' => t('Lumière Bouton On', __FILE__), 'familyid' => 'Light', 'family' => t('Lumière', __FILE__), + 'name' => t('Lumière Bouton On'), 'familyid' => 'Light', 'family' => t('Lumière'), 'type' => 'Action', 'summary' => array('subtype' => 'other'), 'subtype' => array('other') ), 'LIGHT_OFF' => array( - 'name' => t('Lumière Bouton Off', __FILE__), 'familyid' => 'Light', 'family' => t('Lumière', __FILE__), + 'name' => t('Lumière Bouton Off'), 'familyid' => 'Light', 'family' => t('Lumière'), 'type' => 'Action', 'summary' => array('subtype' => 'other'), 'subtype' => array('other') ), 'LIGHT_SLIDER' => array( - 'name' => t('Lumière Slider', __FILE__), 'familyid' => 'Light', 'family' => t('Lumière', __FILE__), + 'name' => t('Lumière Slider'), 'familyid' => 'Light', 'family' => t('Lumière'), 'type' => 'Action', 'summary' => array('subtype' => 'slider'), 'subtype' => array('slider') ), 'LIGHT_BRIGHTNESS' => array( - 'name' => t('Lumière Luminosité', __FILE__), 'familyid' => 'Light', 'family' => t('Lumière', __FILE__), + 'name' => t('Lumière Luminosité'), 'familyid' => 'Light', 'family' => t('Lumière'), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'LIGHT_COLOR' => array( - 'name' => t('Lumière Couleur', __FILE__), 'familyid' => 'Light', 'family' => t('Lumière', __FILE__), + 'name' => t('Lumière Couleur'), 'familyid' => 'Light', 'family' => t('Lumière'), 'type' => 'Info', 'subtype' => array('string') ), 'LIGHT_SET_COLOR' => array( - 'name' => t('Lumière Couleur', __FILE__), 'familyid' => 'Light', 'family' => t('Lumière', __FILE__), + 'name' => t('Lumière Couleur'), 'familyid' => 'Light', 'family' => t('Lumière'), 'type' => 'Action', 'summary' => array('subtype' => 'color'), 'subtype' => array('color') ), 'LIGHT_MODE' => array( - 'name' => t('Lumière Mode', __FILE__), 'familyid' => 'Light', 'family' => t('Lumière', __FILE__), + 'name' => t('Lumière Mode'), 'familyid' => 'Light', 'family' => t('Lumière'), 'type' => 'Action', 'subtype' => array('other','select') ), 'LIGHT_STATE_BOOL' => array( - 'name' => t('Lumière Etat (Binaire)', __FILE__), 'familyid' => 'Light', 'family' => t('Lumière', __FILE__), + 'name' => t('Lumière Etat (Binaire)'), 'familyid' => 'Light', 'family' => t('Lumière'), 'type' => 'Info', 'subtype' => array('binary') ), 'LIGHT_COLOR_TEMP' => array( - 'name' => t('Lumière Température Couleur', __FILE__), 'familyid' => 'Light', 'family' => t('Lumière', __FILE__), + 'name' => t('Lumière Température Couleur'), 'familyid' => 'Light', 'family' => t('Lumière'), 'type' => 'Info', 'subtype' => array('numeric') ), 'LIGHT_SET_COLOR_TEMP' => array( - 'name' => t('Lumière Température Couleur', __FILE__), 'familyid' => 'Light', 'family' => t('Lumière', __FILE__), + 'name' => t('Lumière Température Couleur'), 'familyid' => 'Light', 'family' => t('Lumière'), 'type' => 'Action' ), 'ENERGY_STATE' => array( - 'name' => t('Prise Etat', __FILE__), 'familyid' => 'Outlet', 'family' => t('Prise', __FILE__), + 'name' => t('Prise Etat'), 'familyid' => 'Outlet', 'family' => t('Prise'), 'type' => 'Info', 'subtype' => array('numeric', 'binary') ), 'ENERGY_ON' => array( - 'name' => t('Prise Bouton On', __FILE__), 'familyid' => 'Outlet', 'family' => t('Prise', __FILE__), + 'name' => t('Prise Bouton On'), 'familyid' => 'Outlet', 'family' => t('Prise'), 'type' => 'Action', 'summary' => array('subtype' => 'other'), 'subtype' => array('other') ), 'ENERGY_OFF' => array( - 'name' => t('Prise Bouton Off', __FILE__), 'familyid' => 'Outlet', 'family' => t('Prise', __FILE__), + 'name' => t('Prise Bouton Off'), 'familyid' => 'Outlet', 'family' => t('Prise'), 'type' => 'Action', 'summary' => array('subtype' => 'other'), 'subtype' => array('other') ), 'ENERGY_SLIDER' => array( - 'name' => t('Prise Slider', __FILE__), 'familyid' => 'Outlet', 'family' => t('Prise', __FILE__), + 'name' => t('Prise Slider'), 'familyid' => 'Outlet', 'family' => t('Prise'), 'type' => 'Action', 'summary' => array('subtype' => 'slider') ), 'FLAP_STATE' => array( - 'name' => t('Volet Etat', __FILE__), 'familyid' => 'Shutter', 'family' => t('Volet', __FILE__), + 'name' => t('Volet Etat'), 'familyid' => 'Shutter', 'family' => t('Volet'), 'type' => 'Info', 'subtype' => array('binary', 'numeric') ), 'FLAP_UP' => array( - 'name' => t('Volet Bouton Monter', __FILE__), 'familyid' => 'Shutter', 'family' => t('Volet', __FILE__), + 'name' => t('Volet Bouton Monter'), 'familyid' => 'Shutter', 'family' => t('Volet'), 'type' => 'Action', 'summary' => array('subtype' => 'other'), 'subtype' => array('other') ), 'FLAP_DOWN' => array( - 'name' => t('Volet Bouton Descendre', __FILE__), 'familyid' => 'Shutter', 'family' => t('Volet', __FILE__), + 'name' => t('Volet Bouton Descendre'), 'familyid' => 'Shutter', 'family' => t('Volet'), 'type' => 'Action', 'summary' => array('subtype' => 'other'), 'subtype' => array('other') ), 'FLAP_STOP' => array( - 'name' => t('Volet Bouton Stop', __FILE__), 'familyid' => 'Shutter', 'family' => t('Volet', __FILE__), + 'name' => t('Volet Bouton Stop'), 'familyid' => 'Shutter', 'family' => t('Volet'), 'type' => 'Action' ), 'FLAP_SLIDER' => array( - 'name' => t('Volet Bouton Slider', __FILE__), 'familyid' => 'Shutter', 'family' => t('Volet', __FILE__), + 'name' => t('Volet Bouton Slider'), 'familyid' => 'Shutter', 'family' => t('Volet'), 'type' => 'Action', 'summary' => array('subtype' => 'slider'), 'subtype' => array('slider') ), 'FLAP_BSO_STATE' => array( - 'name' => t('Volet BSO Etat', __FILE__), 'familyid' => 'Shutter', 'family' => t('Volet', __FILE__), + 'name' => t('Volet BSO Etat'), 'familyid' => 'Shutter', 'family' => t('Volet'), 'type' => 'Info', 'subtype' => array('binary', 'numeric') ), 'FLAP_BSO_UP' => array( - 'name' => t('Volet BSO Bouton Monter', __FILE__), 'familyid' => 'Shutter', 'family' => t('Volet', __FILE__), + 'name' => t('Volet BSO Bouton Monter'), 'familyid' => 'Shutter', 'family' => t('Volet'), 'type' => 'Action', 'summary' => array('subtype' => 'other'), 'subtype' => array('other') ), 'FLAP_BSO_DOWN' => array( - 'name' => t('Volet BSO Bouton Descendre', __FILE__), 'familyid' => 'Shutter', 'family' => t('Volet', __FILE__), + 'name' => t('Volet BSO Bouton Descendre'), 'familyid' => 'Shutter', 'family' => t('Volet'), 'type' => 'Action', 'summary' => array('subtype' => 'other'), 'subtype' => array('other') ), 'HEATING_ON' => array( - 'name' => t('Chauffage fil pilote Bouton ON', __FILE__), 'familyid' => 'Heating', 'family' => t('Chauffage', __FILE__), + 'name' => t('Chauffage fil pilote Bouton ON'), 'familyid' => 'Heating', 'family' => t('Chauffage'), 'type' => 'Action', 'summary' => array('subtype' => 'other'), 'subtype' => array('other') ), 'HEATING_OFF' => array( - 'name' => t('Chauffage fil pilote Bouton OFF', __FILE__), 'familyid' => 'Heating', 'family' => t('Chauffage', __FILE__), + 'name' => t('Chauffage fil pilote Bouton OFF'), 'familyid' => 'Heating', 'family' => t('Chauffage'), 'type' => 'Action', 'summary' => array('subtype' => 'other'), 'subtype' => array('other') ), 'HEATING_STATE' => array( - 'name' => t('Chauffage fil pilote Etat', __FILE__), 'familyid' => 'Heating', 'family' => t('Chauffage', __FILE__), + 'name' => t('Chauffage fil pilote Etat'), 'familyid' => 'Heating', 'family' => t('Chauffage'), 'type' => 'Info', 'subtype' => array('binary', 'numeric') ), 'HEATING_OTHER' => array( - 'name' => t('Chauffage fil pilote Bouton', __FILE__), 'familyid' => 'Heating', 'family' => t('Chauffage', __FILE__), + 'name' => t('Chauffage fil pilote Bouton'), 'familyid' => 'Heating', 'family' => t('Chauffage'), 'type' => 'Action', 'subtype' => array('other') ), 'LOCK_STATE' => array( - 'name' => t('Serrure Etat', __FILE__), 'familyid' => 'Opening', 'family' => t('Ouvrant', __FILE__), + 'name' => t('Serrure Etat'), 'familyid' => 'Opening', 'family' => t('Ouvrant'), 'type' => 'Info', 'subtype' => array('binary') ), 'LOCK_OPEN' => array( - 'name' => t('Serrure Bouton Ouvrir', __FILE__), 'familyid' => 'Opening', 'family' => t('Ouvrant', __FILE__), + 'name' => t('Serrure Bouton Ouvrir'), 'familyid' => 'Opening', 'family' => t('Ouvrant'), 'type' => 'Action', 'summary' => array('subtype' => 'other'), 'subtype' => array('other') ), 'LOCK_CLOSE' => array( - 'name' => t('Serrure Bouton Fermer', __FILE__), 'familyid' => 'Opening', 'family' => t('Ouvrant', __FILE__), + 'name' => t('Serrure Bouton Fermer'), 'familyid' => 'Opening', 'family' => t('Ouvrant'), 'type' => 'Action', 'summary' => array('subtype' => 'other'), 'subtype' => array('other') ), 'GB_OPEN' => array( - 'name' => t('Portail ou garage bouton d\'ouverture', __FILE__), 'familyid' => 'Opening', 'family' => t('Ouvrant', __FILE__), + 'name' => t('Portail ou garage bouton d\'ouverture'), 'familyid' => 'Opening', 'family' => t('Ouvrant'), 'type' => 'Action', 'summary' => array('subtype' => 'other'), 'subtype' => array('other') ), 'GB_CLOSE' => array( - 'name' => t('Portail ou garage bouton de fermeture', __FILE__), 'familyid' => 'Opening', 'family' => t('Ouvrant', __FILE__), + 'name' => t('Portail ou garage bouton de fermeture'), 'familyid' => 'Opening', 'family' => t('Ouvrant'), 'type' => 'Action', 'summary' => array('subtype' => 'other'), 'subtype' => array('other') ), 'GB_TOGGLE' => array( - 'name' => t('Portail ou garage bouton toggle', __FILE__), 'familyid' => 'Opening', 'family' => t('Ouvrant', __FILE__), + 'name' => t('Portail ou garage bouton toggle'), 'familyid' => 'Opening', 'family' => t('Ouvrant'), 'type' => 'Action', 'subtype' => array('other') ), 'BARRIER_STATE' => array( - 'name' => t('Portail (ouvrant) Etat', __FILE__), 'familyid' => 'Opening', 'family' => t('Ouvrant', __FILE__), + 'name' => t('Portail (ouvrant) Etat'), 'familyid' => 'Opening', 'family' => t('Ouvrant'), 'type' => 'Info', 'subtype' => array('binary') ), 'GARAGE_STATE' => array( - 'name' => t('Garage (ouvrant) Etat', __FILE__), 'familyid' => 'Opening', 'family' => t('Ouvrant', __FILE__), + 'name' => t('Garage (ouvrant) Etat'), 'familyid' => 'Opening', 'family' => t('Ouvrant'), 'type' => 'Info', 'subtype' => array('binary') ), 'OPENING' => array( - 'name' => t('Porte', __FILE__), 'familyid' => 'Opening', 'family' => t('Ouvrant', __FILE__), + 'name' => t('Porte'), 'familyid' => 'Opening', 'family' => t('Ouvrant'), 'type' => 'Info', 'subtype' => array('binary') ), 'OPENING_WINDOW' => array( - 'name' => t('Fenêtre', __FILE__), 'familyid' => 'Opening', 'family' => t('Ouvrant', __FILE__), + 'name' => t('Fenêtre'), 'familyid' => 'Opening', 'family' => t('Ouvrant'), 'type' => 'Info', 'subtype' => array('binary') ), 'THERMOSTAT_STATE' => array( - 'name' => t('Thermostat Etat', __FILE__), 'familyid' => 'Thermostat', 'family' => t('Thermostat', __FILE__), + 'name' => t('Thermostat Etat'), 'familyid' => 'Thermostat', 'family' => t('Thermostat'), 'type' => 'Info', 'subtype' => array('binary') ), 'THERMOSTAT_TEMPERATURE' => array( - 'name' => t('Thermostat Température ambiante', __FILE__), 'familyid' => 'Thermostat', 'family' => t('Thermostat', __FILE__), + 'name' => t('Thermostat Température ambiante'), 'familyid' => 'Thermostat', 'family' => t('Thermostat'), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'THERMOSTAT_SET_SETPOINT' => array( - 'name' => t('Thermostat consigne', __FILE__), 'familyid' => 'Thermostat', 'family' => t('Thermostat', __FILE__), + 'name' => t('Thermostat consigne'), 'familyid' => 'Thermostat', 'family' => t('Thermostat'), 'type' => 'Action', 'subtype' => array('slider') ), 'THERMOSTAT_SETPOINT' => array( - 'name' => t('Thermostat consigne', __FILE__), 'familyid' => 'Thermostat', 'family' => t('Thermostat', __FILE__), + 'name' => t('Thermostat consigne'), 'familyid' => 'Thermostat', 'family' => t('Thermostat'), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'THERMOSTAT_SET_MODE' => array( - 'name' => t('Thermostat Mode', __FILE__), 'familyid' => 'Thermostat', 'family' => t('Thermostat', __FILE__), + 'name' => t('Thermostat Mode'), 'familyid' => 'Thermostat', 'family' => t('Thermostat'), 'type' => 'Action', 'subtype' => array('other','select') ), 'THERMOSTAT_MODE' => array( - 'name' => t('Thermostat Mode', __FILE__), 'familyid' => 'Thermostat', 'family' => t('Thermostat', __FILE__), + 'name' => t('Thermostat Mode'), 'familyid' => 'Thermostat', 'family' => t('Thermostat'), 'type' => 'Info', 'subtype' => array('string') ), 'THERMOSTAT_SET_LOCK' => array( - 'name' => t('Thermostat Verrouillage', __FILE__), 'familyid' => 'Thermostat', 'family' => t('Thermostat', __FILE__), + 'name' => t('Thermostat Verrouillage'), 'familyid' => 'Thermostat', 'family' => t('Thermostat'), 'type' => 'Action', 'subtype' => array('other') ), 'THERMOSTAT_SET_UNLOCK' => array( - 'name' => t('Thermostat Déverrouillage', __FILE__), 'familyid' => 'Thermostat', 'family' => t('Thermostat', __FILE__), + 'name' => t('Thermostat Déverrouillage'), 'familyid' => 'Thermostat', 'family' => t('Thermostat'), 'type' => 'Action', 'subtype' => array('other') ), 'THERMOSTAT_LOCK' => array( - 'name' => t('Thermostat Verrouillage', __FILE__), 'familyid' => 'Thermostat', 'family' => t('Thermostat', __FILE__), + 'name' => t('Thermostat Verrouillage'), 'familyid' => 'Thermostat', 'family' => t('Thermostat'), 'type' => 'Info', 'subtype' => array('binary') ), 'THERMOSTAT_TEMPERATURE_OUTDOOR' => array( - 'name' => t('Thermostat Température Exterieur', __FILE__), 'familyid' => 'Thermostat', 'family' => t('Thermostat', __FILE__), + 'name' => t('Thermostat Température Exterieur'), 'familyid' => 'Thermostat', 'family' => t('Thermostat'), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'THERMOSTAT_STATE_NAME' => array( - 'name' => t('Thermostat Etat (HUMAIN)', __FILE__), 'familyid' => 'Thermostat', 'family' => t('Thermostat', __FILE__), + 'name' => t('Thermostat Etat (HUMAIN)'), 'familyid' => 'Thermostat', 'family' => t('Thermostat'), 'type' => 'Info', 'subtype' => array('string') ), 'THERMOSTAT_HUMIDITY' => array( - 'name' => t('Thermostat humidité ambiante', __FILE__), 'familyid' => 'Thermostat', 'family' => t('Thermostat', __FILE__), + 'name' => t('Thermostat humidité ambiante'), 'familyid' => 'Thermostat', 'family' => t('Thermostat'), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'THERMOSTAT_SET_MAX_TEMP' => array( - 'name' => t('Thermostat maximum consigne', __FILE__), 'familyid' => 'Thermostat', 'family' => t('Thermostat', __FILE__), + 'name' => t('Thermostat maximum consigne'), 'familyid' => 'Thermostat', 'family' => t('Thermostat'), 'type' => 'Action', 'subtype' => array('slider') ), 'THERMOSTAT_SET_MIN_TEMP' => array( - 'name' => t('Thermostat minimum consigne', __FILE__), 'familyid' => 'Thermostat', 'family' => t('Thermostat', __FILE__), + 'name' => t('Thermostat minimum consigne'), 'familyid' => 'Thermostat', 'family' => t('Thermostat'), 'type' => 'Action', 'subtype' => array('slider') ), 'THERMOSTAT_HUMIDITY' => array( - 'name' => t('Thermostat humidité ambiante', __FILE__), 'familyid' => 'Thermostat', 'family' => t('Thermostat', __FILE__), + 'name' => t('Thermostat humidité ambiante'), 'familyid' => 'Thermostat', 'family' => t('Thermostat'), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'HUMIDITY_SETPOINT' => array( - 'name' => t('Humidité consigne', __FILE__), 'familyid' => 'Thermostat', 'family' => t('Thermostat', __FILE__), + 'name' => t('Humidité consigne'), 'familyid' => 'Thermostat', 'family' => t('Thermostat'), 'type' => 'Info', 'subtype' => array('slider') ), 'HUMIDITY_SET_SETPOINT' => array( - 'name' => t('Humidité consigne', __FILE__), 'familyid' => 'Thermostat', 'family' => t('Thermostat', __FILE__), + 'name' => t('Humidité consigne'), 'familyid' => 'Thermostat', 'family' => t('Thermostat'), 'type' => 'Action', 'subtype' => array('slider') ), 'CAMERA_UP' => array( - 'name' => t('Mouvement caméra vers le haut', __FILE__), 'familyid' => 'Camera', 'family' => t('Caméra', __FILE__), + 'name' => t('Mouvement caméra vers le haut'), 'familyid' => 'Camera', 'family' => t('Caméra'), 'type' => 'Action', 'subtype' => array('other') ), 'CAMERA_DOWN' => array( - 'name' => t('Mouvement caméra vers le bas', __FILE__), 'familyid' => 'Camera', 'family' => t('Caméra', __FILE__), + 'name' => t('Mouvement caméra vers le bas'), 'familyid' => 'Camera', 'family' => t('Caméra'), 'type' => 'Action', 'subtype' => array('other') ), 'CAMERA_LEFT' => array( - 'name' => t('Mouvement caméra vers la gauche', __FILE__), 'familyid' => 'Camera', 'family' => t('Caméra', __FILE__), + 'name' => t('Mouvement caméra vers la gauche'), 'familyid' => 'Camera', 'family' => t('Caméra'), 'type' => 'Action', 'subtype' => array('other') ), 'CAMERA_RIGHT' => array( - 'name' => t('Mouvement caméra vers la droite', __FILE__), 'familyid' => 'Camera', 'family' => t('Caméra', __FILE__), + 'name' => t('Mouvement caméra vers la droite'), 'familyid' => 'Camera', 'family' => t('Caméra'), 'type' => 'Action', 'subtype' => array('other') ), 'CAMERA_ZOOM' => array( - 'name' => t('Zoom caméra vers l\'avant', __FILE__), 'familyid' => 'Camera', 'family' => t('Caméra', __FILE__), + 'name' => t('Zoom caméra vers l\'avant'), 'familyid' => 'Camera', 'family' => t('Caméra'), 'type' => 'Action', 'subtype' => array('other') ), 'CAMERA_DEZOOM' => array( - 'name' => t('Zoom caméra vers l\'arrière', __FILE__), 'familyid' => 'Camera', 'family' => t('Caméra', __FILE__), + 'name' => t('Zoom caméra vers l\'arrière'), 'familyid' => 'Camera', 'family' => t('Caméra'), 'type' => 'Action', 'subtype' => array('other') ), 'CAMERA_STOP' => array( - 'name' => t('Stop caméra', __FILE__), 'familyid' => 'Camera', 'family' => t('Caméra', __FILE__), + 'name' => t('Stop caméra'), 'familyid' => 'Camera', 'family' => t('Caméra'), 'type' => 'Action', 'subtype' => array('other') ), 'CAMERA_PRESET' => array( - 'name' => t('Preset caméra', __FILE__), 'familyid' => 'Camera', 'family' => t('Caméra', __FILE__), + 'name' => t('Preset caméra'), 'familyid' => 'Camera', 'family' => t('Caméra'), 'type' => 'Action', 'subtype' => array('other') ), 'CAMERA_URL' => array( - 'name' => t('URL caméra', __FILE__), 'familyid' => 'Camera', 'family' => t('Caméra', __FILE__), + 'name' => t('URL caméra'), 'familyid' => 'Camera', 'family' => t('Caméra'), 'type' => 'Info', 'subtype' => array('string') ), 'CAMERA_RECORD_STATE' => array( - 'name' => t('État enregistrement caméra', __FILE__), 'familyid' => 'Camera', 'family' => t('Caméra', __FILE__), + 'name' => t('État enregistrement caméra'), 'familyid' => 'Camera', 'family' => t('Caméra'), 'type' => 'Info', 'subtype' => array('binary') ), 'CAMERA_RECORD' => array( - 'name' => t('Enregistrement caméra', __FILE__), 'familyid' => 'Camera', 'family' => t('Caméra', __FILE__), + 'name' => t('Enregistrement caméra'), 'familyid' => 'Camera', 'family' => t('Caméra'), 'type' => 'Action' ), 'CAMERA_TAKE' => array( - 'name' => t('Snapshot caméra', __FILE__), 'familyid' => 'Camera', 'family' => t('Caméra', __FILE__), + 'name' => t('Snapshot caméra'), 'familyid' => 'Camera', 'family' => t('Caméra'), 'type' => 'Action' ), 'MODE_STATE' => array( - 'name' => t('Mode Etat', __FILE__), 'familyid' => 'Mode', 'family' => t('Mode', __FILE__), + 'name' => t('Mode Etat'), 'familyid' => 'Mode', 'family' => t('Mode'), 'type' => 'Info', 'subtype' => array('string') ), 'MODE_SET_STATE' => array( - 'name' => t('Changer Mode', __FILE__), 'familyid' => 'Mode', 'family' => t('Mode', __FILE__), + 'name' => t('Changer Mode'), 'familyid' => 'Mode', 'family' => t('Mode'), 'type' => 'Action', 'subtype' => array('other','select') ), 'SIREN_STATE' => array( - 'name' => t('Sirène Etat', __FILE__), 'familyid' => 'Security', 'family' => t('Sécurité', __FILE__), + 'name' => t('Sirène Etat'), 'familyid' => 'Security', 'family' => t('Sécurité'), 'type' => 'Info', 'subtype' => array('binary') ), 'SIREN_OFF' => array( - 'name' => t('Sirène Bouton Off', __FILE__), 'familyid' => 'Security', 'family' => t('Sécurité', __FILE__), + 'name' => t('Sirène Bouton Off'), 'familyid' => 'Security', 'family' => t('Sécurité'), 'type' => 'Action', 'summary' => array('subtype' => 'other'), 'subtype' => array('other') ), 'SIREN_ON' => array( - 'name' => t('Sirène Bouton On', __FILE__), 'familyid' => 'Security', 'family' => t('Sécurité', __FILE__), + 'name' => t('Sirène Bouton On'), 'familyid' => 'Security', 'family' => t('Sécurité'), 'type' => 'Action', 'summary' => array('subtype' => 'other'), 'subtype' => array('other') ), 'ALARM_STATE' => array( - 'name' => t('Alarme Etat', __FILE__), 'familyid' => 'Security', 'family' => t('Sécurité', __FILE__), + 'name' => t('Alarme Etat'), 'familyid' => 'Security', 'family' => t('Sécurité'), 'type' => 'Info', 'subtype' => array('binary', 'string') ), 'ALARM_MODE' => array( - 'name' => t('Alarme mode', __FILE__), 'familyid' => 'Security', 'family' => t('Sécurité', __FILE__), + 'name' => t('Alarme mode'), 'familyid' => 'Security', 'family' => t('Sécurité'), 'type' => 'Info', 'subtype' => array('string') ), 'ALARM_ENABLE_STATE' => array( - 'name' => t('Alarme Etat activée', __FILE__), 'familyid' => 'Security', 'family' => t('Sécurité', __FILE__), + 'name' => t('Alarme Etat activée'), 'familyid' => 'Security', 'family' => t('Sécurité'), 'type' => 'Info', 'subtype' => array('binary') ), 'ALARM_ARMED' => array( - 'name' => t('Alarme armée', __FILE__), 'familyid' => 'Security', 'family' => t('Sécurité', __FILE__), + 'name' => t('Alarme armée'), 'familyid' => 'Security', 'family' => t('Sécurité'), 'type' => 'Action', 'subtype' => array('other') ), 'ALARM_RELEASED' => array( - 'name' => t('Alarme libérée', __FILE__), 'familyid' => 'Security', 'family' => t('Sécurité', __FILE__), + 'name' => t('Alarme libérée'), 'familyid' => 'Security', 'family' => t('Sécurité'), 'type' => 'Action', 'subtype' => array('other') ), 'ALARM_SET_MODE' => array( - 'name' => t('Alarme Mode', __FILE__), 'familyid' => 'Security', 'family' => t('Sécurité', __FILE__), + 'name' => t('Alarme Mode'), 'familyid' => 'Security', 'family' => t('Sécurité'), 'type' => 'Action', 'subtype' => array('other','select') ), 'FLOOD' => array( - 'name' => t('Inondation', __FILE__), 'familyid' => 'Security', 'family' => t('Sécurité', __FILE__), + 'name' => t('Inondation'), 'familyid' => 'Security', 'family' => t('Sécurité'), 'type' => 'Info', 'subtype' => array('binary') ), 'SABOTAGE' => array( - 'name' => t('Sabotage', __FILE__), 'familyid' => 'Security', 'family' => t('Sécurité', __FILE__), + 'name' => t('Sabotage'), 'familyid' => 'Security', 'family' => t('Sécurité'), 'type' => 'Info', 'subtype' => array('binary') ), 'SHOCK' => array( - 'name' => t('Choc', __FILE__), 'familyid' => 'Security', 'family' => t('Sécurité', __FILE__), + 'name' => t('Choc'), 'familyid' => 'Security', 'family' => t('Sécurité'), 'type' => 'Info', 'subtype' => array('binary', 'numeric') ), 'WEATHER_TEMPERATURE' => array( - 'name' => t('Météo Température', __FILE__), 'familyid' => 'Weather', 'family' => t('Météo', __FILE__), + 'name' => t('Météo Température'), 'familyid' => 'Weather', 'family' => t('Météo'), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'WEATHER_HUMIDITY' => array( - 'name' => t('Météo Humidité', __FILE__), 'familyid' => 'Weather', 'family' => t('Météo', __FILE__), + 'name' => t('Météo Humidité'), 'familyid' => 'Weather', 'family' => t('Météo'), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'WEATHER_PRESSURE' => array( - 'name' => t('Météo Pression', __FILE__), 'familyid' => 'Weather', 'family' => t('Météo', __FILE__), + 'name' => t('Météo Pression'), 'familyid' => 'Weather', 'family' => t('Météo'), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'WEATHER_WIND_SPEED' => array( - 'name' => t('Météo vitesse du vent', __FILE__), 'familyid' => 'Weather', 'family' => t('Météo', __FILE__), + 'name' => t('Météo vitesse du vent'), 'familyid' => 'Weather', 'family' => t('Météo'), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'WEATHER_WIND_DIRECTION' => array( - 'name' => t('Météo direction du vent', __FILE__), 'familyid' => 'Weather', 'family' => t('Météo', __FILE__), + 'name' => t('Météo direction du vent'), 'familyid' => 'Weather', 'family' => t('Météo'), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'WEATHER_SUNSET' => array( - 'name' => t('Météo coucher de soleil', __FILE__), 'familyid' => 'Weather', 'family' => t('Météo', __FILE__), + 'name' => t('Météo coucher de soleil'), 'familyid' => 'Weather', 'family' => t('Météo'), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'WEATHER_SUNRISE' => array( - 'name' => t('Météo lever de soleil', __FILE__), 'familyid' => 'Weather', 'family' => t('Météo', __FILE__), + 'name' => t('Météo lever de soleil'), 'familyid' => 'Weather', 'family' => t('Météo'), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'WEATHER_TEMPERATURE_MIN' => array( - 'name' => t('Météo Température min', __FILE__), 'familyid' => 'Weather', 'family' => t('Météo', __FILE__), + 'name' => t('Météo Température min'), 'familyid' => 'Weather', 'family' => t('Météo'), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'WEATHER_TEMPERATURE_MAX' => array( - 'name' => t('Météo Température max', __FILE__), 'familyid' => 'Weather', 'family' => t('Météo', __FILE__), + 'name' => t('Météo Température max'), 'familyid' => 'Weather', 'family' => t('Météo'), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'WEATHER_CONDITION' => array( - 'name' => t('Météo condition', __FILE__), 'familyid' => 'Weather', 'family' => t('Météo', __FILE__), + 'name' => t('Météo condition'), 'familyid' => 'Weather', 'family' => t('Météo'), 'type' => 'Info', 'subtype' => array('string') ), 'WEATHER_CONDITION_ID' => array( - 'name' => t('Météo condition (id)', __FILE__), 'familyid' => 'Weather', 'family' => t('Météo', __FILE__), + 'name' => t('Météo condition (id)'), 'familyid' => 'Weather', 'family' => t('Météo'), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'text' ), 'WEATHER_TEMPERATURE_MIN_1' => array( - 'name' => t('Météo Température min j+1', __FILE__), 'familyid' => 'Weather', 'family' => t('Météo', __FILE__), + 'name' => t('Météo Température min j+1'), 'familyid' => 'Weather', 'family' => t('Météo'), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'WEATHER_TEMPERATURE_MAX_1' => array( - 'name' => t('Météo Température max j+1', __FILE__), 'familyid' => 'Weather', 'family' => t('Météo', __FILE__), + 'name' => t('Météo Température max j+1'), 'familyid' => 'Weather', 'family' => t('Météo'), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'WEATHER_CONDITION_1' => array( - 'name' => t('Météo condition j+1', __FILE__), 'familyid' => 'Weather', 'family' => t('Météo', __FILE__), + 'name' => t('Météo condition j+1'), 'familyid' => 'Weather', 'family' => t('Météo'), 'type' => 'Info', 'subtype' => array('string'), 'calcul' => 'text' ), 'WEATHER_CONDITION_ID_1' => array( - 'name' => t('Météo condition (id) j+1', __FILE__), 'familyid' => 'Weather', 'family' => t('Météo', __FILE__), + 'name' => t('Météo condition (id) j+1'), 'familyid' => 'Weather', 'family' => t('Météo'), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'text' ), 'WEATHER_TEMPERATURE_MIN_2' => array( - 'name' => t('Météo Température min j+2', __FILE__), 'familyid' => 'Weather', 'family' => t('Météo', __FILE__), + 'name' => t('Météo Température min j+2'), 'familyid' => 'Weather', 'family' => t('Météo'), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'WEATHER_TEMPERATURE_MAX_2' => array( - 'name' => t('Météo condition j+1 max j+2', __FILE__), 'familyid' => 'Weather', 'family' => t('Météo', __FILE__), + 'name' => t('Météo condition j+1 max j+2'), 'familyid' => 'Weather', 'family' => t('Météo'), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'WEATHER_CONDITION_2' => array( - 'name' => t('Météo condition j+2', __FILE__), 'familyid' => 'Weather', 'family' => t('Météo', __FILE__), + 'name' => t('Météo condition j+2'), 'familyid' => 'Weather', 'family' => t('Météo'), 'type' => 'Info', 'subtype' => array('string'), 'calcul' => 'text' ), 'WEATHER_CONDITION_ID_2' => array( - 'name' => t('Météo condition (id) j+2', __FILE__), 'familyid' => 'Weather', 'family' => t('Météo', __FILE__), + 'name' => t('Météo condition (id) j+2'), 'familyid' => 'Weather', 'family' => t('Météo'), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'text' ), 'WEATHER_TEMPERATURE_MIN_3' => array( - 'name' => t('Météo Température min j+3', __FILE__), 'familyid' => 'Weather', 'family' => t('Météo', __FILE__), + 'name' => t('Météo Température min j+3'), 'familyid' => 'Weather', 'family' => t('Météo'), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'WEATHER_TEMPERATURE_MAX_3' => array( - 'name' => t('Météo Température max j+3', __FILE__), 'familyid' => 'Weather', 'family' => t('Météo', __FILE__), + 'name' => t('Météo Température max j+3'), 'familyid' => 'Weather', 'family' => t('Météo'), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'WEATHER_CONDITION_3' => array( - 'name' => t('Météo condition j+3', __FILE__), 'familyid' => 'Weather', 'family' => t('Météo', __FILE__), + 'name' => t('Météo condition j+3'), 'familyid' => 'Weather', 'family' => t('Météo'), 'type' => 'Info', 'subtype' => array('string'), 'calcul' => 'text' ), 'WEATHER_CONDITION_ID_3' => array( - 'name' => t('Météo condition (id) j+3', __FILE__), 'familyid' => 'Weather', 'family' => t('Météo', __FILE__), + 'name' => t('Météo condition (id) j+3'), 'familyid' => 'Weather', 'family' => t('Météo'), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'text' ), 'WEATHER_TEMPERATURE_MIN_4' => array( - 'name' => t('Météo Température min j+4', __FILE__), 'familyid' => 'Weather', 'family' => t('Météo', __FILE__), + 'name' => t('Météo Température min j+4'), 'familyid' => 'Weather', 'family' => t('Météo'), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'WEATHER_TEMPERATURE_MAX_4' => array( - 'name' => t('Météo Température max j+4', __FILE__), 'familyid' => 'Weather', 'family' => t('Météo', __FILE__), + 'name' => t('Météo Température max j+4'), 'familyid' => 'Weather', 'family' => t('Météo'), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'WEATHER_CONDITION_4' => array( - 'name' => t('Météo condition j+4', __FILE__), 'familyid' => 'Weather', 'family' => t('Météo', __FILE__), + 'name' => t('Météo condition j+4'), 'familyid' => 'Weather', 'family' => t('Météo'), 'type' => 'Info', 'subtype' => array('string'), 'calcul' => 'text' ), 'WEATHER_CONDITION_ID_4' => array( - 'name' => t('Météo condition (id) j+4', __FILE__), 'familyid' => 'Weather', 'family' => t('Météo', __FILE__), + 'name' => t('Météo condition (id) j+4'), 'familyid' => 'Weather', 'family' => t('Météo'), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'text' ), 'RAIN_CURRENT' => array( - 'name' => t('Pluie (mm/h)', __FILE__), 'familyid' => 'Weather', 'family' => t('Météo', __FILE__), + 'name' => t('Pluie (mm/h)'), 'familyid' => 'Weather', 'family' => t('Météo'), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'RAIN_TOTAL' => array( - 'name' => t('Pluie (accumulation)', __FILE__), 'familyid' => 'Weather', 'family' => t('Météo', __FILE__), + 'name' => t('Pluie (accumulation)'), 'familyid' => 'Weather', 'family' => t('Météo'), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'WIND_SPEED' => array( - 'name' => t('Vent (vitesse)', __FILE__), 'familyid' => 'Weather', 'family' => t('Météo', __FILE__), + 'name' => t('Vent (vitesse)'), 'familyid' => 'Weather', 'family' => t('Météo'), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'WIND_DIRECTION' => array( - 'name' => t('Vent (direction)', __FILE__), 'familyid' => 'Weather', 'family' => t('Météo', __FILE__), + 'name' => t('Vent (direction)'), 'familyid' => 'Weather', 'family' => t('Météo'), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'POWER' => array( - 'name' => t('Puissance Electrique', __FILE__), 'familyid' => 'Electricity', 'family' => t('Electricité', __FILE__), + 'name' => t('Puissance Electrique'), 'familyid' => 'Electricity', 'family' => t('Electricité'), 'type' => 'Info', 'subtype' => array('numeric') ), 'CONSUMPTION' => array( - 'name' => t('Consommation Electrique', __FILE__), 'familyid' => 'Electricity', 'family' => t('Electricité', __FILE__), + 'name' => t('Consommation Electrique'), 'familyid' => 'Electricity', 'family' => t('Electricité'), 'type' => 'Info', 'subtype' => array('numeric') ), 'DAILY_CONSUMPTION' => array( - 'name' => t('Consommation Electrique Journalière', __FILE__), 'familyid' => 'Electricity', 'family' => t('Electricité', __FILE__), + 'name' => t('Consommation Electrique Journalière'), 'familyid' => 'Electricity', 'family' => t('Electricité'), 'type' => 'Info', 'subtype' => array('numeric') ), 'PRODUCTION' => array( - 'name' => t('Production Electrique', __FILE__), 'familyid' => 'Electricity', 'family' => t('Electricité', __FILE__), + 'name' => t('Production Electrique'), 'familyid' => 'Electricity', 'family' => t('Electricité'), 'type' => 'Info', 'subtype' => array('numeric') ), 'DAILY_PRODUCTION' => array( - 'name' => t('Production Electrique Journalière', __FILE__), 'familyid' => 'Electricity', 'family' => t('Electricité', __FILE__), + 'name' => t('Production Electrique Journalière'), 'familyid' => 'Electricity', 'family' => t('Electricité'), 'type' => 'Info', 'subtype' => array('numeric') ), 'VOLTAGE' => array( - 'name' => t('Tension', __FILE__), 'familyid' => 'Electricity', 'family' => t('Electricité', __FILE__), + 'name' => t('Tension'), 'familyid' => 'Electricity', 'family' => t('Electricité'), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'REBOOT' => array( - 'name' => t('Redémarrage', __FILE__), 'familyid' => 'Electricity', 'family' => t('Electricité', __FILE__), + 'name' => t('Redémarrage'), 'familyid' => 'Electricity', 'family' => t('Electricité'), 'type' => 'Action', 'subtype' => array('other') ), 'TEMPERATURE' => array( - 'name' => t('Température', __FILE__), 'familyid' => 'Environment', 'family' => t('Environnement', __FILE__), + 'name' => t('Température'), 'familyid' => 'Environment', 'family' => t('Environnement'), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'AIR_QUALITY' => array( - 'name' => t('Qualité de l\'air', __FILE__), 'familyid' => 'Environment', 'family' => t('Environnement', __FILE__), + 'name' => t('Qualité de l\'air'), 'familyid' => 'Environment', 'family' => t('Environnement'), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'BRIGHTNESS' => array( - 'name' => t('Luminosité', __FILE__), 'familyid' => 'Environment', 'family' => t('Environnement', __FILE__), + 'name' => t('Luminosité'), 'familyid' => 'Environment', 'family' => t('Environnement'), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'PRESENCE' => array( - 'name' => t('Présence', __FILE__), 'familyid' => 'Environment', 'family' => t('Environnement', __FILE__), + 'name' => t('Présence'), 'familyid' => 'Environment', 'family' => t('Environnement'), 'type' => 'Info', 'subtype' => array('binary') ), 'SMOKE' => array( - 'name' => t('Détection de fumée', __FILE__), 'familyid' => 'Environment', 'family' => t('Environnement', __FILE__), + 'name' => t('Détection de fumée'), 'familyid' => 'Environment', 'family' => t('Environnement'), 'type' => 'Info', 'subtype' => array('binary') ), 'HUMIDITY' => array( - 'name' => t('Humidité', __FILE__), 'familyid' => 'Environment', 'family' => t('Environnement', __FILE__), + 'name' => t('Humidité'), 'familyid' => 'Environment', 'family' => t('Environnement'), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'UV' => array( - 'name' => t('UV', __FILE__), 'familyid' => 'Environment', 'family' => t('Environnement', __FILE__), + 'name' => t('UV'), 'familyid' => 'Environment', 'family' => t('Environnement'), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'CO2' => array( - 'name' => t('CO2 (ppm)', __FILE__), 'familyid' => 'Environment', 'family' => t('Environnement', __FILE__), + 'name' => t('CO2 (ppm)'), 'familyid' => 'Environment', 'family' => t('Environnement'), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'CO' => array( - 'name' => t('CO (ppm)', __FILE__), 'familyid' => 'Environment', 'family' => t('Environnement', __FILE__), + 'name' => t('CO (ppm)'), 'familyid' => 'Environment', 'family' => t('Environnement'), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'NOISE' => array( - 'name' => t('Son (dB)', __FILE__), 'familyid' => 'Environment', 'family' => t('Environnement', __FILE__), + 'name' => t('Son (dB)'), 'familyid' => 'Environment', 'family' => t('Environnement'), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'PRESSURE' => array( - 'name' => t('Pression', __FILE__), 'familyid' => 'Environment', 'family' => t('Environnement', __FILE__), + 'name' => t('Pression'), 'familyid' => 'Environment', 'family' => t('Environnement'), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'WATER_LEAK' => array( - 'name' => t('Fuite d\'eau', __FILE__), 'familyid' => 'Environment', 'family' => t('Environnement', __FILE__), + 'name' => t('Fuite d\'eau'), 'familyid' => 'Environment', 'family' => t('Environnement'), 'type' => 'Info' ), 'FILTER_CLEAN_STATE' => array( - 'name' => t('Etat du filtre', __FILE__), 'familyid' => 'Environment', 'family' => t('Environnement', __FILE__), + 'name' => t('Etat du filtre'), 'familyid' => 'Environment', 'family' => t('Environnement'), 'type' => 'Info', 'subtype' => array('binary') ), 'DEPTH' => array( - 'name' => t('Profondeur', __FILE__), 'familyid' => 'Generic', 'family' => t('Generic', __FILE__), + 'name' => t('Profondeur'), 'familyid' => 'Generic', 'family' => t('Generic'), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'DISTANCE' => array( - 'name' => t('Distance', __FILE__), 'familyid' => 'Generic', 'family' => t('Generic', __FILE__), + 'name' => t('Distance'), 'familyid' => 'Generic', 'family' => t('Generic'), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'BUTTON' => array( - 'name' => t('Bouton', __FILE__), 'familyid' => 'Generic', 'family' => t('Generic', __FILE__), + 'name' => t('Bouton'), 'familyid' => 'Generic', 'family' => t('Generic'), 'type' => 'Info', 'subtype' => array('binary', 'numeric') ), 'GENERIC_INFO' => array( - 'name' => t('Générique', __FILE__, false, ' '), 'familyid' => 'Generic', 'family' => t('Generic', __FILE__), + 'name' => t('Générique', ' '), 'familyid' => 'Generic', 'family' => t('Generic'), 'type' => 'Info' ), 'GENERIC_ACTION' => array( - 'name' => t('Générique', __FILE__, false, ' '), 'familyid' => 'Generic', 'family' => t('Generic', __FILE__), + 'name' => t('Générique', ' '), 'familyid' => 'Generic', 'family' => t('Generic'), 'type' => 'Action' ), 'DONT' => array( - 'name' => t('Ne pas tenir compte de cette commande', __FILE__), 'familyid' => 'Generic', 'family' => t('Generic', __FILE__), + 'name' => t('Ne pas tenir compte de cette commande'), 'familyid' => 'Generic', 'family' => t('Generic'), 'type' => 'All' ), 'BATTERY' => array( - 'name' => t('Batterie', __FILE__), 'familyid' => 'Battery', 'family' => t('Batterie', __FILE__), + 'name' => t('Batterie'), 'familyid' => 'Battery', 'family' => t('Batterie'), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'BATTERY_CHARGING' => array( - 'name' => t('Batterie en charge', __FILE__), 'familyid' => 'Battery', 'family' => t('Batterie', __FILE__), + 'name' => t('Batterie en charge'), 'familyid' => 'Battery', 'family' => t('Batterie'), 'type' => 'Info', 'subtype' => array('binary') ), 'VOLUME' => array( - 'name' => t('Volume', __FILE__), 'familyid' => 'Multimedia', 'family' => t('Multimédia', __FILE__), + 'name' => t('Volume'), 'familyid' => 'Multimedia', 'family' => t('Multimédia'), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'MEDIA_STATUS' => array( - 'name' => t('Status', __FILE__), 'familyid' => 'Multimedia', 'family' => t('Multimédia', __FILE__), + 'name' => t('Status'), 'familyid' => 'Multimedia', 'family' => t('Multimédia'), 'type' => 'Info', 'subtype' => array('string') ), 'MEDIA_ALBUM' => array( - 'name' => t('Album', __FILE__), 'familyid' => 'Multimedia', 'family' => t('Multimédia', __FILE__), + 'name' => t('Album'), 'familyid' => 'Multimedia', 'family' => t('Multimédia'), 'type' => 'Info', 'subtype' => array('string') ), 'MEDIA_ARTIST' => array( - 'name' => t('Artiste', __FILE__), 'familyid' => 'Multimedia', 'family' => t('Multimédia', __FILE__), + 'name' => t('Artiste'), 'familyid' => 'Multimedia', 'family' => t('Multimédia'), 'type' => 'Info', 'subtype' => array('string') ), 'MEDIA_TITLE' => array( - 'name' => t('Titre', __FILE__), 'familyid' => 'Multimedia', 'family' => t('Multimédia', __FILE__), + 'name' => t('Titre'), 'familyid' => 'Multimedia', 'family' => t('Multimédia'), 'type' => 'Info', 'subtype' => array('string') ), 'MEDIA_POWER' => array( - 'name' => t('Power', __FILE__), 'familyid' => 'Multimedia', 'family' => t('Multimédia', __FILE__), + 'name' => t('Power'), 'familyid' => 'Multimedia', 'family' => t('Multimédia'), 'type' => 'Info', 'subtype' => array('string') ), 'SET_VOLUME' => array( - 'name' => t('Volume', __FILE__), 'familyid' => 'Multimedia', 'family' => t('Multimédia', __FILE__), + 'name' => t('Volume'), 'familyid' => 'Multimedia', 'family' => t('Multimédia'), 'type' => 'Action', 'subtype' => array('slider') ), 'CHANNEL' => array( - 'name' => t('Chaine', __FILE__), 'familyid' => 'Multimedia', 'family' => t('Multimédia', __FILE__), + 'name' => t('Chaine'), 'familyid' => 'Multimedia', 'family' => t('Multimédia'), 'type' => 'Info', 'subtype' => array('numeric', 'string'), 'calcul' => 'text' ), 'SET_CHANNEL' => array( - 'name' => t('Chaine', __FILE__), 'familyid' => 'Multimedia', 'family' => t('Multimédia', __FILE__), + 'name' => t('Chaine'), 'familyid' => 'Multimedia', 'family' => t('Multimédia'), 'type' => 'Action', 'subtype' => array('other', 'slider') ), 'MEDIA_PAUSE' => array( - 'name' => t('Pause', __FILE__), 'familyid' => 'Multimedia', 'family' => t('Multimédia', __FILE__), + 'name' => t('Pause'), 'familyid' => 'Multimedia', 'family' => t('Multimédia'), 'type' => 'Action', 'subtype' => array('other') ), 'MEDIA_RESUME' => array( - 'name' => t('Lecture', __FILE__), 'familyid' => 'Multimedia', 'family' => t('Multimédia', __FILE__), + 'name' => t('Lecture'), 'familyid' => 'Multimedia', 'family' => t('Multimédia'), 'type' => 'Action', 'subtype' => array('other') ), 'MEDIA_STOP' => array( - 'name' => t('Stop', __FILE__), 'familyid' => 'Multimedia', 'family' => t('Multimédia', __FILE__), + 'name' => t('Stop'), 'familyid' => 'Multimedia', 'family' => t('Multimédia'), 'type' => 'Action', 'subtype' => array('other') ), 'MEDIA_NEXT' => array( - 'name' => t('Suivant', __FILE__), 'familyid' => 'Multimedia', 'family' => t('Multimédia', __FILE__), + 'name' => t('Suivant'), 'familyid' => 'Multimedia', 'family' => t('Multimédia'), 'type' => 'Action', 'subtype' => array('other') ), 'MEDIA_PREVIOUS' => array( - 'name' => t('Précedent', __FILE__), 'familyid' => 'Multimedia', 'family' => t('Multimédia', __FILE__), + 'name' => t('Précedent'), 'familyid' => 'Multimedia', 'family' => t('Multimédia'), 'type' => 'Action', 'subtype' => array('other') ), 'MEDIA_ON' => array( - 'name' => t('On', __FILE__), 'familyid' => 'Multimedia', 'family' => t('Multimédia', __FILE__), + 'name' => t('On'), 'familyid' => 'Multimedia', 'family' => t('Multimédia'), 'type' => 'Action', 'subtype' => array('other') ), 'MEDIA_OFF' => array( - 'name' => t('Off', __FILE__), 'familyid' => 'Multimedia', 'family' => t('Multimédia', __FILE__), + 'name' => t('Off'), 'familyid' => 'Multimedia', 'family' => t('Multimédia'), 'type' => 'Action', 'subtype' => array('other') ), 'MEDIA_STATE' => array( - 'name' => t('Etat', __FILE__), 'familyid' => 'Multimedia', 'family' => t('Multimédia', __FILE__), + 'name' => t('Etat'), 'familyid' => 'Multimedia', 'family' => t('Multimédia'), 'type' => 'Info', 'subtype' => array('binary') ), 'MEDIA_MUTE' => array( - 'name' => t('Muet', __FILE__), 'familyid' => 'Multimedia', 'family' => t('Multimédia', __FILE__), + 'name' => t('Muet'), 'familyid' => 'Multimedia', 'family' => t('Multimédia'), 'type' => 'Action', 'subtype' => array('other') ), 'MEDIA_UNMUTE' => array( - 'name' => t('Non Muet', __FILE__), 'familyid' => 'Multimedia', 'family' => t('Multimédia', __FILE__), + 'name' => t('Non Muet'), 'familyid' => 'Multimedia', 'family' => t('Multimédia'), 'type' => 'Action', 'subtype' => array('other') ), 'FAN_SPEED' => array( - 'name' => t('Vitesse ventilateur', __FILE__), 'familyid' => 'Fan', 'family' => t('Ventilateur', __FILE__), + 'name' => t('Vitesse ventilateur'), 'familyid' => 'Fan', 'family' => t('Ventilateur'), 'type' => 'Action', 'subtype' => array('slider') ), 'FAN_SPEED_STATE' => array( - 'name' => t('Vitesse ventilateur Etat', __FILE__), 'familyid' => 'Fan', 'family' => t('Ventilateur', __FILE__), + 'name' => t('Vitesse ventilateur Etat'), 'familyid' => 'Fan', 'family' => t('Ventilateur'), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'ROTATION' => array( - 'name' => t('Rotation', __FILE__), 'familyid' => 'Fan', 'family' => t('Ventilateur', __FILE__), + 'name' => t('Rotation'), 'familyid' => 'Fan', 'family' => t('Ventilateur'), 'type' => 'Action', 'subtype' => array('slider') ), 'ROTATION_STATE' => array( - 'name' => t('Rotation Etat', __FILE__), 'familyid' => 'Fan', 'family' => t('Ventilateur', __FILE__), + 'name' => t('Rotation Etat'), 'familyid' => 'Fan', 'family' => t('Ventilateur'), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'DOCK' => array( - 'name' => t('Retour base', __FILE__), 'familyid' => 'Robot', 'family' => t('Robot', __FILE__), + 'name' => t('Retour base'), 'familyid' => 'Robot', 'family' => t('Robot'), 'type' => 'Action', 'subtype' => array('other') ), 'DOCK_STATE' => array( - 'name' => t('Base Etat', __FILE__), 'familyid' => 'Robot', 'family' => t('Robot', __FILE__), + 'name' => t('Base Etat'), 'familyid' => 'Robot', 'family' => t('Robot'), 'type' => 'Info', 'subtype' => array('binary') ), 'TIMER' => array( - 'name' => t('Minuteur Etat', __FILE__), 'familyid' => 'Other', 'family' => t('Autre', __FILE__), + 'name' => t('Minuteur Etat'), 'familyid' => 'Other', 'family' => t('Autre'), 'type' => 'Info', 'subtype' => array('numeric'), 'calcul' => 'avg' ), 'SET_TIMER' => array( - 'name' => t('Minuteur', __FILE__), 'familyid' => 'Other', 'family' => t('Autre', __FILE__), + 'name' => t('Minuteur'), 'familyid' => 'Other', 'family' => t('Autre'), 'type' => 'Action', 'subtype' => array('slider') ), 'TIMER_STATE' => array( - 'name' => t('Minuteur Etat (pause ou non)', __FILE__), 'familyid' => 'Other', 'family' => t('Autre', __FILE__), + 'name' => t('Minuteur Etat (pause ou non)'), 'familyid' => 'Other', 'family' => t('Autre'), 'type' => 'Info', 'subtype' => array('binary', 'numeric'), 'calcul' => 'avg' ), 'TIMER_PAUSE' => array( - 'name' => t('Minuteur pause', __FILE__), 'familyid' => 'Other', 'family' => t('Autre', __FILE__), + 'name' => t('Minuteur pause'), 'familyid' => 'Other', 'family' => t('Autre'), 'type' => 'Action', 'subtype' => array('other') ), 'TIMER_RESUME' => array( - 'name' => t('Minuteur reprendre', __FILE__), 'familyid' => 'Other', 'family' => t('Autre', __FILE__), + 'name' => t('Minuteur reprendre'), 'familyid' => 'Other', 'family' => t('Autre'), 'type' => 'Action', 'subtype' => array('other') ), ), 'type' => array( 'info' => array( - 'name' => t('Info', __FILE__), + 'name' => t('Info'), 'subtype' => array( 'numeric' => array( - 'name' => t('Numérique', __FILE__), + 'name' => t('Numérique'), 'configuration' => array( 'minValue' => array('visible' => true), 'maxValue' => array('visible' => true), @@ -910,7 +910,7 @@ function t(string $key, string $file, bool $backslash = false, string $prefix = ), ), 'binary' => array( - 'name' => t('Binaire', __FILE__), + 'name' => t('Binaire'), 'configuration' => array( 'minValue' => array('visible' => false), 'maxValue' => array('visible' => false), @@ -924,7 +924,7 @@ function t(string $key, string $file, bool $backslash = false, string $prefix = ), ), 'string' => array( - 'name' => t('Autre', __FILE__), + 'name' => t('Autre'), 'configuration' => array( 'minValue' => array('visible' => false), 'maxValue' => array('visible' => false), @@ -940,10 +940,10 @@ function t(string $key, string $file, bool $backslash = false, string $prefix = ), ), 'action' => array( - 'name' => t('Action', __FILE__), + 'name' => t('Action'), 'subtype' => array( 'other' => array( - 'name' => t('Défaut', __FILE__), + 'name' => t('Défaut'), 'configuration' => array( 'minValue' => array('visible' => false), 'maxValue' => array('visible' => false), @@ -957,7 +957,7 @@ function t(string $key, string $file, bool $backslash = false, string $prefix = ), ), 'slider' => array( - 'name' => t('Curseur', __FILE__), + 'name' => t('Curseur'), 'configuration' => array( 'minValue' => array('visible' => true), 'maxValue' => array('visible' => true), @@ -971,7 +971,7 @@ function t(string $key, string $file, bool $backslash = false, string $prefix = ), ), 'message' => array( - 'name' => t('Message', __FILE__), + 'name' => t('Message'), 'configuration' => array( 'minValue' => array('visible' => false), 'maxValue' => array('visible' => false), @@ -985,7 +985,7 @@ function t(string $key, string $file, bool $backslash = false, string $prefix = ), ), 'color' => array( - 'name' => t('Couleur', __FILE__), + 'name' => t('Couleur'), 'configuration' => array( 'minValue' => array('visible' => false), 'maxValue' => array('visible' => false), @@ -999,7 +999,7 @@ function t(string $key, string $file, bool $backslash = false, string $prefix = ), ), 'select' => array( - 'name' => t('Liste', __FILE__), + 'name' => t('Liste'), 'configuration' => array( 'minValue' => array('visible' => false), 'maxValue' => array('visible' => false), @@ -1018,41 +1018,41 @@ function t(string $key, string $file, bool $backslash = false, string $prefix = ), ); $GLOBALS['JEEDOM_SCLOG_TEXT'] = array( - 'startManual' => array('txt' => t('Scénario lancé manuellement', __FILE__), 'replace' => ''), - 'startAutoOnEvent' => array('txt' => t('Scénario exécuté automatiquement sur événement venant de :', __FILE__, false, '', ' '), 'replace' => ''), - 'startOnEvent' => array('txt' => t('Scénario exécuté sur événement', __FILE__), 'replace' => ''), - 'startAutoOnShedule' => array('txt' => t('Scénario exécuté automatiquement sur programmation', __FILE__), 'replace' => ''), - 'finishOk' => array('txt' => t('Fin correcte du scénario', __FILE__), 'replace' => ''), - 'sheduledOn' => array('txt' => t('programmée à :', __FILE__, false, ' ', ' '), 'replace' => ''), - 'startByScenario' => array('txt' => t('Lancement provoqué par le scénario :', __FILE__, false, '', ' '), 'replace' => ''), - 'startCausedBy' => array('txt' => t('Lancement provoqué', __FILE__), 'replace' => ''), - 'startSubTask' => array('txt' => t('************Lancement sous tâche**************', __FILE__), 'replace' => ''), - 'endSubTask' => array('txt' => t('************FIN sous tâche**************', __FILE__), 'replace' => ''), - 'sheduleNow' => array('txt' => t('lancement immédiat', __FILE__, false, ' ', ' '), 'replace' => ''), + 'startManual' => array('txt' => t('Scénario lancé manuellement'), 'replace' => ''), + 'startAutoOnEvent' => array('txt' => t('Scénario exécuté automatiquement sur événement venant de :', '', ' '), 'replace' => ''), + 'startOnEvent' => array('txt' => t('Scénario exécuté sur événement'), 'replace' => ''), + 'startAutoOnShedule' => array('txt' => t('Scénario exécuté automatiquement sur programmation'), 'replace' => ''), + 'finishOk' => array('txt' => t('Fin correcte du scénario'), 'replace' => ''), + 'sheduledOn' => array('txt' => t('programmée à :', ' ', ' '), 'replace' => ''), + 'startByScenario' => array('txt' => t('Lancement provoqué par le scénario :', '', ' '), 'replace' => ''), + 'startCausedBy' => array('txt' => t('Lancement provoqué'), 'replace' => ''), + 'startSubTask' => array('txt' => t('************Lancement sous tâche**************'), 'replace' => ''), + 'endSubTask' => array('txt' => t('************FIN sous tâche**************'), 'replace' => ''), + 'sheduleNow' => array('txt' => t('lancement immédiat', ' ', ' '), 'replace' => ''), - 'execAction' => array('txt' => t('Exécution du sous-élément de type [action] :', __FILE__, false, '- ', ' '), 'replace' => ''), - 'execCondition' => array('txt' => t('Exécution du sous-élément de type [condition] :', __FILE__, false, '- ', ' '), 'replace' => ''), + 'execAction' => array('txt' => t('Exécution du sous-élément de type [action] :', '- ', ' '), 'replace' => ''), + 'execCondition' => array('txt' => t('Exécution du sous-élément de type [condition] :', '- ', ' '), 'replace' => ''), - 'execCmd' => array('txt' => t('Exécution de la commande', __FILE__, false, '', ' '), 'replace' => ''), - 'execCode' => array('txt' => t('Exécution d\'un bloc code', __FILE__, false, '', ' '), 'replace' => ''), - 'launchScenario' => array('txt' => t('Lancement du scénario :', __FILE__, false, '', ' '), 'replace' => ''), - 'launchScenarioSync' => array('txt' => t('Lancement du scénario en mode synchrone', __FILE__, false, '', ' '), 'replace' => ''), - 'start' => array('txt' => t('Début :', __FILE__, false, '-- '), 'replace' => '::'), - 'task' => array('txt' => t('Tâche :', __FILE__, false, '', ' '), 'replace' => ''), - 'event' => array('txt' => t('Changement de', __FILE__, false, '', ' '), 'replace' => ''), - 'setTag' => array('txt' => t('Mise à jour du tag', __FILE__, false, '', ' '), 'replace' => ''), + 'execCmd' => array('txt' => t('Exécution de la commande', '', ' '), 'replace' => ''), + 'execCode' => array('txt' => t('Exécution d\'un bloc code', '', ' '), 'replace' => ''), + 'launchScenario' => array('txt' => t('Lancement du scénario :', '', ' '), 'replace' => ''), + 'launchScenarioSync' => array('txt' => t('Lancement du scénario en mode synchrone', '', ' '), 'replace' => ''), + 'start' => array('txt' => t('Début :', '-- '), 'replace' => '::'), + 'task' => array('txt' => t('Tâche :', '', ' '), 'replace' => ''), + 'event' => array('txt' => t('Changement de', '', ' '), 'replace' => ''), + 'setTag' => array('txt' => t('Mise à jour du tag', '', ' '), 'replace' => ''), - 'stopTimeout' => array('txt' => t('Arrêt du scénario car il a dépassé son temps de timeout :', __FILE__, false, '', ' '), 'replace' => ''), - 'disableNoSubtask' => array('txt' => t('Scénario désactivé non lancement de la sous tâche', __FILE__), 'replace' => ''), - 'disableEqNoExecCmd' => array('txt' => t('Equipement désactivé - impossible d\'exécuter la commande :', __FILE__, false, '', ' '), 'replace' => ''), - 'toStartUnfound' => array('txt' => t('Eléments à lancer non trouvé', __FILE__), 'replace' => ''), - 'invalideShedule' => array('txt' => t(', heure programmée invalide :', __FILE__, false, '', ' '), 'replace' => ''), - 'noCmdFoundFor' => array('txt' => t('[Erreur] Aucune commande trouvée pour', __FILE__, false, '', ' '), 'replace' => ''), - 'unfoundCmd' => array('txt' => t('Commande introuvable', __FILE__), 'replace' => ''), - 'unfoundCmdCheckId' => array('txt' => t('Commande introuvable - Vérifiez l\'id', __FILE__), 'replace' => ''), - 'unfoundEq' => array('txt' => t('Action sur l\'équipement impossible. Equipement introuvable - Vérifiez l\'id :', __FILE__, false, '', ' '), 'replace' => ''), - 'unfoundScenario' => array('txt' => t('Action sur scénario impossible. Scénario introuvable - Vérifiez l\'id :', __FILE__, false, '', ' '), 'replace' => ''), - 'disableScenario' => array('txt' => t('Impossible d\'exécuter le scénario :', __FILE__, false, '', ' '), 'replace' => ''), - 'invalidExpr' => array('txt' => t('Expression non valide :', __FILE__, false, '', ' '), 'replace' => ''), - 'invalidDuration' => array('txt' => t('Aucune durée trouvée pour l\'action sleep ou la durée n\'est pas valide :', __FILE__, false, '', ' '), 'replace' => ''), + 'stopTimeout' => array('txt' => t('Arrêt du scénario car il a dépassé son temps de timeout :', '', ' '), 'replace' => ''), + 'disableNoSubtask' => array('txt' => t('Scénario désactivé non lancement de la sous tâche'), 'replace' => ''), + 'disableEqNoExecCmd' => array('txt' => t('Equipement désactivé - impossible d\'exécuter la commande :', '', ' '), 'replace' => ''), + 'toStartUnfound' => array('txt' => t('Eléments à lancer non trouvé'), 'replace' => ''), + 'invalideShedule' => array('txt' => t(', heure programmée invalide :', '', ' '), 'replace' => ''), + 'noCmdFoundFor' => array('txt' => t('[Erreur] Aucune commande trouvée pour', '', ' '), 'replace' => ''), + 'unfoundCmd' => array('txt' => t('Commande introuvable'), 'replace' => ''), + 'unfoundCmdCheckId' => array('txt' => t('Commande introuvable - Vérifiez l\'id'), 'replace' => ''), + 'unfoundEq' => array('txt' => t('Action sur l\'équipement impossible. Equipement introuvable - Vérifiez l\'id :', '', ' '), 'replace' => ''), + 'unfoundScenario' => array('txt' => t('Action sur scénario impossible. Scénario introuvable - Vérifiez l\'id :', '', ' '), 'replace' => ''), + 'disableScenario' => array('txt' => t('Impossible d\'exécuter le scénario :', '', ' '), 'replace' => ''), + 'invalidExpr' => array('txt' => t('Expression non valide :', '', ' '), 'replace' => ''), + 'invalidDuration' => array('txt' => t('Aucune durée trouvée pour l\'action sleep ou la durée n\'est pas valide :', '', ' '), 'replace' => ''), ); From d76183abb920a394ce191bb5cc82f40d025fa48a Mon Sep 17 00:00:00 2001 From: Emmanuel Bernaszuk Date: Sun, 14 Sep 2025 14:55:39 +0200 Subject: [PATCH 8/8] Update phpstan workflow --- .github/workflows/phpstan.yaml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/phpstan.yaml b/.github/workflows/phpstan.yaml index 8d90800544..acd89a3dc6 100644 --- a/.github/workflows/phpstan.yaml +++ b/.github/workflows/phpstan.yaml @@ -18,7 +18,9 @@ jobs: php-version: 7.4 - name: Install Dependencies - run: composer update --ignore-platform-reqs + run: | + cp core/config/common.config.sample.php core/config/common.config.php + composer update --ignore-platform-reqs - name: Setup PHP 8.2 for PHPStan uses: shivammathur/setup-php@v2