Modules/devices/devices structure inc php: различия между версиями
Материал из MajorDoMo инфо
Elmax (обсуждение | вклад) (Заготовка) |
Elmax (обсуждение | вклад) (+ file devices_structure.inc.php) |
||
Строка 4: | Строка 4: | ||
<pre> | <pre> | ||
<?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'), | |||
// Дальше на ГИТе свойства и методы датчика удалены, но тогда датчик не работает, поэтому добавляем: | |||
// Минимальное значение за период | |||
'periodMinValue' => array('DESCRIPTION' => 'Minimum value for period', 'ONCHANGE' => 'periodMinValueUpdated', 'KEEP_HISTORY' => 365), | |||
// Время периода для расчета минимального значения (секунды) | |||
'periodTime' => array('DESCRIPTION' => 'Period to calculate minimum value (seconds)', '_CONFIG_TYPE' => 'num', '_CONFIG_HELP' => 'SdSensorPeriodTime'), | |||
), | |||
// Методы датчика освещенности | |||
'METHODS' => array( | |||
// Обновление значения | |||
'valueUpdated' => array('DESCRIPTION' => 'Value Updated', 'CALL_PARENT' => 1), | |||
// Обновление минимального значения за период | |||
'periodMinValueUpdated' => array('DESCRIPTION' => 'Period Min value updated'), | |||
), | |||
), | |||
); | |||
// Проверка наличия дополнительных модулей | |||
// Определение пути к директории дополнительных модулей | |||
$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); | |||
} | |||
} | |||
} | |||
</pre> | </pre> |
Версия от 23:16, 3 апреля 2024
ᐂ В корневой раздел ᐃ В директорию расположения файла
<?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'), // Дальше на ГИТе свойства и методы датчика удалены, но тогда датчик не работает, поэтому добавляем: // Минимальное значение за период 'periodMinValue' => array('DESCRIPTION' => 'Minimum value for period', 'ONCHANGE' => 'periodMinValueUpdated', 'KEEP_HISTORY' => 365), // Время периода для расчета минимального значения (секунды) 'periodTime' => array('DESCRIPTION' => 'Period to calculate minimum value (seconds)', '_CONFIG_TYPE' => 'num', '_CONFIG_HELP' => 'SdSensorPeriodTime'), ), // Методы датчика освещенности 'METHODS' => array( // Обновление значения 'valueUpdated' => array('DESCRIPTION' => 'Value Updated', 'CALL_PARENT' => 1), // Обновление минимального значения за период 'periodMinValueUpdated' => array('DESCRIPTION' => 'Period Min value updated'), ), ), ); // Проверка наличия дополнительных модулей // Определение пути к директории дополнительных модулей $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); } } }