Modules/devices/devices structure links inc php
Материал из MajorDoMo инфо
ᐂ В корневой раздел ᐃ В директорию расположения файла
<?php // Инициализация массива device_links для хранения ссылок между различными устройствами $this->device_links=array( // Ссылка между устройствами движения, кнопками, открывающими/закрывающими устройствами и камерами 'SMotions,SButtons,SOpenClose,SCameras'=>array( // Ссылка "switch_timer" для управления таймером array( // Название ссылки 'LINK_NAME'=>'switch_timer', // Заголовок ссылки 'LINK_TITLE'=>LANG_DEVICES_LINK_SWITCH_TIMER, // Описание ссылки 'LINK_DESCRIPTION'=>LANG_DEVICES_LINK_SWITCH_TIMER_DESCRIPTION, // Класс целевого устройства 'TARGET_CLASS'=>'SControllers', // Параметры ссылки 'PARAMS'=>array( array( // Название параметра 'PARAM_NAME'=>'action_delay', // Заголовок параметра 'PARAM_TITLE'=>LANG_DEVICES_LINK_SWITCH_TIMER_PARAM_ACTION_DELAY, // Тип параметра 'PARAM_TYPE'=>'num' ), array( // Название параметра 'PARAM_NAME'=>'darktime', // Заголовок параметра 'PARAM_TITLE'=>LANG_DEVICES_LINK_SWITCH_TIMER_PARAM_DARKTIME, // Тип параметра 'PARAM_TYPE'=>'select', // Опции параметра 'PARAM_OPTIONS'=>array( // Опция "нет" array('TITLE'=>LANG_NO,'VALUE'=>'0'), // Опция "да" array('TITLE'=>LANG_YES,'VALUE'=>'1') ) ) ) ), // Ссылка "switch_it" для управления устройствами array( // Название ссылки 'LINK_NAME'=>'switch_it', // Заголовок ссылки 'LINK_TITLE'=>LANG_DEVICES_LINK_SWITCH_IT, // Описание ссылки 'LINK_DESCRIPTION'=>LANG_DEVICES_LINK_SWITCH_IT_DESCRIPTION, // Класс целевого устройства 'TARGET_CLASS'=>'SControllers,SOpenable', // Параметры ссылки 'PARAMS'=>array( array( // Название параметра 'PARAM_NAME'=>'action_type', // Заголовок параметра 'PARAM_TITLE'=>LANG_DEVICES_LINK_ACTION_TYPE, // Тип параметра 'PARAM_TYPE'=>'select', // Опции параметра 'PARAM_OPTIONS'=>array( // Опция "включить" array('TITLE'=>LANG_DEVICES_LINK_TYPE_TURN_ON,'VALUE'=>'turnon'), // Опция "выключить" array('TITLE'=>LANG_DEVICES_LINK_TYPE_TURN_OFF,'VALUE'=>'turnoff'), // Опция "переключить" array('TITLE'=>LANG_DEVICES_LINK_TYPE_SWITCH,'VALUE'=>'switch'), // Опция "открыть" array('TITLE'=>LANG_DEVICES_LINK_TYPE_OPEN,'VALUE'=>'open'), // Опция "закрыть" array('TITLE'=>LANG_DEVICES_LINK_TYPE_CLOSE,'VALUE'=>'close'), ) ), array( // Название параметра 'PARAM_NAME'=>'action_delay', // Заголовок параметра 'PARAM_TITLE'=>LANG_DEVICES_LINK_SWITCH_IT_PARAM_ACTION_DELAY, // Тип параметра 'PARAM_TYPE'=>'num' ) ) ), // Ссылка "set_color" для управления цветом устройств array( // Название ссылки 'LINK_NAME'=>'set_color', // Заголовок ссылки 'LINK_TITLE'=>LANG_DEVICES_LINK_SET_COLOR, // Описание ссылки 'LINK_DESCRIPTION'=>LANG_DEVICES_LINK_SET_COLOR_DESCRIPTION, // Класс целевого устройства 'TARGET_CLASS'=>'SRGB', // Параметры ссылки 'PARAMS'=>array( array( // Название параметра 'PARAM_NAME'=>'action_color', // Заголовок параметра 'PARAM_TITLE'=>LANG_DEVICES_LINK_SET_COLOR_PARAM_ACTION_COLOR, // Тип параметра 'PARAM_TYPE'=>'color' ), array( // Название параметра 'PARAM_NAME'=>'action_delay', // Заголовок параметра 'PARAM_TITLE'=>LANG_DEVICES_LINK_SWITCH_IT_PARAM_ACTION_DELAY, // Тип параметра 'PARAM_TYPE'=>'num' ) ) ) ), // Ссылка между устройствами термостатов 'SThermostats'=>array( array( // Название ссылки 'LINK_NAME'=>'thermostat_switch', // Заголовок ссылки 'LINK_TITLE'=>LANG_DEVICES_LINK_THERMOSTAT_SWITCH, // Описание ссылки 'LINK_DESCRIPTION'=>LANG_DEVICES_LINK_THERMOSTAT_SWITCH_DESCRIPTION, // Класс целевого устройства 'TARGET_CLASS'=>'SControllers', // Параметры ссылки 'PARAMS'=>array( array( // Название параметра 'PARAM_NAME'=>'invert_status', // Заголовок параметра 'PARAM_TITLE'=>LANG_DEVICES_LINK_THERMOSTAT_INVERT, // Тип параметра 'PARAM_TYPE'=>'select', // Опции параметра 'PARAM_OPTIONS'=>array( // Опция "нет" array('TITLE'=>LANG_NO,'VALUE'=>'0'), // Опция "да" array('TITLE'=>LANG_YES,'VALUE'=>'1') ) ) ) ) ), // Ссылка между датчиками 'SSensors'=>array( array( // Название ссылки 'LINK_NAME'=>'sensor_switch', // Заголовок ссылки 'LINK_TITLE'=>LANG_DEVICES_LINK_SENSOR_SWITCH, // Описание ссылки 'LINK_DESCRIPTION'=>LANG_DEVICES_LINK_SENSOR_SWITCH_DESCRIPTION, // Класс целевого устройства 'TARGET_CLASS'=>'SControllers,SOpenable', // Параметры ссылки 'PARAMS'=>array( array( // Название параметра 'PARAM_NAME'=>'source_value_type', // Заголовок параметра 'PARAM_TITLE'=>LANG_DEVICES_LINK_SENSOR_VALUE_TYPE, // Тип параметра 'PARAM_TYPE'=>'select', // Опции параметра 'PARAM_OPTIONS'=>array( // Текущее значение array('TITLE'=>LANG_DEVICES_LINK_SENSOR_VALUE_TYPE_CURRENT,'VALUE'=>''), // Минимальное значение array('TITLE'=>LANG_DEVICES_LINK_SENSOR_VALUE_TYPE_MIN,'VALUE'=>'min'), // Среднее значение array('TITLE'=>LANG_DEVICES_LINK_SENSOR_VALUE_TYPE_AVG,'VALUE'=>'avg'), // Максимальное значение array('TITLE'=>LANG_DEVICES_LINK_SENSOR_VALUE_TYPE_MAX,'VALUE'=>'max'), ) ), array( // Условие видимости параметра 'PARAM_VISIBLE_CONDITION'=>array( // Проверяемый параметр 'CHECK_PARAM_NAME'=>'source_value_type', // Условие проверки 'CHECK_PARAM_CONDITION'=>'!=', // Значение для проверки 'CHECK_PARAM_VALUE'=>'', ), // Название параметра 'PARAM_NAME'=>'source_value_time', // Заголовок параметра 'PARAM_TITLE'=>LANG_DEVICES_LINK_SENSOR_VALUE_FOR_PERIOD, // Тип параметра 'PARAM_TYPE'=>'duration' ), array( // Название параметра 'PARAM_NAME'=>'condition_type', // Заголовок параметра 'PARAM_TITLE'=>LANG_DEVICES_LINK_SENSOR_SWITCH_PARAM_CONDITION, // Тип параметра 'PARAM_TYPE'=>'select', // Опции параметра 'PARAM_OPTIONS'=>array( // Условие "выше" array('TITLE'=>LANG_DEVICES_LINK_SENSOR_SWITCH_PARAM_CONDITION_ABOVE,'VALUE'=>'above'), // Условие "ниже" array('TITLE'=>LANG_DEVICES_LINK_SENSOR_SWITCH_PARAM_CONDITION_BELOW,'VALUE'=>'below') ) ), array( // Название параметра 'PARAM_NAME'=>'condition_value', // Заголовок параметра 'PARAM_TITLE'=>LANG_DEVICES_LINK_SENSOR_SWITCH_PARAM_VALUE, // Тип параметра 'PARAM_TYPE'=>'num' ), array( // Название параметра 'PARAM_NAME'=>'action_type', // Заголовок параметра 'PARAM_TITLE'=>LANG_DEVICES_LINK_ACTION_TYPE, // Тип параметра 'PARAM_TYPE'=>'select', // Опции параметра 'PARAM_OPTIONS'=>array( // Действие "включить" array('TITLE'=>LANG_DEVICES_LINK_TYPE_TURN_ON,'VALUE'=>'turnon'), // Действие "выключить" array('TITLE'=>LANG_DEVICES_LINK_TYPE_TURN_OFF,'VALUE'=>'turnoff'), // Действие "открыть" array('TITLE'=>LANG_DEVICES_LINK_TYPE_OPEN,'VALUE'=>'open'), // Действие "закрыть" array('TITLE'=>LANG_DEVICES_LINK_TYPE_CLOSE,'VALUE'=>'close'), ) ) ) ), array ( // Название ссылки 'LINK_NAME'=>'sensor_pass', // Заголовок ссылки 'LINK_TITLE'=>LANG_DEVICES_LINK_SENSOR_PASS, // Описание ссылки 'LINK_DESCRIPTION'=>LANG_DEVICES_LINK_SENSOR_PASS_DESCRIPTION, // Класс целевого устройства 'TARGET_CLASS'=>'SThermostats', ) ), /* Этот фрагмент кода завершает определение массива device_links, который содержит ссылки между различными типами устройств. Каждая ссылка определена массивом параметров, включая название ссылки, заголовок, описание и целевой класс устройства. В данном случае, ссылка open_sensor_pass предназначена для устройств, которые могут открываться и закрываться, и позволяет управлять их состоянием на основе данных с датчиков. */ // Ссылка между устройствами, которые могут открываться и закрываться 'SOpenClose' =>array( array ( // Название ссылки 'LINK_NAME'=>'open_sensor_pass', // Заголовок ссылки 'LINK_TITLE'=>LANG_DEVICES_LINK_SENSOR_PASS, // Описание ссылки 'LINK_DESCRIPTION'=>LANG_DEVICES_LINK_SENSOR_PASS_DESCRIPTION, // Класс целевого устройства 'TARGET_CLASS'=>'SOpenable', ) ) ); /* Этот участок кода проверяет наличие директории addons и, если она существует, загружает все файлы, которые соответствуют шаблону _links.php. Это позволяет расширять функциональность системы за счет дополнительных ссылок, определенных в этих файлах. */ // Проверяем наличие директории addons и загружаем дополнительные ссылки // Путь к директории addons $addons_dir=dirname(__FILE__).'/addons'; // Если директория существует if (is_dir($addons_dir)) { // Получаем список файлов в директории $addon_files=scandir($addons_dir); // Перебираем каждый файл foreach($addon_files as $file) { // Если файл соответствует шаблону "_links.php" if (preg_match('/\_links\.php$/',$file)) { // Загружаем файл с дополнительными ссылками require($addons_dir.'/'.$file); } } }