Modules/devices/devices structure inc php
Материал из MajorDoMo инфо
ᐂ В корневой раздел ᐃ В директорию расположения файла
<?php
// Инициализация массива типов устройств
$this->device_types = array(
// Определение типа устройства "rooms" (комнаты)
'rooms' => array(
// Класс, связанный с этим типом устройства
'CLASS' => 'Rooms',
// Описание типа устройства
'DESCRIPTION' => 'Rooms/Locations',
// Свойства устройства
'PROPERTIES' => array(
// Температура в комнате
'temperature' => array('DESCRIPTION' => 'Temperature'),
// Влажность в комнате
'humidity' => array('DESCRIPTION' => 'Humidity'),
// Присутствие человека в комнате
'SomebodyHere' => array('DESCRIPTION' => 'Somebody in the room'),
// Задержка перед выключением света при отсутствии активности
'IdleDelay' => array('DESCRIPTION' => LANG_DEVICES_MOTION_TIMEOUT, '_CONFIG_TYPE' => 'text', '_CONFIG_HELP' => 'SdRoomIdleDelay'),
// Автоматическое выключение света при отсутствии активности
'turnOffLightsOnIdle' => array('DESCRIPTION' => LANG_DEVICES_TURNOFF_LIGHTS_ON_IDLE, '_CONFIG_TYPE' => 'yesno', '_CONFIG_HELP' => 'SdRoomIdleTurnoffLights'),
),
// Методы, связанные с этим типом устройства
'METHODS' => array(
// Обработка активности в комнате
'onActivity' => array('DESCRIPTION' => 'Rooms Activity'),
// Обработка отсутствия активности в комнате
'onIdle' => array('DESCRIPTION' => 'Rooms Idle'),
// Обновление статуса активности в комнате
'updateActivityStatus' => array('DESCRIPTION' => 'Update activity status')
)
),
// Определение типа устройства "general" (общие устройства)
'general' => array(
// Класс, связанный с этим типом устройства
'CLASS' => 'SDevices',
// Описание типа устройства
'DESCRIPTION' => 'General Devices Class',
// Свойства устройства
'PROPERTIES' => array(
// Статус устройства
'status' => array('DESCRIPTION' => LANG_DEVICES_STATUS, 'KEEP_HISTORY' => 365, 'ONCHANGE' => 'statusUpdated', 'DATA_KEY' => 1),
// Устройство активно
'alive' => array('DESCRIPTION' => 'Alive'),
// Таймаут активности устройства
'aliveTimeout' => array('DESCRIPTION' => LANG_DEVICES_ALIVE_TIMEOUT, '_CONFIG_TYPE' => 'num', '_CONFIG_HELP' => 'SdAliveTimeout'),
// Связанная комната
'linkedRoom' => array('DESCRIPTION' => 'LinkedRoom'),
// Время последнего обновления
'updated' => array('DESCRIPTION' => 'Updated Timestamp'),
// Устройство работает от батареи
'batteryOperated' => array('DESCRIPTION' => LANG_DEVICES_BATTERY_OPERATED, '_CONFIG_TYPE' => 'yesno', 'ONCHANGE' => 'batteryLevelUpdated'),
// Уровень заряда батареи
'batteryLevel' => array('DESCRIPTION' => LANG_DEVICES_BATTERY_LEVEL, 'ONCHANGE' => 'batteryLevelUpdated'),
// Предупреждение о низком уровне заряда батареи
'batteryWarning' => array('DESCRIPTION' => LANG_DEVICES_BATTERY_WARNING),
),
// Методы, связанные с этим типом устройства
'METHODS' => array(
// Обновление статуса устройства
'statusUpdated' => array('DESCRIPTION' => 'Status updated event'),
// Логическое действие
'logicAction' => array('DESCRIPTION' => 'Logic Action'),
// Обновление статуса активности устройства
'keepAlive' => array('DESCRIPTION' => 'Alive update'),
// Обновление уровня заряда батареи
'batteryLevelUpdated' => array('DESCRIPTION' => 'Battery level updated'),
),
// Внедрения, связанные с этим типом устройства
'INJECTS' => array(
// Режимы работы устройства
'OperationalModes' => array(
// Активация экономического режима
'EconomMode.activate' => 'econommode_activate',
// Деактивация экономического режима
'EconomMode.deactivate' => 'econommode_deactivate',
// Активация режима "Никто не дома"
'NobodyHomeMode.activate' => 'nobodyhomemode_activate',
// Деактивация режима "Никто не дома"
'NobodyHomeMode.deactivate' => 'nobodyhomemode_deactivate',
// Активация ночного режима
'NightMode.activate' => 'nightmode_activate',
// Активация режима темноты
'DarknessMode.activate' => 'darknessmode_activate',
// Деактивация режима темноты
'DarknessMode.deactivate' => 'darknessmode_deactivate',
// Проверка состояния системы
'System.checkstate' => 'system_checkstate',
),
)
),
// Определение типа устройства "controller" (контролируемые устройства)
'controller' => array(
// Класс, связанный с этим типом устройства
'CLASS' => 'SControllers',
// Родительский класс для этого типа устройства
'PARENT_CLASS' => 'SDevices',
// Описание типа устройства
'DESCRIPTION' => 'Controllable device',
// Свойства устройства
'PROPERTIES' => array(
// Экономичный режим
'groupEco' => array('DESCRIPTION' => LANG_DEVICES_GROUP_ECO, '_CONFIG_TYPE' => 'yesno', '_CONFIG_RESTRICTIONS' => 1, '_CONFIG_HELP' => 'SdGroupEco'),
// Включение экономического режима
'groupEcoOn' => array('DESCRIPTION' => LANG_DEVICES_GROUP_ECO_ON, '_CONFIG_TYPE' => 'yesno', '_CONFIG_RESTRICTIONS' => 1, '_CONFIG_HELP' => 'SdGroupEcoOn'),
// Режим восхода солнца
'groupSunrise' => array('DESCRIPTION' => LANG_DEVICES_GROUP_SUNRISE, '_CONFIG_TYPE' => 'yesno', '_CONFIG_RESTRICTIONS' => 1, '_CONFIG_HELP' => 'SdGroupSunrise'),
// Режим заката солнца
'groupSunset' => array('DESCRIPTION' => LANG_DEVICES_GROUP_SUNSET, '_CONFIG_TYPE' => 'yesno', '_CONFIG_RESTRICTIONS' => 1, '_CONFIG_HELP' => 'SdGroupSunset'),
// Ночной режим
'groupNight' => array('DESCRIPTION' => LANG_DEVICES_GROUP_NIGHT, '_CONFIG_TYPE' => 'yesno', '_CONFIG_RESTRICTIONS' => 1, '_CONFIG_HELP' => 'SdGroupNight'),
// Присутствие активности
'isActivity' => array('DESCRIPTION' => LANG_DEVICES_IS_ACTIVITY, '_CONFIG_TYPE' => 'yesno', '_CONFIG_HELP' => 'SdIsActivity'),
// Тип нагрузки
'loadType' => array('DESCRIPTION' => LANG_DEVICES_LOADTYPE,
'_CONFIG_TYPE' => 'select', '_CONFIG_HELP' => 'SdLoadType',
'_CONFIG_OPTIONS' => 'light=' . LANG_DEVICES_LOADTYPE_LIGHT .
',heating=' . LANG_DEVICES_LOADTYPE_HEATING .
',vent=' . LANG_DEVICES_LOADTYPE_VENT .
',curtains=' . LANG_DEVICES_LOADTYPE_CURTAINS .
',gates=' . LANG_DEVICES_LOADTYPE_GATES .
',power=' . LANG_DEVICES_LOADTYPE_POWER),
// Иконка устройства
'icon' => array('DESCRIPTION' => LANG_IMAGE, '_CONFIG_TYPE' => 'style_image', '_CONFIG_HELP' => 'SdIcon'),
),
// Методы, связанные с этим типом устройства
'METHODS' => array(
// Включение устройства
'turnOn' => array('DESCRIPTION' => LANG_DEVICES_TURN_ON, '_CONFIG_SHOW' => 1),
// Выключение устройства
'turnOff' => array('DESCRIPTION' => LANG_DEVICES_TURN_OFF, '_CONFIG_SHOW' => 1),
// Переключение устройства
'switch' => array('DESCRIPTION' => 'Switch'),
)
),
// Определение типа устройств "group" (группы устройств)
'group' => array(
'PARENT_CLASS' => 'SControllers',
'CLASS' => 'SGroups',
'PROPERTIES' => array(
// Системное имя группы
'groupName' => array('DESCRIPTION' => 'Group system name'),
),
'METHODS' => array(
// Включение группы устройств
'turnOn' => array('DESCRIPTION' => LANG_DEVICES_TURN_ON),
// Выключение группы устройств
'turnOff' => array('DESCRIPTION' => LANG_DEVICES_TURN_OFF),
// Переключение группы устройств
'switch' => array('DESCRIPTION' => 'Switch'),
// Обновление статуса группы устройств
'statusUpdated' => array('DESCRIPTION' => 'Status Updated'),
)
),
// Определение типа устройства "relay" (реле)
'relay' => array(
'TITLE' => LANG_DEVICES_RELAY,
'PARENT_CLASS' => 'SControllers',
'CLASS' => 'SRelays'
),
// Определение типа устройства "vacuum" (пылесос)
'vacuum' => array(
'TITLE' => LANG_DEVICES_VACUUM,
'PARENT_CLASS' => 'SControllers',
'CLASS' => 'SVacuums',
'METHODS' => array(
// Пауза пылесоса
'pause' => array('DESCRIPTION' => 'Pause', '_CONFIG_SHOW' => 1),
)
),
// Определение типа устройства "media" (медиа устройства)
'media' => array(
'TITLE' => LANG_DEVICES_MEDIA,
'PARENT_CLASS' => 'SControllers',
'CLASS' => 'SMedias',
// Свойства медиа устройства
'PROPERTIES' => array(
// Громкость медиа устройства
'volume' => array('DESCRIPTION' => 'Volume'),
// Номер источника для медиа устройства
'source_num' => array('DESCRIPTION' => 'Source number'),
// Номер канала для медиа устройства
'channel_num' => array('DESCRIPTION' => 'Channel number'),
),
// Методы медиа устройства
'METHODS' => array(
// Пауза медиа устройства
'pause' => array('DESCRIPTION' => 'Pause', '_CONFIG_SHOW' => 1),
// Установка источника для медиа устройства
'setSource' => array('DESCRIPTION' => 'Set source'),
// Установка канала для медиа устройства
'setChannel' => array('DESCRIPTION' => 'Set channel'),
// Установка громкости для медиа устройства
'setVolume' => array('DESCRIPTION' => 'Set volume'),
)
),
// Определение типа устройства "tv" (телевизор)
'tv' => array(
'TITLE' => LANG_DEVICES_TV,
'PARENT_CLASS' => 'SControllers',
'CLASS' => 'STVs',
// Свойства телевизора
'PROPERTIES' => array(
// Громкость телевизора
'volume' => array('DESCRIPTION' => 'Volume'),
// Номер источника для телевизора
'source_num' => array('DESCRIPTION' => 'Source number'),
// Номер канала для телевизора
'channel_num' => array('DESCRIPTION' => 'Channel number'),
),
// Методы телевизора
'METHODS' => array(
// Пауза телевизора
'pause' => array('DESCRIPTION' => 'Pause', '_CONFIG_SHOW' => 1),
// Установка источника для телевизора
'setSource' => array('DESCRIPTION' => 'Set source'),
// Установка канала для телевизора
'setChannel' => array('DESCRIPTION' => 'Set channel'),
// Установка громкости для телевизора
'setVolume' => array('DESCRIPTION' => 'Set volume'),
)
),
// Определение типа устройства "thermostat" (термостат)
'thermostat' => array(
'TITLE' => LANG_DEVICES_THERMOSTAT,
'PARENT_CLASS' => 'SControllers',
'CLASS' => 'SThermostats',
// Свойства термостата
'PROPERTIES' => array(
// Статус реле термостата
'relay_status' => array('DESCRIPTION' => LANG_DEVICES_THERMOSTAT_RELAY_STATUS, 'KEEP_HISTORY' => 365, 'DATA_KEY' => 1),
// Текущая температура
'value' => array('DESCRIPTION' => LANG_DEVICES_THERMOSTAT_CURRENT_TEMP, 'ONCHANGE' => 'valueUpdated', 'KEEP_HISTORY' => 365, 'DATA_KEY' => 1),
// Текущее целевое значение температуры
'currentTargetValue' => array('DESCRIPTION' => LANG_DEVICES_THERMOSTAT_CURRENT_TARGET_TEMP, 'DATA_KEY' => 1, '_CONFIG_DEFAULT' => 22),
// Нормальное целевое значение температуры
'normalTargetValue' => array('DESCRIPTION' => LANG_DEVICES_THERMOSTAT_NORMAL_TEMP, '_CONFIG_TYPE' => 'text', 'ONCHANGE' => 'valueUpdated', '_CONFIG_HELP' => 'SdThermostat', '_CONFIG_DEFAULT' => 22),
// Экономичное целевое значение температуры
'ecoTargetValue' => array('DESCRIPTION' => LANG_DEVICES_THERMOSTAT_ECO_TEMP, '_CONFIG_TYPE' => 'text', 'ONCHANGE' => 'valueUpdated', '_CONFIG_HELP' => 'SdThermostat', '_CONFIG_DEFAULT' => 18),
// Пороговое значение температуры
'threshold' => array('DESCRIPTION' => LANG_DEVICES_THERMOSTAT_THRESHOLD, '_CONFIG_TYPE' => 'text', 'ONCHANGE' => 'valueUpdated', '_CONFIG_HELP' => 'SdThermostat'),
// Режим работы термостата (Normal Close/Normal Open)
'ncno' => array('DESCRIPTION' => LANG_DEVICES_NCNO, '_CONFIG_TYPE' => 'select', '_CONFIG_OPTIONS' => 'nc=Normal Close (Heating),no=Normal Open (Cooling)', '_CONFIG_HELP' => 'SdThermostat'),
// Отключение термостата
'disabled' => array('DESCRIPTION' => 'Disabled'),
),
// Методы термостата
'METHODS' => array(
// Установка целевой температуры
'setTargetTemperature' => array('DESCRIPTION' => LANG_DEVICES_THERMOSTAT_SET_TARGET_TEMPERATURE, '_CONFIG_SHOW' => 1, '_CONFIG_REQ_VALUE' => 1),
// Обновление значения температуры
'valueUpdated' => array('DESCRIPTION' => 'Value Updated'),
// Обновление статуса устройства
'statusUpdated' => array('DESCRIPTION' => 'Status Updated'),
// Увеличение целевой температуры
'tempUp' => array('DESCRIPTION' => 'Increase target temperature'),
// Уменьшение целевой температуры
'tempDown' => array('DESCRIPTION' => 'Descrease target temperature'),
// Включение/выключение термостата
'switchEnable' => array('DESCRIPTION' => 'Switch Enable'),
// Включение термостата
'enable' => array('DESCRIPTION' => 'Enable'),
// Выключение термостата
'disable' => array('DESCRIPTION' => LANG_DEVICES_THERMOSTAT_MODE . ': ' . LANG_DEVICES_THERMOSTAT_MODE_OFF, '_CONFIG_SHOW' => 1),
// Включение термостата в нормальный режим
'turnOn' => array('DESCRIPTION' => LANG_DEVICES_THERMOSTAT_MODE . ': ' . LANG_DEVICES_THERMOSTAT_MODE_NORMAL, '_CONFIG_SHOW' => 1),
// Включение термостата в экономичный режим
'turnOff' => array('DESCRIPTION' => LANG_DEVICES_THERMOSTAT_MODE . ': ' . LANG_DEVICES_THERMOSTAT_MODE_ECO, '_CONFIG_SHOW' => 1),
)
),
// Определение типа устройства "ac" (кондиционер)
'ac' => array(
'TITLE' => LANG_DEVICES_AC,
'PARENT_CLASS' => 'SControllers',
'CLASS' => 'SAirConditioners',
// Свойства кондиционера
'PROPERTIES' => array(
// Текущая температура
'value' => array('DESCRIPTION' => LANG_DEVICES_THERMOSTAT_CURRENT_TEMP, 'ONCHANGE' => 'valueUpdated', 'KEEP_HISTORY' => 365, 'DATA_KEY' => 1),
// Текущее целевое значение температуры
'currentTargetValue' => array('DESCRIPTION' => LANG_DEVICES_THERMOSTAT_CURRENT_TARGET_TEMP, 'DATA_KEY' => 1, 'KEEP_HISTORY' => 365, '_CONFIG_DEFAULT' => 22),
// Шаг изменения температуры
'tempStep' => array('DESCRIPTION' => LANG_DEVICES_AC_TEMP_STEP, '_CONFIG_TYPE' => 'text'),
// Скорость вентилятора
'fanSpeed' => array('DESCRIPTION' => 'Fan Speed', '_CONFIG_DEFAULT' => 'auto', 'ONCHANGE' => 'fanSpeedUpdated'),
// Режимы работы вентилятора
'fanSpeedModes' => array('DESCRIPTION' => LANG_DEVICES_AC_FAN_SPEED,
'_CONFIG_TYPE' => 'multi_select',
'_CONFIG_OPTIONS' => 'high=' . LANG_DEVICES_AC_FAN_SPEED_HIGH . ',medium=' . LANG_DEVICES_AC_FAN_SPEED_MEDIUM . ',low=' . LANG_DEVICES_AC_FAN_SPEED_LOW . ',auto=' . LANG_DEVICES_AC_FAN_SPEED_AUTO,
'_CONFIG_DEFAULT' => 'high,medium,low,auto', 'ONCHANGE' => 'configUpdated', 'ONCHANGE' => 'fanSpeedUpdated'),
// HTML для режимов работы вентилятора
'fanSpeedModesHTML' => array('DESCRIPTION' => 'FanSpeedModes HTML'),
// Режим работы термостата
'thermostat' => array('DESCRIPTION' => 'Thermostat', '_CONFIG_DEFAULT' => 'auto', 'ONCHANGE' => 'thermostatUpdated'),
// Режимы работы термостата
'thermostatModes' => array('DESCRIPTION' => LANG_DEVICES_AC_THERMOSTAT,
'_CONFIG_TYPE' => 'multi_select',
'_CONFIG_OPTIONS' => 'fan_only=' . LANG_DEVICES_AC_THERMOSTAT_FAN_ONLY . ',heat=' . LANG_DEVICES_AC_THERMOSTAT_HEAT . ',cool=' . LANG_DEVICES_AC_THERMOSTAT_COOL . ',dry=' . LANG_DEVICES_AC_THERMOSTAT_DRY . ',auto=' . LANG_DEVICES_AC_THERMOSTAT_AUTO,
'_CONFIG_DEFAULT' => 'fan_only,heat,cool,dry,auto', 'ONCHANGE' => 'configUpdated'),
// HTML для режимов работы термостата
'thermostatModesHTML' => array('DESCRIPTION' => 'ThermostatModes HTML'),
),
// Методы кондиционера.
'METHODS' => array(
// Установка целевой температуры
'setTargetTemperature' => array('DESCRIPTION' => 'Set target temperature'),
// Установка режима работы термостата
'setThermostatMode' => array('DESCRIPTION' => 'Set thermostat mode'),
// Установка режима работы вентилятора
'setFanSpeedMode' => array('DESCRIPTION' => 'Set fan speed mode'),
// Обновление конфигурации
'configUpdated' => array('DESCRIPTION' => 'Config updated'),
// Обновление скорости вентилятора
'fanSpeedUpdated' => array('DESCRIPTION' => 'Fan Speed updated'),
// Обновление режима работы термостата
'thermostatUpdated' => array('DESCRIPTION' => 'Thermostat updated'),
// Увеличение целевой температуры
'tempUp' => array('DESCRIPTION' => 'Increase target temperature'),
// Уменьшение целевой температуры
'tempDown' => array('DESCRIPTION' => 'Descrease target temperature'),
)
),
// Определение типа устройства "dimmer" (диммер)
'dimmer' => array(
'TITLE' => LANG_DEVICES_DIMMER,
'PARENT_CLASS' => 'SControllers',
'CLASS' => 'SDimmers',
'PROPERTIES' => array(
// Текущий уровень яркости
'level' => array('DESCRIPTION' => 'Current brightness level', 'ONCHANGE' => 'levelUpdated', 'DATA_KEY' => 1),
// Последний сохраненный уровень
'levelSaved' => array('DESCRIPTION' => 'Latest level saved'),
// Уровень яркости (рабочий)
'levelWork' => array('DESCRIPTION' => 'Brightness level (work)', 'ONCHANGE' => 'levelWorkUpdated'),
// Минимальный рабочий уровень
'minWork' => array('DESCRIPTION' => LANG_DEVICES_DIMMER_MIN_WORK, '_CONFIG_TYPE' => 'num', '_CONFIG_HELP' => 'SdDimmerMinMax'),
// Максимальный рабочий уровень
'maxWork' => array('DESCRIPTION' => LANG_DEVICES_DIMMER_MAX_WORK, '_CONFIG_TYPE' => 'num', '_CONFIG_HELP' => 'SdDimmerMinMax'),
// Переключение уровня яркости
'switchLevel' => array('DESCRIPTION' => LANG_DEVICES_DIMMER_SWITCH_LEVEL, '_CONFIG_TYPE' => 'yesno', '_CONFIG_HELP' => 'SdDimmerSwitchLevel'),
// Установка максимального уровня включения
'setMaxTurnOn' => array('DESCRIPTION' => LANG_DEVICES_DIMMER_SET_MAX, '_CONFIG_TYPE' => 'yesno', '_CONFIG_HELP' => 'SdDimmerSetMax'),
),
// Методы димера
'METHODS' => array(
// Установка уровня яркости
'setLevel' => array('DESCRIPTION' => LANG_DEVICES_DIMMER_SET_TARGET_LEVEL, '_CONFIG_SHOW' => 1, '_CONFIG_REQ_VALUE' => 1),
// Обновление статуса устройства
'statusUpdated' => array('DESCRIPTION' => 'Status Updated'),
// Обновление уровня яркости
'levelUpdated' => array('DESCRIPTION' => 'Level Updated'),
// Обновление рабочего уровня яркости
'levelWorkUpdated' => array('DESCRIPTION' => 'Level Work Updated'),
// Включение устройства
'turnOn' => array('DESCRIPTION' => LANG_DEVICES_TURN_ON, '_CONFIG_SHOW' => 1),
// Выключение устройства
'turnOff' => array('DESCRIPTION' => LANG_DEVICES_TURN_OFF, '_CONFIG_SHOW' => 1),
)
),
// Определение типа устройства "rgb" (RGB-контроллер)
'rgb' => array(
'TITLE' => LANG_DEVICES_RGB,
'PARENT_CLASS' => 'SControllers',
'CLASS' => 'SRGB',
// Свойства RGB-контроллера
'PROPERTIES' => array(
// Текущий цвет
'color' => array('DESCRIPTION' => 'Current color', 'ONCHANGE' => 'colorUpdated', 'DATA_KEY' => 1),
// Сохраненный цвет
'colorSaved' => array('DESCRIPTION' => 'Saved color'),
// Текущая яркость
'brightness' => array('DESCRIPTION' => 'Current brightness', 'ONCHANGE' => 'colorUpdated'),
),
// Методы RGB-контроллера
'METHODS' => array(
// Обновление цвета
'colorUpdated' => array('DESCRIPTION' => 'Color Updated'),
// Установка цвета
'setColor' => array('DESCRIPTION' => 'Color Set'),
// Включение устройства
'turnOn' => array('DESCRIPTION' => LANG_DEVICES_TURN_ON, '_CONFIG_SHOW' => 1),
// Выключение устройства
'turnOff' => array('DESCRIPTION' => LANG_DEVICES_TURN_OFF, '_CONFIG_SHOW' => 1),
)
),
// Определение типа устройства "motion" (датчик движения)
'motion' => array(
'TITLE' => LANG_DEVICES_MOTION,
'PARENT_CLASS' => 'SDevices',
'CLASS' => 'SMotions',
// Свойства датчика движения
'PROPERTIES' => array(
// Датчик присутствия ли это
'isPresenceSensor' => array('DESCRIPTION' => LANG_DEVICES_MOTION_PRESENCE, '_CONFIG_TYPE' => 'yesno', '_CONFIG_HELP' => 'SdMotionPrecence'),
// Игнорировать движение, когда "никто не дома"
'ignoreNobodysHome' => array('DESCRIPTION' => LANG_DEVICES_MOTION_IGNORE, '_CONFIG_TYPE' => 'yesno', '_CONFIG_HELP' => 'SdIgnoreNobodysHome'),
// Сбросить состояние датчика движения
'resetNobodysHome' => array('DESCRIPTION' => LANG_DEVICES_MOTION_RESET, '_CONFIG_TYPE' => 'yesno', '_CONFIG_HELP' => 'SdResetNobodysHome'),
// Таймаут датчика движения
'timeout' => array('DESCRIPTION' => LANG_DEVICES_MOTION_TIMEOUT, '_CONFIG_TYPE' => 'num', '_CONFIG_HELP' => 'SdMotionTimeout'),
// Заблокирован ли датчик движения
'blocked' => array('DESCRIPTION' => 'Is blocked'),
),
// Методы датчика движения
'METHODS' => array(
// Обнаружение движения
'motionDetected' => array('DESCRIPTION' => 'Motion Detected'),
// Блокировка датчика движения
'blockSensor' => array('DESCRIPTION' => LANG_BLOCK_SENSOR, '_CONFIG_SHOW' => 1),
// Разблокировка датчика движения
'unblockSensor' => array('DESCRIPTION' => LANG_UNBLOCK_SENSOR, '_CONFIG_SHOW' => 1),
)
),
// Определение типа устройства "camera" (камера)
'camera' => array(
'TITLE' => LANG_DEVICES_CAMERA,
'PARENT_CLASS' => 'SDevices',
'CLASS' => 'SCameras',
//Свойства камеры
'PROPERTIES' => array(
// URL потока видео (низкое качество)
'streamURL' => array('DESCRIPTION' => LANG_DEVICES_CAMERA_STREAM_URL . ' (LQ)', 'ONCHANGE' => 'updatePreview', '_CONFIG_TYPE' => 'text', '_CONFIG_HELP' => 'SdCameraStreamUrl'),
// URL потока видео (высокое качество)
'streamURL_HQ' => array('DESCRIPTION' => LANG_DEVICES_CAMERA_STREAM_URL . ' (HQ)', 'ONCHANGE' => 'updatePreview', '_CONFIG_TYPE' => 'text', '_CONFIG_HELP' => 'SdCameraStreamUrl'),
// Имя пользователя для доступа к камере
'cameraUsername' => array('DESCRIPTION' => LANG_DEVICES_CAMERA_USERNAME, '_CONFIG_TYPE' => 'text'),
// Пароль для доступа к камере
'cameraPassword' => array('DESCRIPTION' => LANG_DEVICES_CAMERA_PASSWORD, 'ONCHANGE' => 'updatePreview', '_CONFIG_TYPE' => 'text'),
// Транспортный протокол потока видео
'streamTransport' => array('DESCRIPTION' => LANG_DEVICES_CAMERA_STREAM_TRANSPORT, 'ONCHANGE' => 'updatePreview', '_CONFIG_HELP' => 'SdCameraTransport', '_CONFIG_TYPE' => 'select', '_CONFIG_OPTIONS' => 'auto=Auto,udp=UDP,tcp=TCP'),
// Тип предварительного просмотра
'previewType' => array('DESCRIPTION' => LANG_DEVICES_CAMERA_PREVIEW_TYPE, 'ONCHANGE' => 'updatePreview', '_CONFIG_HELP' => 'SdCameraPreviewType', '_CONFIG_TYPE' => 'select', '_CONFIG_OPTIONS' => 'static=' . LANG_DEVICES_CAMERA_PREVIEW_TYPE_STATIC . ',slideshow=' . LANG_DEVICES_CAMERA_PREVIEW_TYPE_SLIDESHOW),
// Действие при клике на предварительный просмотр
'clickAction' => array('DESCRIPTION' => LANG_DEVICES_CAMERA_PREVIEW_ONCLICK, 'ONCHANGE' => 'updatePreview', '_CONFIG_HELP' => 'SdCameraClickType', '_CONFIG_TYPE' => 'select', '_CONFIG_OPTIONS' => 'enlarge=' . LANG_DEVICES_CAMERA_PREVIEW_ONCLICK_ENLARGE . ',stream=' . LANG_DEVICES_CAMERA_PREVIEW_ONCLICK_ORIGINAL),
// URL снимка с камеры
'snapshotURL' => array('DESCRIPTION' => LANG_DEVICES_CAMERA_SNAPSHOT_URL, '_CONFIG_TYPE' => 'text', '_CONFIG_HELP' => 'SdCameraSnapshotUrl'),
// Снимок с камеры
'snapshot' => array('DESCRIPTION' => LANG_DEVICES_CAMERA_SNAPSHOT, 'KEEP_HISTORY' => 365, 'DATA_TYPE' => 5),
// Серия снимков с камеры
'series' => array('DESCRIPTION' => LANG_DEVICES_CAMERA_SNAPSHOT, 'KEEP_HISTORY' => 30, 'DATA_TYPE' => 5),
// URL предварительного просмотра снимка
'snapshotPreviewURL' => array('DESCRIPTION' => 'Snapshot Preview URL'),
// HTML для предварительного просмотра
'previewHTML' => array('DESCRIPTION' => 'Preview HTML',),
// HTML для активного состояния
'activeHTML' => array('DESCRIPTION' => 'Active HTML',),
// Игнорировать движение, когда "никто не дома"
'ignoreNobodysHome' => array('DESCRIPTION' => LANG_DEVICES_MOTION_IGNORE, '_CONFIG_TYPE' => 'yesno', '_CONFIG_HELP' => 'SdIgnoreNobodysHome'),
// Таймаут датчика движения
'timeout' => array('DESCRIPTION' => LANG_DEVICES_MOTION_TIMEOUT, '_CONFIG_TYPE' => 'num', '_CONFIG_HELP' => 'SdMotionTimeout')
),
// Методы камеры
'METHODS' => array(
// Обнаружение движения
'motionDetected' => array('DESCRIPTION' => 'Motion Detected'),
// Обновление кода предварительного просмотра
'updatePreview' => array('DESCRIPTION' => 'Update preview code'),
// Сделать снимок
'takeSnapshot' => array('DESCRIPTION' => 'Take snapshot', '_CONFIG_SHOW' => 1),
// Сделать серию снимков
'takeSeries' => array('DESCRIPTION' => 'Takes image series'),
)
),
// Определение типа устройства "openclose" (датчик открытия/закрытия)
'openclose' => array(
'TITLE' => LANG_DEVICES_OPENCLOSE,
'PARENT_CLASS' => 'SDevices',
'CLASS' => 'SOpenClose',
// Свойства датчика открытия/закрытия
'PROPERTIES' => array(
// Присутствие активности
'isActivity' => array('DESCRIPTION' => LANG_DEVICES_IS_ACTIVITY, '_CONFIG_TYPE' => 'yesno', '_CONFIG_HELP' => 'SdIsActivity'),
// Режим работы датчика (Normal Close/Normal Open)
'ncno' => array('DESCRIPTION' => LANG_DEVICES_NCNO, '_CONFIG_TYPE' => 'select', '_CONFIG_OPTIONS' => 'nc=Normal Close,no=Normal Open'),
// Уведомлять о статусе
'notify_status' => array('DESCRIPTION' => LANG_DEVICES_NOTIFY_STATUS, '_CONFIG_TYPE' => 'yesno'),
// Уведомлять о не закрытом состоянии
'notify_nc' => array('DESCRIPTION' => LANG_DEVICES_NOTIFY_NOT_CLOSED, '_CONFIG_TYPE' => 'yesno'),
// Заблокирован ли датчик
'blocked' => array('DESCRIPTION' => 'Is blocked'),
// Сообщение при открытии
'notify_msg_opening' => array('DESCRIPTION' => LANG_DEVICES_MSG_OPENING, '_CONFIG_TYPE' => 'text'),
// Сообщение при закрытии
'notify_msg_closing' => array('DESCRIPTION' => LANG_DEVICES_MSG_CLOSING, '_CONFIG_TYPE' => 'text'),
// Напоминание о не закрытом состоянии
'notify_msg_reminder' => array('DESCRIPTION' => LANG_DEVICES_MSG_REMINDER, '_CONFIG_TYPE' => 'text'),
),
// Методы датчика открытия/закрытия
'METHODS' => array(
// Обновление статуса устройства
'statusUpdated' => array('DESCRIPTION' => 'Status updated event'),
// Блокировка датчика
'blockSensor' => array('DESCRIPTION' => LANG_BLOCK_SENSOR, '_CONFIG_SHOW' => 1),
// Разблокировка датчика
'unblockSensor' => array('DESCRIPTION' => LANG_UNBLOCK_SENSOR, '_CONFIG_SHOW' => 1),
)
),
// Определение типа устройства "openable" (открываемые устройства)
'openable' => array(
'TITLE' => LANG_DEVICES_OPENABLE,
'PARENT_CLASS' => 'SDevices',
'CLASS' => 'SOpenable',
// Свойства открываемых устройств
'PROPERTIES' => array(
// Присутствие активности
'isActivity' => array('DESCRIPTION' => LANG_DEVICES_IS_ACTIVITY, '_CONFIG_TYPE' => 'yesno', '_CONFIG_HELP' => 'SdIsActivity'),
// Уведомлять о статусе
'notify_status' => array('DESCRIPTION' => LANG_DEVICES_NOTIFY_STATUS, '_CONFIG_TYPE' => 'yesno'),
// Уведомлять о не закрытом состоянии
'notify_nc' => array('DESCRIPTION' => LANG_DEVICES_NOTIFY_NOT_CLOSED, '_CONFIG_TYPE' => 'yesno'),
// Поддержка уровня открытия
'support_level' => array('DESCRIPTION' => LANG_DEVICES_OPENABLE_SUPPORT_LEVEL, '_CONFIG_TYPE' => 'yesno'),
// Тип открываемого устройства
'openType' => array('DESCRIPTION' => LANG_DEVICES_OPENTYPE,
'_CONFIG_TYPE' => 'select', '_CONFIG_HELP' => 'SdOpenType',
'_CONFIG_OPTIONS' =>
'gates=' . LANG_DEVICES_OPENTYPE_GATES .
',window=' . LANG_DEVICES_OPENTYPE_WINDOW .
',door=' . LANG_DEVICES_OPENTYPE_DOOR .
',curtains=' . LANG_DEVICES_OPENTYPE_CURTAINS .
',shutters=' . LANG_DEVICES_OPENTYPE_SHUTTERS),
// Сообщение при открытии
'notify_msg_opening' => array('DESCRIPTION' => LANG_DEVICES_MSG_OPENING, '_CONFIG_TYPE' => 'text'),
// Сообщение при закрытии
'notify_msg_closing' => array('DESCRIPTION' => LANG_DEVICES_MSG_CLOSING, '_CONFIG_TYPE' => 'text'),
// Напоминание о не закрытом состоянии
'notify_msg_reminder' => array('DESCRIPTION' => LANG_DEVICES_MSG_REMINDER, '_CONFIG_TYPE' => 'text'),
// Текущий уровень открытия
'level' => array('DESCRIPTION' => 'Current level', 'ONCHANGE' => 'levelUpdated'),
// Последний сохраненный уровень
'levelSaved' => array('DESCRIPTION' => 'Latest level saved'),
),
// Методы открываемого устройства
'METHODS' => array(
// Обновление статуса устройства
'statusUpdated' => array('DESCRIPTION' => 'Status updated event'),
// Установка уровня открытия
'setLevel' => array('DESCRIPTION' => 'Set open level'),
// Обновление уровня открытия
'levelUpdated' => array('DESCRIPTION' => 'Level Updated'),
// Переключение состояния устройства
'switch' => array('DESCRIPTION' => 'Switch'),
// Открытие устройства
'open' => array('DESCRIPTION' => 'Open', '_CONFIG_SHOW' => 1),
// Закрытие устройства
'close' => array('DESCRIPTION' => 'Close', '_CONFIG_SHOW' => 1),
)
),
// Определение типа устройства "leak" (датчик протечки)
'leak' => array(
'TITLE' => LANG_DEVICES_LEAK_SENSOR,
'PARENT_CLASS' => 'SDevices',
'CLASS' => 'SLeak',
//Свойства датчика протечки
'PROPERTIES' => array(
// Уведомлять о устранении протечки
'notify_eliminated' => array('DESCRIPTION' => LANG_DEVICES_NOTIFY_ELIMINATED, '_CONFIG_TYPE' => 'yesno'),
// Напоминание о протечке
'notify_msg_reminder' => array('DESCRIPTION' => LANG_DEVICES_MSG_REMINDER, '_CONFIG_TYPE' => 'text'),
// Заблокирован ли датчик
'blocked' => array('DESCRIPTION' => 'Is blocked'),
),
// Методы датчика протечки
'METHODS' => array(
// Обновление статуса устройства
'statusUpdated' => array('DESCRIPTION' => 'Status updated event'),
// Сигнал тревоги
'alert' => array('DESCRIPTION' => 'Sensor alert'),
// Блокировка датчика
'blockSensor' => array('DESCRIPTION' => LANG_BLOCK_SENSOR, '_CONFIG_SHOW' => 1),
// Разблокировка датчика
'unblockSensor' => array('DESCRIPTION' => LANG_UNBLOCK_SENSOR, '_CONFIG_SHOW' => 1),
)
),
// Определение типа устройства "smoke" (датчик дыма)
'smoke' => array(
'TITLE' => LANG_DEVICES_SMOKE_SENSOR,
'PARENT_CLASS' => 'SDevices',
'CLASS' => 'SSmoke',
// Свойства датчика дыма
'PROPERTIES' => array(
// Уведомлять об устранении задымления
'notify_eliminated' => array('DESCRIPTION' => LANG_DEVICES_NOTIFY_ELIMINATED, '_CONFIG_TYPE' => 'yesno'),
// Заблокирован ли датчик
'blocked' => array('DESCRIPTION' => 'Is blocked'),
),
// Методы датчика дыма
'METHODS' => array(
// Обновление статуса устройства
'statusUpdated' => array('DESCRIPTION' => 'Status updated event'),
// Сигнал тревоги
'alert' => array('DESCRIPTION' => 'Sensor alert'),
// Блокировка датчика
'blockSensor' => array('DESCRIPTION' => LANG_BLOCK_SENSOR, '_CONFIG_SHOW' => 1),
// Разблокировка датчика
'unblockSensor' => array('DESCRIPTION' => LANG_UNBLOCK_SENSOR, '_CONFIG_SHOW' => 1),
)
),
// Определение типа устройства "counter" (счетчик)
'counter' => array(
'TITLE' => LANG_DEVICES_COUNTER,
'PARENT_CLASS' => 'SDevices',
'CLASS' => 'SCounters',
'METHODS' => array(
// Обновление значения данных
'valueUpdated' => array('DESCRIPTION' => 'Data Value updated event'),
// Обновление рабочего значения
'valueWorkUpdated' => array('DESCRIPTION' => 'Work Value updated event'),
// Обновление статистики
'refreshStats' => array('DESCRIPTION' => 'Refreshes daily/monthly stats', '_CONFIG_SHOW' => 1),
// Обнаружение импульса счетчика
'pulseDetected' => array('DESCRIPTION' => 'Meter pulse detection'),
),
'PROPERTIES' => array(
// Единица измерения
'unit' => array('DESCRIPTION' => LANG_DEVICES_UNIT, '_CONFIG_TYPE' => 'text'),
// Цена за единицу
'price' => array('DESCRIPTION' => 'Price', '_CONFIG_TYPE' => 'text', '_CONFIG_HELP' => 'SdCounterPrice'),
// Количество импульсов
'pulseAmount' => array('DESCRIPTION' => 'Pulse amount (optional)', '_CONFIG_TYPE' => 'text', '_CONFIG_HELP' => 'SdPulseAmount'),
// Значение данных
'value' => array('DESCRIPTION' => 'Data Value', 'ONCHANGE' => 'valueUpdated', 'DATA_KEY' => 1),
// Рабочее значение
'valueWork' => array('DESCRIPTION' => 'Work Value', 'ONCHANGE' => 'valueWorkUpdated', 'KEEP_HISTORY' => 0),
// Значение за час
'valueHour' => array('DESCRIPTION' => 'Hour Value', 'KEEP_HISTORY' => 365),
// Значение за день
'valueDay' => array('DESCRIPTION' => 'Day Value', 'KEEP_HISTORY' => 5 * 365),
// Значение за месяц
'valueMonth' => array('DESCRIPTION' => 'Month Value', 'KEEP_HISTORY' => 5 * 365),
// Коэффициент преобразования (рабочее-к-данным)
'conversion' => array('DESCRIPTION' => 'Conversion coefficient (work-to-data)', '_CONFIG_TYPE' => 'text', '_CONFIG_HELP' => 'SdConversion'),
),
),
// Определение типа устройства "button" (кнопка)
'button' => array(
'TITLE' => LANG_DEVICES_BUTTON,
'PARENT_CLASS' => 'SDevices',
'CLASS' => 'SButtons',
'PROPERTIES' => array(
// Иконка устройства
'icon' => array('DESCRIPTION' => LANG_IMAGE, '_CONFIG_TYPE' => 'style_image', '_CONFIG_HELP' => 'SdIcon'),
// Присутствие активности
'isActivity' => array('DESCRIPTION' => LANG_DEVICES_IS_ACTIVITY, '_CONFIG_TYPE' => 'yesno', '_CONFIG_HELP' => 'SdIsActivity'),
),
'METHODS' => array(
// Нажатие кнопки
'pressed' => array('DESCRIPTION' => LANG_DEVICES_PRESS, '_CONFIG_SHOW' => 1),
)
),
// Определение типа устройства "sensor" (датчик)
'sensor' => array(
'PARENT_CLASS' => 'SDevices',
'CLASS' => 'SSensors',
'PROPERTIES' => array(
// Текущее значение датчика
'value' => array('DESCRIPTION' => 'Current Sensor Value', 'ONCHANGE' => 'valueUpdated', 'KEEP_HISTORY' => 365, 'DATA_KEY' => 1),
// Минимальное значение
'minValue' => array('DESCRIPTION' => LANG_DEVICES_MIN_VALUE, '_CONFIG_TYPE' => 'num', '_CONFIG_HELP' => 'SdSensorMinMax'),
// Максимальное значение
'maxValue' => array('DESCRIPTION' => LANG_DEVICES_MAX_VALUE, '_CONFIG_TYPE' => 'num', '_CONFIG_HELP' => 'SdSensorMinMax'),
// Уведомлять о превышении значений
'notify' => array('DESCRIPTION' => LANG_DEVICES_NOTIFY, '_CONFIG_TYPE' => 'yesno', '_CONFIG_HELP' => 'SdSensorMinMax'),
// Уведомлять о устранении утечки
'notify_eliminated' => array('DESCRIPTION' => LANG_DEVICES_NOTIFY_ELIMINATED, '_CONFIG_TYPE' => 'yesno'),
// Основной датчик
'mainSensor' => array('DESCRIPTION' => LANG_DEVICES_MAIN_SENSOR, '_CONFIG_TYPE' => 'yesno', '_CONFIG_HELP' => 'SdMainSensor'),
// Нормальное значение
'normalValue' => array('DESCRIPTION' => LANG_DEVICES_NORMAL_VALUE, 'KEEP_HISTORY' => 0),
// Направление изменений
'direction' => array('DESCRIPTION' => 'Direction of changes', 'KEEP_HISTORY' => 0),
// Таймаут направления изменений
'directionTimeout' => array('DESCRIPTION' => LANG_DEVICES_DIRECTION_TIMEOUT, 'KEEP_HISTORY' => 0, '_CONFIG_TYPE' => 'num', '_CONFIG_HELP' => 'SdDirectionTimeout', 'ONCHANGE' => 'valueUpdated'),
// Заблокирован ли датчик
'blocked' => array('DESCRIPTION' => 'Is blocked'),
),
'METHODS' => array(
// Обновление значения
'valueUpdated' => array('DESCRIPTION' => 'Value Updated'),
// Сигнал тревоги
'alert' => array('DESCRIPTION' => 'Sensor alert'),
// Блокировка датчика
'blockSensor' => array('DESCRIPTION' => LANG_BLOCK_SENSOR, '_CONFIG_SHOW' => 1),
// Разблокировка датчика
'unblockSensor' => array('DESCRIPTION' => LANG_UNBLOCK_SENSOR, '_CONFIG_SHOW' => 1),
)
),
// Определение типа устройства "sensor_general" (общий датчик)
'sensor_general' => array(
'TITLE' => LANG_DEVICES_GENERAL_SENSOR,
'PARENT_CLASS' => 'SSensors',
'CLASS' => 'SGeneralSensors',
'PROPERTIES' => array(
// Единица измерения
'unit' => array('DESCRIPTION' => LANG_DEVICES_UNIT, '_CONFIG_TYPE' => 'text'),
),
),
// Определение типа устройства "sensor_temp" (датчик температуры)
'sensor_temp' => array(
'TITLE' => LANG_DEVICES_TEMP_SENSOR,
'PARENT_CLASS' => 'SSensors',
'CLASS' => 'STempSensors'
),
// Определение типа устройства "sensor_humidity" (датчик влажности)
'sensor_humidity' => array(
'TITLE' => LANG_DEVICES_HUM_SENSOR,
'PARENT_CLASS' => 'SSensors',
'CLASS' => 'SHumSensors'
),
// Определение типа устройства "sensor_moisture" (датчик влажности почвы)
'sensor_moisture' => array(
'TITLE' => LANG_DEVICES_MOISTURE_SENSOR,
'PARENT_CLASS' => 'SSensors',
'CLASS' => 'SMoistureSensors'
),
// Определение типа устройства "sensor_co2" (датчик CO2)
'sensor_co2' => array(
'TITLE' => LANG_DEVICES_CO2_SENSOR,
'PARENT_CLASS' => 'SSensors',
'CLASS' => 'SCO2Sensors'
),
// Определение типа устройства "sensor_radiation" (датчик радиации)
'sensor_radiation' => array(
'TITLE' => LANG_DEVICES_RADIATION_SENSOR,
'PARENT_CLASS' => 'SSensors',
'CLASS' => 'SRadiationSensors'
),
// Определение типа устройства "sensor_state" (датчик состояния)
'sensor_state' => array(
'TITLE' => LANG_DEVICES_STATE_SENSOR,
'PARENT_CLASS' => 'SSensors',
'CLASS' => 'SStateSensors'
),
// Определение типа устройства "sensor_percentage" (датчик процента)
'sensor_percentage' => array(
'TITLE' => LANG_DEVICES_PERCENTAGE_SENSOR,
'PARENT_CLASS' => 'SSensors',
'CLASS' => 'SPercentageSensors'
),
// Определение типа устройства "sensor_pressure" (датчик давления)
'sensor_pressure' => array(
'TITLE' => LANG_DEVICES_PRESSURE_SENSOR,
'PARENT_CLASS' => 'SSensors',
'CLASS' => 'SPressureSensors'
),
// Определение типа устройства "sensor_power" (датчик мощности)
'sensor_power' => array(
'TITLE' => LANG_DEVICES_POWER_SENSOR,
'PARENT_CLASS' => 'SSensors',
'CLASS' => 'SPowerSensors',
'PROPERTIES' => array(
// Таймаут статуса нагрузки
'loadStatusTimeout' => array('DESCRIPTION' => LANG_DEVICES_LOAD_TIMEOUT, '_CONFIG_TYPE' => 'text', '_CONFIG_HELP' => 'SdLoadTimeout'),
),
'METHODS' => array(
// Обновление значения
'valueUpdated' => array('DESCRIPTION' => 'Value Updated'),
// Изменение статуса нагрузки
'loadStatusChanged' => array('DESCRIPTION' => 'Load Status Changed'),
)
),
// Определение типа устройства "sensor_voltage" (датчик напряжения)
'sensor_voltage' => array(
'TITLE' => LANG_DEVICES_VOLTAGE_SENSOR,
'PARENT_CLASS' => 'SSensors',
'CLASS' => 'SVoltageSensors'
),
// Определение типа устройства "sensor_current" (датчик тока)
'sensor_current' => array(
'TITLE' => LANG_DEVICES_CURRENT_SENSOR,
'PARENT_CLASS' => 'SSensors',
'CLASS' => 'SCurrentSensors'
),
// Определение типа устройства "sensor_light" (датчик освещенности)
'sensor_light' => array(
'TITLE' => LANG_DEVICES_LIGHT_SENSOR,
'PARENT_CLASS' => 'SSensors',
'CLASS' => 'SLightSensors',
// Свойства датчика освещенности
'PROPERTIES' => array(
// Единица измерения
'unit' => array('DESCRIPTION' => LANG_DEVICES_UNIT, '_CONFIG_TYPE' => 'text'),
),
),
);
// Проверка наличия дополнительных модулей
// Определение пути к директории дополнительных модулей
$addons_dir = dirname(__FILE__) . '/addons';
// Проверка, существует ли директория дополнительных модулей
if (is_dir($addons_dir)) {
// Получение списка файлов в директории дополнительных модулей
$addon_files = scandir($addons_dir);
// Перебор каждого файла в списке
foreach ($addon_files as $file) {
// Проверка, соответствует ли имя файла шаблону для структурных файлов модулей
if (preg_match('/\_structure\.php$/', $file)) {
// Подключение файла модуля, если он соответствует шаблону
require($addons_dir . '/' . $file);
}
}
}