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);
}
}
}