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