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