<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://mdminfo.ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Elmax</id>
	<title>MajorDoMo инфо - Вклад [ru]</title>
	<link rel="self" type="application/atom+xml" href="https://mdminfo.ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Elmax"/>
	<link rel="alternate" type="text/html" href="https://mdminfo.ru/wiki/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/Elmax"/>
	<updated>2026-06-02T09:44:38Z</updated>
	<subtitle>Вклад</subtitle>
	<generator>MediaWiki 1.38.4</generator>
	<entry>
		<id>https://mdminfo.ru/index.php?title=Modules/devices&amp;diff=2112</id>
		<title>Modules/devices</title>
		<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=Modules/devices&amp;diff=2112"/>
		<updated>2024-04-09T18:40:53Z</updated>

		<summary type="html">&lt;p&gt;Elmax: описание processCommand.inc.php&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Modules/devices|/modules/devices]]&lt;br /&gt;
&lt;br /&gt;
[[Папки и файлы|ᐂ В корневой раздел]]  [[Modules|ᐃ на директорию выше]][https://github.com/sergejey/majordomo/tree/master/modules/devices | Перейти в директорию на github]&lt;br /&gt;
===== Папки директории '''/modules/devices''' =====&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/addons|'''addons''']] - пока папка не имеет описания&lt;br /&gt;
&lt;br /&gt;
===== Файлы директории '''/modules/devices''' =====&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/Rooms_onActivity_php | '''Rooms_onActivity.php''']] - вызывается методом onActivity, класса Rooms. Содерит функции для анализа данных об активности в помещениях и принятия соответствующих действий на основе этой информации.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/Rooms_onIdle_php | '''Rooms_onIdle.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/Rooms_updateActivityStatus_php | '''Rooms_updateActivityStatus.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SButtons_pressed_php | '''SButtons_pressed.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCameras_motionDetected_php | '''SCameras_motionDetected.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCameras_takeSeries_php | '''SCameras_takeSeries.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCameras_takeSnapshot_php | '''SCameras_takeSnapshot.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCameras_updatePreview_php | '''SCameras_updatePreview.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SControllers_switch_php | '''SControllers_switch.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SControllers_turnOff_php | '''SControllers_turnOff.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SControllers_turnOn_php | '''SControllers_turnOn.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCounters_pulseDetected_php | '''SCounters_pulseDetected.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCounters_refreshStats_php | '''SCounters_refreshStats.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCounters_valueUpdated_php | '''SCounters_valueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCounters_valueWorkUpdated_php | '''SCounters_valueWorkUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDevices_batteryLevelUpdated_php | '''SDevices_batteryLevelUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDevices_keepAlive_php | '''SDevices_keepAlive.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDevices_logicAction_php | '''SDevices_logicAction.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDevices_statusUpdated_php | '''SDevices_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_levelUpdated_php | '''SDimmers_levelUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_levelWorkUpdated_php | '''SDimmers_levelWorkUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_setLevel_php | '''SDimmers_setLevel.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_statusUpdated_php | '''SDimmers_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_turnOff_php | '''SDimmers_turnOff.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_turnOn_php | '''SDimmers_turnOn.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SGroups_statusUpdated_php | '''SGroups_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SGroups_switch_php | '''SGroups_switch.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SGroups_turnOff_php | '''SGroups_turnOff.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SGroups_turnOn_php | '''SGroups_turnOn.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLeak_alert_php | '''SLeak_alert.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLeak_blockSensor_php | '''SLeak_blockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLeak_statusUpdated_php | '''SLeak_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLeak_unblockSensor_php | '''SLeak_unblockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMotions_blockSensor_php | '''SMotions_blockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMotions_motionDetected_php | '''SMotions_motionDetected.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMotions_unblockSensor_php | '''SMotions_unblockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenClose_blockSensor_php | '''SOpenClose_blockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenClose_statusUpdated_php | '''SOpenClose_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenClose_unblockSensor_php | '''SOpenClose_unblockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_close_php | '''SOpenable_close.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_levelUpdated_php | '''SOpenable_levelUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_open_php | '''SOpenable_open.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_setLevel_php | '''SOpenable_setLevel.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_statusUpdated_php | '''SOpenable_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_switch_php | '''SOpenable_switch.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SPowerSensors_loadStatusChanged_php | '''SPowerSensors_loadStatusChanged.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SPowerSensors_valueUpdated_php | '''SPowerSensors_valueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SRGB_colorUpdated_php | '''SRGB_colorUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SRGB_setColor_php | '''SRGB_setColor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SRGB_turnOff_php | '''SRGB_turnOff.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SRGB_turnOn_php | '''SRGB_turnOn.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSensors_alert_php | '''SSensors_alert.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSensors_blockSensor_php | '''SSensors_blockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSensors_unblockSensor_php | '''SSensors_unblockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSensors_valueUpdated_php | '''SSensors_valueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSmoke_alert_php | '''SSmoke_alert.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSmoke_blockSensor_php | '''SSmoke_blockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSmoke_statusUpdated_php | '''SSmoke_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSmoke_unblockSensor_php | '''SSmoke_unblockSensor.php''']] -  &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_disable_php | '''SThermostats_disable.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_enable_php | '''SThermostats_enable.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_setTargetTemperature_php | '''SThermostats_setTargetTemperature.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_statusUpdated_php | '''SThermostats_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_switchEnable_php | '''SThermostats_switchEnable.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_tempDown_php | '''SThermostats_tempDown.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_tempUp_php | '''SThermostats_tempUp.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_turnOff_php | '''SThermostats_turnOff.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_turnOn_php | '''SThermostats_turnOn.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_valueUpdated_php | '''SThermostats_valueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_configUpdated_php | '''SAirConditioners_configUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_fanSpeedUpdated_php | '''SAirConditioners_fanSpeedUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_setFanSpeedMode_php | '''SAirConditioners_setFanSpeedMode.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_setTargetTemperature_php | '''SAirConditioners_setTargetTemperature.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_setThermostatMode_php | '''SAirConditioners_setThermostatMode.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_tempDown_php | '''SAirConditioners_tempDown.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_tempUp_php | '''SAirConditioners_tempUp.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_thermostatUpdated_php | '''SAirConditioners_thermostatUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLightSensors_periodMinValueUpdated_php | '''SLightSensors_periodMinValueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLightSensors_valueUpdated_php | '''SLightSensors_valueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMedias_pause_php | '''SMedias_pause.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMedias_setChannel_php | '''SMedias_setChannel.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMedias_setSource_php | '''SMedias_setSource.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMedias_setVolume_php | '''SMedias_setVolume.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/STVs_pause_php | '''STVs_pause.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/STVs_setChannel_php | '''STVs_setChannel.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/STVs_setSource_php | '''STVs_setSource.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/STVs_setVolume_php | '''STVs_setVolume.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SVacuums_pause_php | '''SVacuums_pause.php''']] - &lt;br /&gt;
&lt;br /&gt;
'''app''' -  пока файл не понятен, его назначение так-же&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/darknessmode_activate_php | '''darknessmode_activate.php''']] - для активации устройств, связанных с группой &amp;quot;groupSunset&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/darknessmode_deactivate_php | '''darknessmode_deactivate.php''']] - для деактивации устройств, связанных с группой &amp;quot;groupSunset&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_class_php | '''devices.class.php''']] - содержит набор функций для взаимодействия с устройствами в рамках проекта. Он обеспечивает взаимодействие между устройствами, базой данных, внешними API и другими частями системы, такими как управление группами устройств, связями между ними и действиями, которые могут быть выполнены над устройствами.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_edit_inc_php | '''devices_edit.inc.php''']] - содержит функции и код, связанный с редактированием устройств в проекте. Он включает в себя обработку форм, сохранение данных и другие операции, связанные с редактированием устройств.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_links_inc_php | '''devices_links.inc.php''']] - содержит функции для работы с связями между устройствами. Он включает в себя обработку создания, обновления и удаления связей, а также работу с деталями связей и другие операции, связанные с управлением связями устройств.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_links_actions_inc_php | '''devices_links_actions.inc.php''']] - содержит функции для обработки действий, связанных с устройствами. Он выполняет действия, такие как включение, выключение, установка цвета и передача значений объектов. Также файл подключает дополнительные скрипты для обработки действий из директории [[Modules/devices/addons|'''addons''']]&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_manage_groups_inc_php | '''devices_manage_groups.inc.php''']] - содержит функции для управления группами устройств. Он включает в себя операции по созданию, редактированию и удалению групп устройств, обновление объектов группы, очистку кэша значений, а также перенаправление на соответствующие страницы просмотра.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_manage_schedule_inc_php | '''devices_manage_schedule.inc.php''']] -  этот файл включает в себя операции по созданию, редактированию и удалению расписаний для устройств, а также операции по привязке устройств к определенным временным интервалам и управлению их работой в соответствии с расписанием.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_quick_edit_inc_php | '''devices_quick_edit.inc.php''']] - содержит код для сщздания/редактирования устройств. Он обеспечивает быстрый доступ к основным параметрам устройств, таким как имя, описание, состояние и другие атрибуты, позволяя пользователям внести изменения на странице редактирования.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_schedule_inc_php | '''devices_schedule.inc.php''']] - этот файл предоставляет функциональность для управления расписаниями устройств, включая создание, редактирование и удаление расписаний, а также привязку устройств к определенным временным интервалам и управление их работой в соответствии с расписанием.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_search_inc_php | '''devices_search.inc.php''']] -  содержит функции для поиска устройств в системе. Он предоставляет возможность осуществлять поиск устройств по различным критериям, таким как имя устройства, тип, статус и другие атрибуты. Кроме того, файл может включать функции для фильтрации результатов поиска и отображения найденной информации о устройствах.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_structure_inc_php | '''devices_structure.inc.php''']] - определяет структуру свойств и методов, которыми будут наделены устройства в системе. Он содержит описание основных характеристик устройств, таких как их тип, статус, параметры, возможные действия и другие атрибуты. Кроме того, данный файл определяет методы, которые позволяют взаимодействовать с устройствами, управлять ими и получать информацию о их состоянии.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_structure_links_inc_php | '''devices_structure_links.inc.php''']] - файл определяет структуру связей между устройствами в системе. Он содержит описание основных характеристик связей, таких как тип связи, устройства, которые связаны, параметры связи и другие атрибуты. Кроме того, данный файл определяет методы для управления связями между устройствами, включая создание новых связей, редактирование существующих и удаление ненужных связей.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_widgets_js_php | '''devices_widgets.js.php''']] - файл с примесью js, его я не знаю совсем, поэтому подождем описания знающих, а по ссылке будет страница с кодом без комментариев.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/econommode_activate_php | '''econommode_activate.php''']] - метод активации режима экономии энергии EconomMode.activate. Класс OperationalModes, обьект EconomMode.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/econommode_deactivate_php | '''econommode_deactivate.php''']] - метод деактивации режима экономии энергии EconomMode.activate. Класс OperationalModes, обьект EconomMode.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/homebridgeSendUpdate_inc_php | '''homebridgeSendUpdate.inc.php''']] - Этот файл вероятно отвечает за передачу информации о состоянии устройств, сценариев или других параметров из вашей системы в Homebridge для обновления данных и синхронизации информации между системами.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/homebridgeSync_inc_php | '''homebridgeSync.inc.php''']] - содержит функции для синхронизации устройств и их состояний с платформой Homebridge, которая обеспечивает интеграцию умного дома с устройствами Apple HomeKit. Код в этом файле вероятно отвечает за обновление информации об устройствах и их состояниях в Homebridge, чтобы обеспечить соответствие между системой умного дома и платформой HomeKit.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/nightmode_activate_php | '''nightmode_activate.php''']] - Метод активации ночного режима. Принадлежит классу OperationalModes, объект NightMode.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/nobodyhomemode_activate_php | '''nobodyhomemode_activate.php''']] - Метод активации режима &amp;quot;Никого нет дома&amp;quot; Принадлежит классу OperationalModes, объект NobodyHomeMode.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/nobodyhomemode_deactivate_php | '''nobodyhomemode_deactivate.php''']] - Метод активации режима &amp;quot;Никого нет дома&amp;quot; Принадлежит классу OperationalModes, объект NobodyHomeMode.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/processCommand_inc_php | '''processCommand.inc.php''']] - отвечает за обработку команд устройств. В нем происходит разбор команды, поиск устройств. Также в файле проверяется наличие определенных фраз в команде для взаимодействия с устройствами.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/processHomebridgeMQTT_inc_php | '''processHomebridgeMQTT.inc.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/system_checkstate_php | '''system_checkstate.php''']] -&lt;/div&gt;</summary>
		<author><name>Elmax</name></author>
	</entry>
	<entry>
		<id>https://mdminfo.ru/index.php?title=Modules/devices/processCommand_inc_php&amp;diff=2111</id>
		<title>Modules/devices/processCommand inc php</title>
		<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=Modules/devices/processCommand_inc_php&amp;diff=2111"/>
		<updated>2024-04-09T18:38:27Z</updated>

		<summary type="html">&lt;p&gt;Elmax: + файл processCommand.inc.php&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Modules/devices/processCommand_inc_php | processCommand.inc.php]]&lt;br /&gt;
[[Папки и файлы|ᐂ В корневой раздел]]  [[Modules/devices|ᐃ В директорию расположения файла]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
// Проверяет, отключены ли простые устройства в файле конфигурации ROOT . config.php. Если да, прекращает выполнение скрипта.&lt;br /&gt;
if (defined('DISABLE_SIMPLE_DEVICES') &amp;amp;&amp;amp; DISABLE_SIMPLE_DEVICES == 1) return;&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * array('level' =&amp;gt; $level, 'message' =&amp;gt; $ph, 'member_id' =&amp;gt; $member_id, 'source' =&amp;gt; $source)&lt;br /&gt;
 * $details['BREAK'] = 1 / 0&lt;br /&gt;
 */&lt;br /&gt;
// Этот блок кода, вероятно, предназначен для обработки лога или отладки, так как он содержит пример использования переменной $details['BREAK'].&lt;br /&gt;
// Однако, поскольку он закомментирован, его выполнение в текущем состоянии скрипта не происходит.&lt;br /&gt;
&lt;br /&gt;
// Включаем файлы локализации для текущего языка сайта и по умолчанию.&lt;br /&gt;
@include_once(ROOT . 'languages/' . $this-&amp;gt;name . '_' . SETTINGS_SITE_LANGUAGE . '.php');&lt;br /&gt;
@include_once(ROOT . 'languages/' . $this-&amp;gt;name . '_default' . '.php');&lt;br /&gt;
&lt;br /&gt;
// Если в деталях команды указано источник (терминал), то получаем информацию о терминале.&lt;br /&gt;
if ($details['source']) {&lt;br /&gt;
    $terminal = getTerminalByID(str_replace(&amp;quot;terminal&amp;quot;, &amp;quot;&amp;quot;, $details['source']));&lt;br /&gt;
    // Если у терминала есть ID местоположения, сохраняем его.&lt;br /&gt;
    if ($terminal['LOCATION_ID']) {&lt;br /&gt;
        $location_id = $terminal['LOCATION_ID'];&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
* Этот фрагмент кода анализирует входящую команду на предмет наличия указаний на задержку выполнения,&lt;br /&gt;
* или продолжительность выполнения действия.&lt;br /&gt;
* Если такие указания присутствуют, код вычисляет соответствующие значения в секундах&lt;br /&gt;
* и сохраняет их в переменных $period_delay и $period_run_for соответственно.&lt;br /&gt;
* Также код сохраняет найденное совпадение в переменную $add_phrase, чтобы потом добавить его к сообщению.&lt;br /&gt;
*/&lt;br /&gt;
// Получаем текстовую команду из массива $details, который содержит детали сообщения.&lt;br /&gt;
$command = $details['message'];&lt;br /&gt;
// Инициализируем переменную $run_code как пустую строку. Эта переменная будет использоваться для хранения кода, который нужно выполнить.&lt;br /&gt;
$run_code = '';&lt;br /&gt;
// Инициализируем переменную $opposite_code как пустую строку. Эта переменная будет использоваться для хранения кода, который будет выполнен в качестве противодействия к основному коду.&lt;br /&gt;
$opposite_code = '';&lt;br /&gt;
// Инициализируем переменную $add_phrase как пустую строку. Эта переменная будет использоваться для хранения дополнительной фразы, которая будет добавлена к сообщению.&lt;br /&gt;
$add_phrase = '';&lt;br /&gt;
// Инициализируем переменную $period_delay как 0. Эта переменная будет использоваться для хранения задержки выполнения команды в секундах.&lt;br /&gt;
$period_delay = 0;&lt;br /&gt;
// Инициализируем переменную $period_run_for как 0. Эта переменная будет использоваться для хранения продолжительности выполнения команды в секундах.&lt;br /&gt;
$period_run_for = 0;&lt;br /&gt;
&lt;br /&gt;
// Проверяем, содержит ли команда фразу, указывающую на необходимость выполнения действия после определенного времени.&lt;br /&gt;
if (preg_match('/' . LANG_PATTERN_DO_AFTER . ' (\d+?) (' . LANG_PATTERN_SECOND . '|' . LANG_PATTERN_MINUTE . '|' . LANG_PATTERN_HOUR . ')/uis', textToNumbers($command), $m)) {&lt;br /&gt;
    // Получаем числовое значение времени задержки из найденного совпадения.&lt;br /&gt;
    $period_number = $m[1];&lt;br /&gt;
    // Добавляем найденное совпадение к переменной $add_phrase, чтобы потом добавить его к сообщению.&lt;br /&gt;
    $add_phrase = ' ' . $m[0];&lt;br /&gt;
    // Определяем единицу измерения времени (секунды, минуты, часы) и вычисляем задержку в секундах.&lt;br /&gt;
    if (preg_match('/' . LANG_PATTERN_SECOND . '/uis', $m[2])) {&lt;br /&gt;
        // Если единица измерения - секунды, то задержка равна числовому значению.&lt;br /&gt;
        $period_delay = $period_number;&lt;br /&gt;
    } elseif (preg_match('/' . LANG_PATTERN_MINUTE . '/uis', $m[2])) {&lt;br /&gt;
        // Если единица измерения - минуты, то задержка равна числовому значению, умноженному на 60.&lt;br /&gt;
        $period_delay = $period_number * 60;&lt;br /&gt;
    } elseif (preg_match('/' . LANG_PATTERN_HOUR . '/uis', $m[2])) {&lt;br /&gt;
        // Если единица измерения - часы, то задержка равна числовому значению, умноженному на 3600.&lt;br /&gt;
        $period_delay = $period_number * 60 * 60;&lt;br /&gt;
    }&lt;br /&gt;
    // Удаляем обработанную часть команды, чтобы оставить только саму команду без указания времени задержки.&lt;br /&gt;
    $command = trim(str_replace($m[0], '', textToNumbers($command)));&lt;br /&gt;
} elseif (preg_match('/' . LANG_PATTERN_DO_FOR . ' (\d+?) (' . LANG_PATTERN_SECOND . '|' . LANG_PATTERN_MINUTE . '|' . LANG_PATTERN_HOUR . ')/uis', textToNumbers($command), $m)) {&lt;br /&gt;
    // Получаем числовое значение времени выполнения из найденного совпадения.&lt;br /&gt;
    $period_number = $m[1];&lt;br /&gt;
    // Добавляем найденное совпадение к переменной $add_phrase, чтобы потом добавить его к сообщению.&lt;br /&gt;
    $add_phrase = ' ' . $m[0];&lt;br /&gt;
    // Определяем единицу измерения времени (секунды, минуты, часы) и вычисляем продолжительность выполнения в секундах.&lt;br /&gt;
    if (preg_match('/' . LANG_PATTERN_SECOND . '/uis', $m[2])) {&lt;br /&gt;
        // Если единица измерения - секунды, то продолжительность выполнения равна числовому значению.&lt;br /&gt;
        $period_run_for = $period_number;&lt;br /&gt;
    } elseif (preg_match('/' . LANG_PATTERN_MINUTE . '/uis', $m[2])) {&lt;br /&gt;
        // Если единица измерения - минуты, то продолжительность выполнения равна числовому значению, умноженному на 60.&lt;br /&gt;
        $period_run_for = $period_number * 60;&lt;br /&gt;
    } elseif (preg_match('/' . LANG_PATTERN_HOUR . '/uis', $m[2])) {&lt;br /&gt;
        // Если единица измерения - часы, то продолжительность выполнения равна числовому значению, умноженному на 3600.&lt;br /&gt;
        $period_run_for = $period_number * 60 * 60;&lt;br /&gt;
    }&lt;br /&gt;
    // Удаляем обработанную часть команды, чтобы оставить только саму команду без указания времени выполнения.&lt;br /&gt;
    $command = trim(str_replace($m[0], '', textToNumbers($command)));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Инициализируем переменную $processed как 0. Эта переменная будет использоваться для отслеживания, была ли команда обработана.&lt;br /&gt;
$processed = 0;&lt;br /&gt;
// Инициализируем переменную $reply_confirm как 0. Эта переменная будет использоваться для подтверждения выполнения команды.&lt;br /&gt;
$reply_confirm = 0;&lt;br /&gt;
// Инициализируем переменную $reply_say как пустую строку. Эта переменная будет использоваться для хранения сообщения, которое будет отправлено в ответ на команду.&lt;br /&gt;
$reply_say = '';&lt;br /&gt;
// Инициализируем переменную $phpmorphy_loaded как 0. Эта переменная будет использоваться для отслеживания, загружена ли библиотека phpMorphy.&lt;br /&gt;
$phpmorphy_loaded = 0;&lt;br /&gt;
&lt;br /&gt;
// Проверяем, существует ли файл библиотеки phpMorphy.&lt;br /&gt;
if (file_exists(ROOT . &amp;quot;lib/phpmorphy/common.php&amp;quot;)) {&lt;br /&gt;
    // Подключаем файл библиотеки phpMorphy.&lt;br /&gt;
    require_once(ROOT . &amp;quot;lib/phpmorphy/common.php&amp;quot;);&lt;br /&gt;
    $opts = array(&lt;br /&gt;
        // Указываем тип хранения данных.&lt;br /&gt;
        'storage' =&amp;gt; PHPMORPHY_STORAGE_MEM,&lt;br /&gt;
        // Включаем предсказание по суффиксу.&lt;br /&gt;
        'predict_by_suffix' =&amp;gt; true,&lt;br /&gt;
        // Включаем предсказание по базе данных.&lt;br /&gt;
        'predict_by_db' =&amp;gt; true,&lt;br /&gt;
        // Указываем, что грамматическая информация должна быть представлена в виде текста.&lt;br /&gt;
        'graminfo_as_text' =&amp;gt; true,&lt;br /&gt;
    );&lt;br /&gt;
    // Указываем путь к словарям phpMorphy.&lt;br /&gt;
    $dir = ROOT . 'lib/phpmorphy/dicts';&lt;br /&gt;
    // Получаем код текущего языка сайта.&lt;br /&gt;
    $lang = SETTINGS_SITE_LANGUAGE_CODE;&lt;br /&gt;
    try {&lt;br /&gt;
        // Создаем экземпляр класса phpMorphy.&lt;br /&gt;
        $morphy = new phpMorphy($dir, $lang, $opts);&lt;br /&gt;
        // Сохраняем ссылку на созданный экземпляр в свойстве объекта.&lt;br /&gt;
        $this-&amp;gt;morphy = &amp;amp;$morphy;&lt;br /&gt;
    } catch (phpMorphy_Exception $e) {&lt;br /&gt;
        // Выводим сообщение об ошибке и прерываем выполнение скрипта.&lt;br /&gt;
        die('Error occured while creating phpMorphy instance: ' . PHP_EOL . $e);&lt;br /&gt;
    }&lt;br /&gt;
    // Разбиваем команду на слова.&lt;br /&gt;
    $words = explode(' ', $command);&lt;br /&gt;
    // Инициализируем массив для хранения отфильтрованных слов.&lt;br /&gt;
    $words_filtered = array();&lt;br /&gt;
    // Инициализируем счетчик отфильтрованных слов.&lt;br /&gt;
    $filtered_count = 0;&lt;br /&gt;
    // Инициализируем массив для хранения базовых форм слов.&lt;br /&gt;
    $base_forms = array();&lt;br /&gt;
    // Инициализируем массив для хранения базовых форм отфильтрованных слов.&lt;br /&gt;
    $base_forms_filtered = array();&lt;br /&gt;
    // Получаем общее количество слов в команде.&lt;br /&gt;
    $totals = count($words);&lt;br /&gt;
    for ($is = 0; $is &amp;lt; $totals; $is++) {&lt;br /&gt;
        // Инициализируем переменную для отслеживания, было ли слово фильтровано.&lt;br /&gt;
        $filtered = 0;&lt;br /&gt;
        // Преобразуем слово в верхний регистр.&lt;br /&gt;
        $upper = mb_strtoupper($words[$is], 'UTF-8');&lt;br /&gt;
        // Получаем длину слова.&lt;br /&gt;
        $len = mb_strlen($words[$is], 'UTF-8');&lt;br /&gt;
        // Если длина слова больше или равна 3, считаем его достаточно длинным для анализа.&lt;br /&gt;
        if ($len &amp;gt;= 3) {&lt;br /&gt;
            // Добавляем слово в массив отфильтрованных слов.&lt;br /&gt;
            $words_filtered[] = $words[$is];&lt;br /&gt;
            // Помечаем слово как отфильтрованное.&lt;br /&gt;
            $filtered = 1;&lt;br /&gt;
            // Увеличиваем счетчик отфильтрованных слов.&lt;br /&gt;
            $filtered_count++;&lt;br /&gt;
        }&lt;br /&gt;
        // Если слово является числом, добавляем его в массив базовых форм.&lt;br /&gt;
        if (preg_match('/^(\d+)$/', $words[$is])) {&lt;br /&gt;
            $base_forms[$is] = array($words[$is]);&lt;br /&gt;
            // Если слово не содержит специальных символов, получаем его базовую форму.&lt;br /&gt;
        } elseif (!preg_match('/[\(\)\+\.]/', $words[$is])) {&lt;br /&gt;
            // Преобразуем слово в верхний регистр.&lt;br /&gt;
            $Word = mb_strtoupper($words[$is], 'UTF-8');&lt;br /&gt;
            // Получаем базовую форму слова.&lt;br /&gt;
            $base_forms[$is] = $morphy-&amp;gt;getBaseForm($Word);&lt;br /&gt;
            // Добавляем исходное слово в массив базовых форм.&lt;br /&gt;
            $base_forms[$is][] = $words[$is];&lt;br /&gt;
            // Если слово содержит специальные символы, добавляем его в массив базовых форм без изменений.&lt;br /&gt;
        } else {&lt;br /&gt;
            $base_forms[$is] = array($words[$is]);&lt;br /&gt;
        }&lt;br /&gt;
        // Если слово было отфильтровано, добавляем его базовую форму в массив отфильтрованных базовых форм.&lt;br /&gt;
        if ($filtered) {&lt;br /&gt;
            $base_forms_filtered[$filtered_count - 1] = $base_forms[$is];&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    // Генерируем все возможные комбинации базовых форм слов.&lt;br /&gt;
    $combos = $this-&amp;gt;generate_combinations($base_forms);&lt;br /&gt;
&lt;br /&gt;
    // Если количество отфильтрованных слов меньше общего количества слов, генерируем дополнительные комбинации.&lt;br /&gt;
    if ($filtered_count &amp;lt; $totals) {&lt;br /&gt;
        // Генерируем комбинации для отфильтрованных базовых форм.&lt;br /&gt;
        $add_combos = $this-&amp;gt;generate_combinations($base_forms_filtered);&lt;br /&gt;
        // Добавляем каждую сгенерированную комбинацию в общий массив комбинаций.&lt;br /&gt;
        foreach ($add_combos as $cmb) {&lt;br /&gt;
            $combos[] = $cmb;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Инициализируем массив для хранения строк, полученных из комбинаций.&lt;br /&gt;
    $lines = array();&lt;br /&gt;
    // Получаем общее количество комбинаций.&lt;br /&gt;
    $totals = count($combos);&lt;br /&gt;
    // Преобразуем каждую комбинацию в строку и добавляем ее в массив строк.&lt;br /&gt;
    for ($is = 0; $is &amp;lt; $totals; $is++) {&lt;br /&gt;
        $lines[] = implode(' ', $combos[$is]);&lt;br /&gt;
    }&lt;br /&gt;
    // Помечаем, что библиотека phpMorphy была успешно загружена.&lt;br /&gt;
    $phpmorphy_loaded = 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Получаем список устройств из базы данных.&lt;br /&gt;
$devices = SQLSelect(&amp;quot;SELECT ID, TITLE, ALT_TITLES, TYPE, LINKED_OBJECT, LOCATION_ID FROM devices&amp;quot;);&lt;br /&gt;
// Проходим по каждому устройству в полученном списке.&lt;br /&gt;
foreach ($devices as $device) {&lt;br /&gt;
    // Если у устройства есть альтернативные названия.&lt;br /&gt;
    if (trim($device['ALT_TITLES']) != '') {&lt;br /&gt;
        // Разбиваем альтернативные названия по запятой.&lt;br /&gt;
        $nicknames = explode(',', trim($device['ALT_TITLES']));&lt;br /&gt;
        // Проходим по каждому альтернативному названию.&lt;br /&gt;
        foreach ($nicknames as $nickname) {&lt;br /&gt;
            // Копируем текущее устройство.&lt;br /&gt;
            $add_rec = $device;&lt;br /&gt;
            // Заменяем название устройства на альтернативное.&lt;br /&gt;
            $add_rec['TITLE'] = $nickname;&lt;br /&gt;
            // Добавляем измененное устройство обратно в список устройств.&lt;br /&gt;
            $devices[] = $add_rec; &lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
// Получаем список групп устройств из базы данных.&lt;br /&gt;
$groups = SQLSelect(&amp;quot;SELECT * FROM devices_groups&amp;quot;);&lt;br /&gt;
// Получаем общее количество групп.&lt;br /&gt;
$total = count($groups);&lt;br /&gt;
// Проходим по каждой группе в полученном списке.&lt;br /&gt;
for ($i = 0; $i &amp;lt; $total; $i++) {&lt;br /&gt;
    // Копируем текущую группу.&lt;br /&gt;
    $add_rec = $groups[$i];&lt;br /&gt;
    // Устанавливаем тип группы как 'group'.&lt;br /&gt;
    $add_rec['TYPE'] = 'group';&lt;br /&gt;
    // Добавляем группу обратно в список устройств.&lt;br /&gt;
    $devices[] = $add_rec;&lt;br /&gt;
}&lt;br /&gt;
// Получаем список комнат с устройствами из базы данных.&lt;br /&gt;
$rooms = SQLSelect(&amp;quot;SELECT locations.ID, locations.TITLE, COUNT(*) AS TOTAL FROM locations, devices WHERE locations.ID=devices.LOCATION_ID GROUP BY locations.ID&amp;quot;); &lt;br /&gt;
// Проходим по каждой комнате в полученном списке.&lt;br /&gt;
foreach ($rooms as $room) {&lt;br /&gt;
    //lights&lt;br /&gt;
    //if ($room['TITLE']=='Кабинет') {&lt;br /&gt;
    // Инициализируем массив для хранения типов устройств в комнате.&lt;br /&gt;
    $device_types = array();&lt;br /&gt;
    // Получаем список устройств типа 'relay' в текущей комнате.&lt;br /&gt;
    $room_devices = SQLSelect(&amp;quot;SELECT * FROM devices WHERE LOCATION_ID=&amp;quot; . $room['ID'] . &amp;quot; AND TYPE='relay'&amp;quot;);&lt;br /&gt;
    // Проходим по каждому устройству в полученном списке.&lt;br /&gt;
    foreach ($room_devices as $device) {&lt;br /&gt;
        // Получаем тип нагрузки устройства.&lt;br /&gt;
        $loadType = gg($device['LINKED_OBJECT'] . '.loadType');&lt;br /&gt;
        // Добавляем устройство в массив типов устройств.&lt;br /&gt;
        $device_types[$loadType][] = $device;&lt;br /&gt;
    }&lt;br /&gt;
    // Если в комнате есть устройства типа 'light'.&lt;br /&gt;
    if (isset($device_types['light'])) {&lt;br /&gt;
        // Инициализируем массив для новой группы устройств.&lt;br /&gt;
        $add_rec = array();&lt;br /&gt;
        // Устанавливаем тип группы как 'group'.&lt;br /&gt;
        $add_rec['TYPE'] = 'group';&lt;br /&gt;
        // Устанавливаем название группы.&lt;br /&gt;
        $add_rec['TITLE'] = LANG_DEVICES_LOADTYPE_LIGHT . ' ' . $room['TITLE'];&lt;br /&gt;
        // Добавляем устройства типа 'light' в группу.&lt;br /&gt;
        $add_rec['DEVICES'] = $device_types['light'];&lt;br /&gt;
        // Устанавливаем типы применения группы.&lt;br /&gt;
        $add_rec['APPLY_TYPES'] = 'relay';&lt;br /&gt;
        // Добавляем группу обратно в список устройств.&lt;br /&gt;
        $devices[] = $add_rec;&lt;br /&gt;
&lt;br /&gt;
        // Инициализируем массив для новой группы устройств.&lt;br /&gt;
        $add_rec = array();&lt;br /&gt;
        // Устанавливаем тип группы как 'group'.&lt;br /&gt;
        $add_rec['TYPE'] = 'group';&lt;br /&gt;
        // Устанавливаем альтернативное название группы.&lt;br /&gt;
        $add_rec['TITLE'] = LANG_DEVICES_LOADTYPE_LIGHT_ALT . ' ' . $room['TITLE'];&lt;br /&gt;
        // Добавляем устройства типа 'light' в группу.&lt;br /&gt;
        $add_rec['DEVICES'] = $device_types['light'];&lt;br /&gt;
        // Устанавливаем типы применения группы.&lt;br /&gt;
        $add_rec['APPLY_TYPES'] = 'relay';&lt;br /&gt;
        // Добавляем группу обратно в список устройств.&lt;br /&gt;
        $devices[] = $add_rec;&lt;br /&gt;
    }&lt;br /&gt;
    //}&lt;br /&gt;
}&lt;br /&gt;
// Если библиотека phpMorphy была успешно загружена.&lt;br /&gt;
if ($phpmorphy_loaded) { &lt;br /&gt;
    // Получаем общее количество устройств.&lt;br /&gt;
    $total = count($devices);&lt;br /&gt;
    // Инициализируем массив для хранения дополнительных устройств.&lt;br /&gt;
    $add_devices = array();&lt;br /&gt;
    // Проходим по каждому устройству в полученном списке.&lt;br /&gt;
    for ($i = 0; $i &amp;lt; $total; $i++) {&lt;br /&gt;
        // Получаем название устройства.&lt;br /&gt;
        $device_title = $devices[$i]['TITLE'];&lt;br /&gt;
        // Разбиваем название устройства на слова и преобразуем их в верхний регистр.&lt;br /&gt;
        $words = explode(' ', mb_strtoupper($device_title, 'UTF-8'));&lt;br /&gt;
        // Инициализируем массив для хранения базовых форм слов.&lt;br /&gt;
        $base_forms = array();&lt;br /&gt;
        // Получаем общее количество слов.&lt;br /&gt;
        $totals = count($words);&lt;br /&gt;
        // Проходим по каждому слову в полученном списке.&lt;br /&gt;
        for ($is = 0; $is &amp;lt; $totals; $is++) {&lt;br /&gt;
            // Если слово является числом, добавляем его в массив базовых форм.&lt;br /&gt;
            if (preg_match('/^(\d+)$/', $words[$is])) {&lt;br /&gt;
                &lt;br /&gt;
                $base_forms[$is] = array($words[$is]);&lt;br /&gt;
            // Если слово не содержит специальных символов, получаем его базовую форму.&lt;br /&gt;
            } elseif (!preg_match('/[\(\)\+\.]/', $words[$is])) {&lt;br /&gt;
                // Преобразуем слово в верхний регистр.&lt;br /&gt;
                $Word = mb_strtoupper($words[$is], 'UTF-8');&lt;br /&gt;
                // Получаем базовую форму слова.&lt;br /&gt;
                $base_form = $morphy-&amp;gt;getBaseForm($Word);&lt;br /&gt;
                // Если базовая форма представлена в виде массива.&lt;br /&gt;
                if (is_array($base_form)) {&lt;br /&gt;
                    $base_forms[$is] = $base_form;&lt;br /&gt;
                // Если базовая форма не представлена в виде массива.&lt;br /&gt;
                } else {&lt;br /&gt;
                    $base_forms[$is] = array();&lt;br /&gt;
                }&lt;br /&gt;
                // Если исходное слово не содержится в массиве базовых форм.&lt;br /&gt;
                if (!in_array($words[$is], $base_forms[$is])) {&lt;br /&gt;
                    // Добавляем исходное слово в массив базовых форм.&lt;br /&gt;
                    $base_forms[$is][] = $words[$is];&lt;br /&gt;
                }&lt;br /&gt;
            // Если слово содержит специальные символы, добавляем его в массив базовых форм без изменений.&lt;br /&gt;
            } else { &lt;br /&gt;
                $base_forms[$is] = array($words[$is]);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        // Генерируем все возможные комбинации базовых форм слов.&lt;br /&gt;
        $combos = $this-&amp;gt;generate_combinations($base_forms);&lt;br /&gt;
        // Инициализируем массив для хранения фраз, полученных из комбинаций.&lt;br /&gt;
        $phrases = array();&lt;br /&gt;
        // Проходим по каждой комбинации в полученном списке.&lt;br /&gt;
        foreach ($combos as $combo) {&lt;br /&gt;
            // Вычисляем все возможные перестановки для текущей комбинации.&lt;br /&gt;
            $mutations = $this-&amp;gt;computePermutations($combo);&lt;br /&gt;
            // Проходим по каждой перестановке в полученном списке.&lt;br /&gt;
            foreach ($mutations as $m) {&lt;br /&gt;
                // Преобразуем каждую перестановку в строку и добавляем ее в массив фраз.&lt;br /&gt;
                $phrases[] = implode(' ', $m);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        // Инициализируем массив для хранения новых названий устройств.&lt;br /&gt;
        $device_titles = array();&lt;br /&gt;
        // Получаем общее количество фраз.&lt;br /&gt;
        $totals = count($phrases);&lt;br /&gt;
        // Проходим по каждой фразе в полученном списке.&lt;br /&gt;
        for ($is = 0; $is &amp;lt; $totals; $is++) { &lt;br /&gt;
            // Получаем новое название устройства.&lt;br /&gt;
            $new_title = $phrases[$is];&lt;br /&gt;
            // Добавляем новое название устройства в массив новых названий.&lt;br /&gt;
            $device_titles[] = $new_title;&lt;br /&gt;
            // Копируем текущее устройство.&lt;br /&gt;
            $new_device = $devices[$i];&lt;br /&gt;
            // Заменяем название устройства на новое.&lt;br /&gt;
            $new_device['TITLE'] = $new_title;&lt;br /&gt;
            // Сохраняем оригинальное название устройства.&lt;br /&gt;
            $new_device['ORIGINAL_TITLE'] = $device_title;&lt;br /&gt;
            // Добавляем измененное устройство в массив дополнительных устройств.&lt;br /&gt;
            $add_devices[] = $new_device;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    // Проходим по каждому устройству в массиве дополнительных устройств.&lt;br /&gt;
    foreach ($add_devices as $device) {&lt;br /&gt;
        // Добавляем устройство обратно в список устройств.&lt;br /&gt;
        $devices[] = $device;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Выводим содержимое переменной $lines для отладки.&lt;br /&gt;
//dprint($lines,false); &lt;br /&gt;
// Выводим содержимое переменной $devices для отладки.&lt;br /&gt;
//dprint($devices); &lt;br /&gt;
// Инициализируем переменную $compare_title командой.&lt;br /&gt;
$compare_title = $command; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Проверяем, содержит ли команда фразу, указывающую на необходимость включения устройства.&lt;br /&gt;
if (preg_match('/' . LANG_DEVICES_PATTERN_TURNON . '/uis', $compare_title, $m)) {&lt;br /&gt;
    // Если да, удаляем эту фразу из команды.&lt;br /&gt;
    $compare_title = trim(str_replace($m[0], ' ', $compare_title));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Проверяем, содержит ли команда фразу, указывающую на необходимость выключения устройства.&lt;br /&gt;
if (preg_match('/' . LANG_DEVICES_PATTERN_TURNOFF . '/uis', $compare_title, $m)) {&lt;br /&gt;
    // Если да, удаляем эту фразу из команды.&lt;br /&gt;
    $compare_title = trim(str_replace($m[0], ' ', $compare_title));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Удаляем начальные слова &amp;quot;ть&amp;quot; и &amp;quot;те&amp;quot; из команды, если они присутствуют.&lt;br /&gt;
$compare_title = trim(preg_replace('/^ть /', '', $compare_title));&lt;br /&gt;
$compare_title = trim(preg_replace('/^те /', '', $compare_title));&lt;br /&gt;
&lt;br /&gt;
// Если после всех преобразований команда стала пустой, прекращаем выполнение скрипта.&lt;br /&gt;
if ($compare_title == '') {&lt;br /&gt;
    return;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Получаем общее количество устройств.&lt;br /&gt;
$total = count($devices);&lt;br /&gt;
// Проходим по каждому устройству в полученном списке.&lt;br /&gt;
for ($i = 0; $i &amp;lt; $total; $i++) {&lt;br /&gt;
    // Инициализируем переменную для отслеживания, было ли найдено соответствие устройства.&lt;br /&gt;
    $device_matched = 0;&lt;br /&gt;
&lt;br /&gt;
    // Если указано местоположение терминала.&lt;br /&gt;
    if ($location_id) {&lt;br /&gt;
        // Ищем строгое соответствие по названию и местоположению.&lt;br /&gt;
        foreach ($devices as $key =&amp;gt; $value) {&lt;br /&gt;
            // Если ID местоположения устройства совпадает с ID местоположения терминала и название устройства совпадает с командой.&lt;br /&gt;
            if (in_array($location_id, $value) &amp;amp;&amp;amp; strtolower($devices[$key]['TITLE']) == strtolower($compare_title)) {&lt;br /&gt;
&lt;br /&gt;
                // Обновляем индекс текущего устройства.&lt;br /&gt;
                $i = $key; &lt;br /&gt;
                // Помечаем, что устройство найдено.&lt;br /&gt;
                $device_matched = 1;&lt;br /&gt;
                // Прерываем цикл.&lt;br /&gt;
                break;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        // Если устройство не найдено.&lt;br /&gt;
        if (!$device_matched) {&lt;br /&gt;
            // Ищем строгое соответствие по названию.&lt;br /&gt;
            foreach ($devices as $key =&amp;gt; $value) {&lt;br /&gt;
                // Если название устройства совпадает с командой.&lt;br /&gt;
                if (in_array(strtolower($compare_title), strtolower($value))) {&lt;br /&gt;
                    // Обновляем индекс текущего устройства.&lt;br /&gt;
                    $i = $key;&lt;br /&gt;
                    // Помечаем, что устройство найдено.&lt;br /&gt;
                    $device_matched = 1;&lt;br /&gt;
                    // Прерываем цикл.&lt;br /&gt;
                    break;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Ищем по старому принципу.&lt;br /&gt;
    if (preg_match('/' . preg_quote($devices[$i]['TITLE']) . '/uis', $compare_title)) {&lt;br /&gt;
        // Помечаем, что устройство найдено.&lt;br /&gt;
        $device_matched = 1;&lt;br /&gt;
    } elseif (preg_match('/' . preg_quote($compare_title) . '/uis', $devices[$i]['TITLE'])) {&lt;br /&gt;
        // Помечаем, что устройство найдено.&lt;br /&gt;
        $device_matched = 1;&lt;br /&gt;
&lt;br /&gt;
    // Если библиотека phpMorphy была успешно загружена.&lt;br /&gt;
    } elseif ($phpmorphy_loaded) {&lt;br /&gt;
        if (preg_match('/' . preg_quote($devices[$i]['TITLE']) . '/isu', implode('@@@@', $lines), $matches)) {&lt;br /&gt;
            // Помечаем, что устройство найдено.&lt;br /&gt;
            $device_matched = 1;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /*&lt;br /&gt;
    if (preg_match('/свет над столом/uis',$devices[$i]['TITLE'])) {&lt;br /&gt;
        dprint($devices[$i]['TITLE'].' - '.$compare_title.': '.$device_matched);&lt;br /&gt;
    }&lt;br /&gt;
    */&lt;br /&gt;
&lt;br /&gt;
    // Если устройство было найдено.&lt;br /&gt;
    if ($device_matched) {&lt;br /&gt;
&lt;br /&gt;
        // Найдено устройство.&lt;br /&gt;
        // Получаем ID устройства.&lt;br /&gt;
        $device_id = $devices[$i]['ID'];&lt;br /&gt;
        // Получаем тип устройства.&lt;br /&gt;
        $device_type = $devices[$i]['TYPE'];&lt;br /&gt;
        // Если у устройства есть оригинальное название.&lt;br /&gt;
        if ($devices[$i]['ORIGINAL_TITLE'] != '') {&lt;br /&gt;
            // Используем оригинальное название.&lt;br /&gt;
            $device_title = $devices[$i]['ORIGINAL_TITLE'];&lt;br /&gt;
        // Если оригинального названия нет.&lt;br /&gt;
        } else {&lt;br /&gt;
            // Используем текущее название.&lt;br /&gt;
            $device_title = $devices[$i]['TITLE'];&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // Записываем сообщение о том, что устройство было найдено.&lt;br /&gt;
        DebMes(&amp;quot;Device found for $command ($device_title)&amp;quot;, 'simple_devices');&lt;br /&gt;
&lt;br /&gt;
        // Получаем связанный объект устройства.&lt;br /&gt;
        $linked_object = $devices[$i]['LINKED_OBJECT'];&lt;br /&gt;
        if ($device_type == 'sensor_percentage' || $device_type == 'sensor_humidity') {&lt;br /&gt;
            // Формируем сообщение для датчиков с процентами и влажностью.&lt;br /&gt;
            $reply_say = $device_title . ' ' . gg($linked_object . '.value') . '%';&lt;br /&gt;
            // Помечаем, что команда была обработана.&lt;br /&gt;
            $processed = 1;&lt;br /&gt;
        } elseif ($device_type == 'sensor_light') {&lt;br /&gt;
            // Формируем сообщение для датчиков света.&lt;br /&gt;
            $reply_say = $device_title . ' ' . gg($linked_object . '.value');&lt;br /&gt;
            // Помечаем, что команда была обработана.&lt;br /&gt;
            $processed = 1;&lt;br /&gt;
        } elseif ($device_type == 'sensor_temp') {&lt;br /&gt;
            // Формируем сообщение для датчиков температуры.&lt;br /&gt;
            $reply_say = $device_title . ' ' . gg($linked_object . '.value') . ' ' . LANG_DEVICES_DEGREES;&lt;br /&gt;
            // Помечаем, что команда была обработана.&lt;br /&gt;
            $processed = 1; &lt;br /&gt;
        } elseif (preg_match('/sensor/', $device_type)) {&lt;br /&gt;
            // Формируем сообщение для других датчиков.&lt;br /&gt;
            $reply_say = $device_title . ' ' . gg($linked_object . '.value') . ''; &lt;br /&gt;
            // Помечаем, что команда была обработана.&lt;br /&gt;
            $processed = 1;&lt;br /&gt;
        } elseif ($device_type == 'counter') {&lt;br /&gt;
            // Формируем сообщение для счетчиков.&lt;br /&gt;
            $reply_say = $device_title . ' ' . gg($linked_object . '.value') . ' ' . gg($linked_object . '.unit');&lt;br /&gt;
            // Помечаем, что команда была обработана.&lt;br /&gt;
            $processed = 1; &lt;br /&gt;
        } elseif ($device_type == 'openclose') {&lt;br /&gt;
            // Формируем сообщение для устройств открытия/закрытия.&lt;br /&gt;
            $reply_say = $device_title . ' ' . (gg($linked_object . '.status') ? LANG_DEVICES_STATUS_CLOSED : LANG_DEVICES_STATUS_OPEN);&lt;br /&gt;
            // Помечаем, что команда была обработана.&lt;br /&gt;
            $processed = 1; &lt;br /&gt;
        } elseif ($device_type == 'smoke' || $device_type == 'leak') {&lt;br /&gt;
            // Формируем сообщение для датчиков дыма и утечек.&lt;br /&gt;
            $reply_say = $device_title . ' ' . (gg($linked_object . '.status') ? LANG_DEVICES_STATUS_ALARM : LANG_DEVICES_NORMAL_VALUE);&lt;br /&gt;
            // Помечаем, что команда была обработана.&lt;br /&gt;
            $processed = 1;&lt;br /&gt;
        } elseif ($device_type == 'button') {&lt;br /&gt;
            // Добавляем код для имитации нажатия кнопки.&lt;br /&gt;
            $run_code .= &amp;quot;callMethod('$linked_object.pressed');&amp;quot;;&lt;br /&gt;
            // Помечаем, что команда была обработана.&lt;br /&gt;
            $processed = 1;&lt;br /&gt;
            // Помечаем, что необходимо подтверждение выполнения команды.&lt;br /&gt;
            $reply_confirm = 1;&lt;br /&gt;
        } elseif (&lt;br /&gt;
            $device_type == 'controller' ||&lt;br /&gt;
            $device_type == 'relay' ||&lt;br /&gt;
            $device_type == 'dimmer' ||&lt;br /&gt;
            $device_type == 'rgb'&lt;br /&gt;
        ) {&lt;br /&gt;
            if (preg_match('/' . LANG_DEVICES_PATTERN_TURNON . '/uis', $command)) {&lt;br /&gt;
                // Формируем сообщение для включения устройства.&lt;br /&gt;
                $reply_say = LANG_TURNING_ON . ' ' . $device_title . $add_phrase;&lt;br /&gt;
                // Добавляем код для включения устройства.&lt;br /&gt;
                $run_code .= &amp;quot;callMethod('$linked_object.turnOn');&amp;quot;;&lt;br /&gt;
                // Добавляем код для выключения устройства в качестве противодействия.&lt;br /&gt;
                $opposite_code .= &amp;quot;callMethod('$linked_object.turnOff');&amp;quot;;&lt;br /&gt;
                // Помечаем, что команда была обработана.&lt;br /&gt;
                $processed = 1;&lt;br /&gt;
                // Помечаем, что необходимо подтверждение выполнения команды.&lt;br /&gt;
                //$reply_confirm = 1;&lt;br /&gt;
            } elseif (preg_match('/' . LANG_DEVICES_PATTERN_TURNOFF . '/uis', $command)) {&lt;br /&gt;
                // Формируем сообщение для выключения устройства.&lt;br /&gt;
                $reply_say = LANG_TURNING_OFF . ' ' . $device_title . $add_phrase;&lt;br /&gt;
                // Добавляем код для выключения устройства.&lt;br /&gt;
                $run_code .= &amp;quot;callMethod('$linked_object.turnOff');&amp;quot;;&lt;br /&gt;
                // Добавляем код для включения устройства в качестве противодействия.&lt;br /&gt;
                $opposite_code .= &amp;quot;callMethod('$linked_object.turnOn');&amp;quot;;&lt;br /&gt;
                // Помечаем, что команда была обработана.&lt;br /&gt;
                $processed = 1;&lt;br /&gt;
                // Помечаем, что необходимо подтверждение выполнения команды.&lt;br /&gt;
                //$reply_confirm = 1;&lt;br /&gt;
            }&lt;br /&gt;
        } elseif ($device_type == 'openable') {&lt;br /&gt;
            if (preg_match('/' . LANG_DEVICES_PATTERN_OPEN . '/uis', $command)) {&lt;br /&gt;
                // Формируем сообщение для открытия устройства.&lt;br /&gt;
                $reply_say = LANG_TURNING_OPEN . ' ' . $device_title . $add_phrase;&lt;br /&gt;
                // Добавляем код для открытия устройства.&lt;br /&gt;
                $run_code .= &amp;quot;callMethod('$linked_object.Open');&amp;quot;;&lt;br /&gt;
                // Добавляем код для закрытия устройства в качестве противодействия.&lt;br /&gt;
                $opposite_code .= &amp;quot;callMethod('$linked_object.Close');&amp;quot;;&lt;br /&gt;
                // Помечаем, что команда была обработана.&lt;br /&gt;
                $processed = 1;&lt;br /&gt;
                // Помечаем, что необходимо подтверждение выполнения команды.&lt;br /&gt;
                //$reply_confirm = 1;&lt;br /&gt;
            } elseif (preg_match('/' . LANG_DEVICES_PATTERN_CLOSE . '/uis', $command)) {&lt;br /&gt;
                // Формируем сообщение для закрытия устройства.&lt;br /&gt;
                $reply_say = LANG_TURNING_CLOSE . ' ' . $device_title . $add_phrase;&lt;br /&gt;
                // Добавляем код для закрытия устройства.&lt;br /&gt;
                $run_code .= &amp;quot;callMethod('$linked_object.Close');&amp;quot;;&lt;br /&gt;
                // Добавляем код для открытия устройства в качестве противодействия.&lt;br /&gt;
                $opposite_code .= &amp;quot;callMethod('$linked_object.Open');&amp;quot;;&lt;br /&gt;
                // Помечаем, что команда была обработана.&lt;br /&gt;
                $processed = 1;&lt;br /&gt;
                // Помечаем, что необходимо подтверждение выполнения команды.&lt;br /&gt;
                //$reply_confirm = 1;&lt;br /&gt;
            }&lt;br /&gt;
        } elseif ($device_type == 'group') {&lt;br /&gt;
            // Разбиваем типы применения группы по запятой.&lt;br /&gt;
            $applies_to = explode(',', $devices[$i]['APPLY_TYPES']);&lt;br /&gt;
            // Если устройства группы представлены в виде массива.&lt;br /&gt;
            if (is_array($devices[$i]['DEVICES'])) {&lt;br /&gt;
                // Инициализируем массив для хранения связанных объектов устройств в группе.&lt;br /&gt;
                $devices_in_group = array();&lt;br /&gt;
                // Проходим по каждому устройству в группе.&lt;br /&gt;
                foreach ($devices[$i]['DEVICES'] as $group_device) {&lt;br /&gt;
                    // Добавляем связанный объект устройства в массив.&lt;br /&gt;
                    $devices_in_group[] = $group_device['LINKED_OBJECT'];&lt;br /&gt;
                }&lt;br /&gt;
            // Если устройства группы не представлены в виде массива.&lt;br /&gt;
            } else {&lt;br /&gt;
                // Получаем связанные объекты устройств в группе по свойству.&lt;br /&gt;
                $devices_in_group = getObjectsByProperty('group' . $devices[$i]['SYS_NAME'], 1);&lt;br /&gt;
            }&lt;br /&gt;
            // Выводим содержимое переменной $devices_in_group для отладки.&lt;br /&gt;
            //dprint($devices_in_group); &lt;br /&gt;
&lt;br /&gt;
            // Если устройства группы не представлены в виде массива, пропускаем текущую итерацию цикла.&lt;br /&gt;
            if (!is_array($devices_in_group)) continue;&lt;br /&gt;
&lt;br /&gt;
            if (&lt;br /&gt;
                in_array('relay', $applies_to) ||&lt;br /&gt;
                in_array('dimmer', $applies_to) ||&lt;br /&gt;
                in_array('rgb', $applies_to) ||&lt;br /&gt;
                0&lt;br /&gt;
            ) {&lt;br /&gt;
                if (preg_match('/' . LANG_DEVICES_PATTERN_TURNON . '/uis', $command)) {&lt;br /&gt;
                    // Формируем сообщение для включения устройства.&lt;br /&gt;
                    $reply_say = LANG_TURNING_ON . ' ' . $device_title . $add_phrase;&lt;br /&gt;
                    foreach ($devices_in_group as $linked_object) {&lt;br /&gt;
                        // Добавляем код для включения каждого устройства в группе.&lt;br /&gt;
                        $run_code .= &amp;quot;callMethod('$linked_object.turnOn');&amp;quot;;&lt;br /&gt;
                        // Добавляем код для выключения каждого устройства в группе в качестве противодействия.&lt;br /&gt;
                        $opposite_code .= &amp;quot;callMethod('$linked_object.turnOff');&amp;quot;;&lt;br /&gt;
                    }&lt;br /&gt;
                    // Помечаем, что команда была обработана.&lt;br /&gt;
                    $processed = 1;&lt;br /&gt;
                    // Помечаем, что необходимо подтверждение выполнения команды.&lt;br /&gt;
                    //$reply_confirm = 1;&lt;br /&gt;
                } elseif (preg_match('/' . LANG_DEVICES_PATTERN_TURNOFF . '/uis', $command)) {&lt;br /&gt;
                    // Формируем сообщение для выключения устройства.&lt;br /&gt;
                    $reply_say = LANG_TURNING_OFF . ' ' . $device_title . $add_phrase;&lt;br /&gt;
                    foreach ($devices_in_group as $linked_object) {&lt;br /&gt;
                        // Добавляем код для выключения каждого устройства в группе.&lt;br /&gt;
                        $run_code .= &amp;quot;callMethod('$linked_object.turnOff');&amp;quot;;&lt;br /&gt;
                        // Добавляем код для включения каждого устройства в группе в качестве противодействия.&lt;br /&gt;
                        $opposite_code .= &amp;quot;callMethod('$linked_object.turnOn');&amp;quot;;&lt;br /&gt;
                    }&lt;br /&gt;
                    // Помечаем, что команда была обработана.&lt;br /&gt;
                    $processed = 1;&lt;br /&gt;
                    // Помечаем, что необходимо подтверждение выполнения команды.&lt;br /&gt;
                    //$reply_confirm = 1;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            // Определяем путь к директории дополнений.&lt;br /&gt;
            $addons_dir = dirname(__FILE__) . '/addons';&lt;br /&gt;
            // Если директория дополнений существует.&lt;br /&gt;
            if (is_dir($addons_dir)) {&lt;br /&gt;
                // Получаем список файлов в директории дополнений.&lt;br /&gt;
                $addon_files = scandir($addons_dir);&lt;br /&gt;
                // Проходим по каждому файлу в полученном списке.&lt;br /&gt;
                foreach ($addon_files as $file) {&lt;br /&gt;
                    // Если имя файла соответствует шаблону.&lt;br /&gt;
                    if (preg_match('/\_commands\.php$/', $file)) {&lt;br /&gt;
                        // Подключаем файл дополнения.&lt;br /&gt;
                        require($addons_dir . '/' . $file);&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            // Если команда была обработана, прерываем цикл.&lt;br /&gt;
            if ($processed) break; &lt;br /&gt;
&lt;br /&gt;
            if ($run_code != '' &amp;amp;&amp;amp; $period_delay &amp;gt; 0) {&lt;br /&gt;
                // Если есть код для выполнения и задержка больше 0, устанавливаем таймер для выполнения кода после задержки.&lt;br /&gt;
                setTimeout('delay' . md5($run_code), $run_code, $period_delay); &lt;br /&gt;
            } elseif ($run_code != '' &amp;amp;&amp;amp; $period_run_for &amp;gt; 0 &amp;amp;&amp;amp; $opposite_code != '') {&lt;br /&gt;
                // Если есть код для выполнения, продолжительность выполнения больше 0 и есть код для противодействия, выполняем код.&lt;br /&gt;
                eval($run_code); &lt;br /&gt;
                // Устанавливаем таймер для выполнения кода противодействия после указанного времени.&lt;br /&gt;
                setTimeout('opposite' . md5($run_code), $opposite_code, $period_run_for); &lt;br /&gt;
            } elseif ($run_code != '') {&lt;br /&gt;
                // Если есть код для выполнения, выполняем его.&lt;br /&gt;
                eval($run_code);&lt;br /&gt;
                /*&lt;br /&gt;
                * TODO использовать eval считается небезопасным, поскольку он выполняет произвольный PHP-код, представленный в виде строки. &lt;br /&gt;
                * Это может создать уязвимости в безопасности и снизить производительность, поскольку он компилирует и выполняет код каждый раз,&lt;br /&gt;
                * когда он вызывается. Это может привести к увеличению нагрузки на сервер и снижению производительности.&lt;br /&gt;
                */&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            if ($reply_say != '') {&lt;br /&gt;
                // Если есть сообщение для ответа, отправляем его.&lt;br /&gt;
                sayReplySafe($reply_say, 2);&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            if ($reply_confirm) {&lt;br /&gt;
                // Разбиваем строку подтверждения команды по символу '|'.&lt;br /&gt;
                $items = explode('|', LANG_DEVICES_COMMAND_CONFIRMATION);&lt;br /&gt;
                // Удаляем пробелы в начале и конце каждого элемента массива.&lt;br /&gt;
                $items = array_map('trim', $items);&lt;br /&gt;
                // Отправляем случайное сообщение из массива подтверждений.&lt;br /&gt;
                sayReplySafe($items[array_rand($items)], 2);&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            if ($processed) {&lt;br /&gt;
                // Если команда была обработана, помечаем это.&lt;br /&gt;
                $details['PROCESSED'] = 1;&lt;br /&gt;
                // Помечаем, что необходимо прервать выполнение.&lt;br /&gt;
                $details['BREAK'] = 1;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Elmax</name></author>
	</entry>
	<entry>
		<id>https://mdminfo.ru/index.php?title=Modules/devices/nobodyhomemode_deactivate_php&amp;diff=2110</id>
		<title>Modules/devices/nobodyhomemode deactivate php</title>
		<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=Modules/devices/nobodyhomemode_deactivate_php&amp;diff=2110"/>
		<updated>2024-04-08T19:36:58Z</updated>

		<summary type="html">&lt;p&gt;Elmax: + файл nobodyhomemode_deactivate.php&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Modules/devices/nobodyhomemode_deactivate_php | nobodyhomemode_deactivate.php]]&lt;br /&gt;
[[Папки и файлы|ᐂ В корневой раздел]]  [[Modules/devices|ᐃ В директорию расположения файла]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
// Проверяет, отключены ли простые устройства. Если да, прекращает выполнение скрипта.&lt;br /&gt;
if (defined('DISABLE_SIMPLE_DEVICES') &amp;amp;&amp;amp; DISABLE_SIMPLE_DEVICES==1) return;&lt;br /&gt;
&lt;br /&gt;
// Включаем файл Rooms_updateActivityStatus.php из того же каталога.&lt;br /&gt;
require(dirname(__FILE__).'/Rooms_updateActivityStatus.php');&lt;br /&gt;
&lt;br /&gt;
// Проверяем, активен ли режим экономии.&lt;br /&gt;
if (gg('EconomMode.active')) {&lt;br /&gt;
    // Если активен, деактивируем режим экономии.&lt;br /&gt;
    callMethod('EconomMode.deactivate');&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Elmax</name></author>
	</entry>
	<entry>
		<id>https://mdminfo.ru/index.php?title=Modules/devices&amp;diff=2109</id>
		<title>Modules/devices</title>
		<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=Modules/devices&amp;diff=2109"/>
		<updated>2024-04-08T19:29:10Z</updated>

		<summary type="html">&lt;p&gt;Elmax: метод никого нет дома&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Modules/devices|/modules/devices]]&lt;br /&gt;
&lt;br /&gt;
[[Папки и файлы|ᐂ В корневой раздел]]  [[Modules|ᐃ на директорию выше]][https://github.com/sergejey/majordomo/tree/master/modules/devices | Перейти в директорию на github]&lt;br /&gt;
===== Папки директории '''/modules/devices''' =====&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/addons|'''addons''']] - пока папка не имеет описания&lt;br /&gt;
&lt;br /&gt;
===== Файлы директории '''/modules/devices''' =====&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/Rooms_onActivity_php | '''Rooms_onActivity.php''']] - вызывается методом onActivity, класса Rooms. Содерит функции для анализа данных об активности в помещениях и принятия соответствующих действий на основе этой информации.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/Rooms_onIdle_php | '''Rooms_onIdle.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/Rooms_updateActivityStatus_php | '''Rooms_updateActivityStatus.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SButtons_pressed_php | '''SButtons_pressed.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCameras_motionDetected_php | '''SCameras_motionDetected.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCameras_takeSeries_php | '''SCameras_takeSeries.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCameras_takeSnapshot_php | '''SCameras_takeSnapshot.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCameras_updatePreview_php | '''SCameras_updatePreview.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SControllers_switch_php | '''SControllers_switch.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SControllers_turnOff_php | '''SControllers_turnOff.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SControllers_turnOn_php | '''SControllers_turnOn.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCounters_pulseDetected_php | '''SCounters_pulseDetected.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCounters_refreshStats_php | '''SCounters_refreshStats.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCounters_valueUpdated_php | '''SCounters_valueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCounters_valueWorkUpdated_php | '''SCounters_valueWorkUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDevices_batteryLevelUpdated_php | '''SDevices_batteryLevelUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDevices_keepAlive_php | '''SDevices_keepAlive.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDevices_logicAction_php | '''SDevices_logicAction.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDevices_statusUpdated_php | '''SDevices_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_levelUpdated_php | '''SDimmers_levelUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_levelWorkUpdated_php | '''SDimmers_levelWorkUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_setLevel_php | '''SDimmers_setLevel.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_statusUpdated_php | '''SDimmers_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_turnOff_php | '''SDimmers_turnOff.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_turnOn_php | '''SDimmers_turnOn.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SGroups_statusUpdated_php | '''SGroups_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SGroups_switch_php | '''SGroups_switch.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SGroups_turnOff_php | '''SGroups_turnOff.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SGroups_turnOn_php | '''SGroups_turnOn.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLeak_alert_php | '''SLeak_alert.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLeak_blockSensor_php | '''SLeak_blockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLeak_statusUpdated_php | '''SLeak_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLeak_unblockSensor_php | '''SLeak_unblockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMotions_blockSensor_php | '''SMotions_blockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMotions_motionDetected_php | '''SMotions_motionDetected.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMotions_unblockSensor_php | '''SMotions_unblockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenClose_blockSensor_php | '''SOpenClose_blockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenClose_statusUpdated_php | '''SOpenClose_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenClose_unblockSensor_php | '''SOpenClose_unblockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_close_php | '''SOpenable_close.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_levelUpdated_php | '''SOpenable_levelUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_open_php | '''SOpenable_open.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_setLevel_php | '''SOpenable_setLevel.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_statusUpdated_php | '''SOpenable_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_switch_php | '''SOpenable_switch.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SPowerSensors_loadStatusChanged_php | '''SPowerSensors_loadStatusChanged.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SPowerSensors_valueUpdated_php | '''SPowerSensors_valueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SRGB_colorUpdated_php | '''SRGB_colorUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SRGB_setColor_php | '''SRGB_setColor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SRGB_turnOff_php | '''SRGB_turnOff.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SRGB_turnOn_php | '''SRGB_turnOn.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSensors_alert_php | '''SSensors_alert.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSensors_blockSensor_php | '''SSensors_blockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSensors_unblockSensor_php | '''SSensors_unblockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSensors_valueUpdated_php | '''SSensors_valueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSmoke_alert_php | '''SSmoke_alert.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSmoke_blockSensor_php | '''SSmoke_blockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSmoke_statusUpdated_php | '''SSmoke_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSmoke_unblockSensor_php | '''SSmoke_unblockSensor.php''']] -  &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_disable_php | '''SThermostats_disable.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_enable_php | '''SThermostats_enable.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_setTargetTemperature_php | '''SThermostats_setTargetTemperature.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_statusUpdated_php | '''SThermostats_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_switchEnable_php | '''SThermostats_switchEnable.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_tempDown_php | '''SThermostats_tempDown.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_tempUp_php | '''SThermostats_tempUp.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_turnOff_php | '''SThermostats_turnOff.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_turnOn_php | '''SThermostats_turnOn.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_valueUpdated_php | '''SThermostats_valueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_configUpdated_php | '''SAirConditioners_configUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_fanSpeedUpdated_php | '''SAirConditioners_fanSpeedUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_setFanSpeedMode_php | '''SAirConditioners_setFanSpeedMode.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_setTargetTemperature_php | '''SAirConditioners_setTargetTemperature.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_setThermostatMode_php | '''SAirConditioners_setThermostatMode.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_tempDown_php | '''SAirConditioners_tempDown.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_tempUp_php | '''SAirConditioners_tempUp.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_thermostatUpdated_php | '''SAirConditioners_thermostatUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLightSensors_periodMinValueUpdated_php | '''SLightSensors_periodMinValueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLightSensors_valueUpdated_php | '''SLightSensors_valueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMedias_pause_php | '''SMedias_pause.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMedias_setChannel_php | '''SMedias_setChannel.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMedias_setSource_php | '''SMedias_setSource.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMedias_setVolume_php | '''SMedias_setVolume.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/STVs_pause_php | '''STVs_pause.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/STVs_setChannel_php | '''STVs_setChannel.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/STVs_setSource_php | '''STVs_setSource.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/STVs_setVolume_php | '''STVs_setVolume.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SVacuums_pause_php | '''SVacuums_pause.php''']] - &lt;br /&gt;
&lt;br /&gt;
'''app''' -  пока файл не понятен, его назначение так-же&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/darknessmode_activate_php | '''darknessmode_activate.php''']] - для активации устройств, связанных с группой &amp;quot;groupSunset&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/darknessmode_deactivate_php | '''darknessmode_deactivate.php''']] - для деактивации устройств, связанных с группой &amp;quot;groupSunset&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_class_php | '''devices.class.php''']] - содержит набор функций для взаимодействия с устройствами в рамках проекта. Он обеспечивает взаимодействие между устройствами, базой данных, внешними API и другими частями системы, такими как управление группами устройств, связями между ними и действиями, которые могут быть выполнены над устройствами.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_edit_inc_php | '''devices_edit.inc.php''']] - содержит функции и код, связанный с редактированием устройств в проекте. Он включает в себя обработку форм, сохранение данных и другие операции, связанные с редактированием устройств.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_links_inc_php | '''devices_links.inc.php''']] - содержит функции для работы с связями между устройствами. Он включает в себя обработку создания, обновления и удаления связей, а также работу с деталями связей и другие операции, связанные с управлением связями устройств.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_links_actions_inc_php | '''devices_links_actions.inc.php''']] - содержит функции для обработки действий, связанных с устройствами. Он выполняет действия, такие как включение, выключение, установка цвета и передача значений объектов. Также файл подключает дополнительные скрипты для обработки действий из директории [[Modules/devices/addons|'''addons''']]&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_manage_groups_inc_php | '''devices_manage_groups.inc.php''']] - содержит функции для управления группами устройств. Он включает в себя операции по созданию, редактированию и удалению групп устройств, обновление объектов группы, очистку кэша значений, а также перенаправление на соответствующие страницы просмотра.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_manage_schedule_inc_php | '''devices_manage_schedule.inc.php''']] -  этот файл включает в себя операции по созданию, редактированию и удалению расписаний для устройств, а также операции по привязке устройств к определенным временным интервалам и управлению их работой в соответствии с расписанием.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_quick_edit_inc_php | '''devices_quick_edit.inc.php''']] - содержит код для сщздания/редактирования устройств. Он обеспечивает быстрый доступ к основным параметрам устройств, таким как имя, описание, состояние и другие атрибуты, позволяя пользователям внести изменения на странице редактирования.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_schedule_inc_php | '''devices_schedule.inc.php''']] - этот файл предоставляет функциональность для управления расписаниями устройств, включая создание, редактирование и удаление расписаний, а также привязку устройств к определенным временным интервалам и управление их работой в соответствии с расписанием.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_search_inc_php | '''devices_search.inc.php''']] -  содержит функции для поиска устройств в системе. Он предоставляет возможность осуществлять поиск устройств по различным критериям, таким как имя устройства, тип, статус и другие атрибуты. Кроме того, файл может включать функции для фильтрации результатов поиска и отображения найденной информации о устройствах.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_structure_inc_php | '''devices_structure.inc.php''']] - определяет структуру свойств и методов, которыми будут наделены устройства в системе. Он содержит описание основных характеристик устройств, таких как их тип, статус, параметры, возможные действия и другие атрибуты. Кроме того, данный файл определяет методы, которые позволяют взаимодействовать с устройствами, управлять ими и получать информацию о их состоянии.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_structure_links_inc_php | '''devices_structure_links.inc.php''']] - файл определяет структуру связей между устройствами в системе. Он содержит описание основных характеристик связей, таких как тип связи, устройства, которые связаны, параметры связи и другие атрибуты. Кроме того, данный файл определяет методы для управления связями между устройствами, включая создание новых связей, редактирование существующих и удаление ненужных связей.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_widgets_js_php | '''devices_widgets.js.php''']] - файл с примесью js, его я не знаю совсем, поэтому подождем описания знающих, а по ссылке будет страница с кодом без комментариев.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/econommode_activate_php | '''econommode_activate.php''']] - метод активации режима экономии энергии EconomMode.activate. Класс OperationalModes, обьект EconomMode.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/econommode_deactivate_php | '''econommode_deactivate.php''']] - метод деактивации режима экономии энергии EconomMode.activate. Класс OperationalModes, обьект EconomMode.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/homebridgeSendUpdate_inc_php | '''homebridgeSendUpdate.inc.php''']] - Этот файл вероятно отвечает за передачу информации о состоянии устройств, сценариев или других параметров из вашей системы в Homebridge для обновления данных и синхронизации информации между системами.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/homebridgeSync_inc_php | '''homebridgeSync.inc.php''']] - содержит функции для синхронизации устройств и их состояний с платформой Homebridge, которая обеспечивает интеграцию умного дома с устройствами Apple HomeKit. Код в этом файле вероятно отвечает за обновление информации об устройствах и их состояниях в Homebridge, чтобы обеспечить соответствие между системой умного дома и платформой HomeKit.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/nightmode_activate_php | '''nightmode_activate.php''']] - Метод активации ночного режима. Принадлежит классу OperationalModes, объект NightMode.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/nobodyhomemode_activate_php | '''nobodyhomemode_activate.php''']] - Метод активации режима &amp;quot;Никого нет дома&amp;quot; Принадлежит классу OperationalModes, объект NobodyHomeMode.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/nobodyhomemode_deactivate_php | '''nobodyhomemode_deactivate.php''']] - Метод активации режима &amp;quot;Никого нет дома&amp;quot; Принадлежит классу OperationalModes, объект NobodyHomeMode.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/processCommand_inc_php | '''processCommand.inc.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/processHomebridgeMQTT_inc_php | '''processHomebridgeMQTT.inc.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/system_checkstate_php | '''system_checkstate.php''']] -&lt;/div&gt;</summary>
		<author><name>Elmax</name></author>
	</entry>
	<entry>
		<id>https://mdminfo.ru/index.php?title=Modules/devices/nobodyhomemode_activate_php&amp;diff=2108</id>
		<title>Modules/devices/nobodyhomemode activate php</title>
		<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=Modules/devices/nobodyhomemode_activate_php&amp;diff=2108"/>
		<updated>2024-04-08T19:26:15Z</updated>

		<summary type="html">&lt;p&gt;Elmax: + файл nobodyhomemode_activate.php&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Modules/devices/nobodyhomemode_activate_php | nobodyhomemode_activate.php]]&lt;br /&gt;
[[Папки и файлы|ᐂ В корневой раздел]]  [[Modules/devices|ᐃ В директорию расположения файла]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
// Проверяет, отключены ли простые устройства. Если да, прекращает выполнение скрипта.&lt;br /&gt;
if (defined('DISABLE_SIMPLE_DEVICES') &amp;amp;&amp;amp; DISABLE_SIMPLE_DEVICES==1) return;&lt;br /&gt;
&lt;br /&gt;
// Очищаем таймер &amp;quot;nobodyHome&amp;quot;.&lt;br /&gt;
ClearTimeOut(&amp;quot;nobodyHome&amp;quot;);&lt;br /&gt;
// Подключаем файл Rooms_updateActivityStatus.php из этого же каталога.&lt;br /&gt;
require(dirname(__FILE__).'/Rooms_updateActivityStatus.php');&lt;br /&gt;
&lt;br /&gt;
// Проверяем, активен ли режим экономии.&lt;br /&gt;
if (!gg('EconomMode.active')) {&lt;br /&gt;
    // Если нет, активируем режим экономии.&lt;br /&gt;
    callMethod('EconomMode.activate');&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Elmax</name></author>
	</entry>
	<entry>
		<id>https://mdminfo.ru/index.php?title=Modules/devices/nightmode_activate_php&amp;diff=2107</id>
		<title>Modules/devices/nightmode activate php</title>
		<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=Modules/devices/nightmode_activate_php&amp;diff=2107"/>
		<updated>2024-04-08T19:18:02Z</updated>

		<summary type="html">&lt;p&gt;Elmax: + файл nightmode_activate.php&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Modules/devices/nightmode_activate_php | nightmode_activate.php]]&lt;br /&gt;
[[Папки и файлы|ᐂ В корневой раздел]]  [[Modules/devices|ᐃ В директорию расположения файла]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// Проверяет, отключены ли простые устройства. Если да, прекращает выполнение скрипта.&lt;br /&gt;
if (defined('DISABLE_SIMPLE_DEVICES') &amp;amp;&amp;amp; DISABLE_SIMPLE_DEVICES == 1) return;&lt;br /&gt;
&lt;br /&gt;
// Получаем список объектов, у которых свойство groupNight равно 1.&lt;br /&gt;
$objects = getObjectsByProperty('groupNight', '=', 1);&lt;br /&gt;
// Считаем количество объектов в списке.&lt;br /&gt;
$total = count($objects);&lt;br /&gt;
&lt;br /&gt;
// Начинаем цикл по всем объектам.&lt;br /&gt;
for ($i = 0; $i &amp;lt; $total; $i++) {&lt;br /&gt;
    // Получаем текущее состояние объекта.&lt;br /&gt;
    $currentStatus = gg($objects[$i] . '.status');&lt;br /&gt;
    // Проверяем, активно ли текущее состояние объекта.&lt;br /&gt;
    if ($currentStatus) {&lt;br /&gt;
&lt;br /&gt;
        // Получаем объект по его идентификатору.&lt;br /&gt;
        $obj = getObject($objects[$i]);&lt;br /&gt;
        // Проверяем, является ли объект объектом, имеет ли он идентификатор устройства и не имеет ли доступа к свойству groupNight.&lt;br /&gt;
        if (is_object($obj) &amp;amp;&amp;amp; $obj-&amp;gt;device_id &amp;amp;&amp;amp; !checkAccess('prop_groupNight', $obj-&amp;gt;device_id)) continue;&lt;br /&gt;
        &lt;br /&gt;
        // Вызываем метод turnOff для объекта, передавая параметр source со значением NightMode.&lt;br /&gt;
        callMethodSafe($objects[$i] . '.turnOff', array('source' =&amp;gt; 'NightMode'));&lt;br /&gt;
        // Приостанавливаем выполнение скрипта на 50 миллисекунд.&lt;br /&gt;
        usleep(50000);&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Elmax</name></author>
	</entry>
	<entry>
		<id>https://mdminfo.ru/index.php?title=Modules/devices&amp;diff=2106</id>
		<title>Modules/devices</title>
		<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=Modules/devices&amp;diff=2106"/>
		<updated>2024-04-08T19:14:38Z</updated>

		<summary type="html">&lt;p&gt;Elmax: описание метода nightmode_activate.php&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Modules/devices|/modules/devices]]&lt;br /&gt;
&lt;br /&gt;
[[Папки и файлы|ᐂ В корневой раздел]]  [[Modules|ᐃ на директорию выше]][https://github.com/sergejey/majordomo/tree/master/modules/devices | Перейти в директорию на github]&lt;br /&gt;
===== Папки директории '''/modules/devices''' =====&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/addons|'''addons''']] - пока папка не имеет описания&lt;br /&gt;
&lt;br /&gt;
===== Файлы директории '''/modules/devices''' =====&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/Rooms_onActivity_php | '''Rooms_onActivity.php''']] - вызывается методом onActivity, класса Rooms. Содерит функции для анализа данных об активности в помещениях и принятия соответствующих действий на основе этой информации.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/Rooms_onIdle_php | '''Rooms_onIdle.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/Rooms_updateActivityStatus_php | '''Rooms_updateActivityStatus.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SButtons_pressed_php | '''SButtons_pressed.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCameras_motionDetected_php | '''SCameras_motionDetected.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCameras_takeSeries_php | '''SCameras_takeSeries.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCameras_takeSnapshot_php | '''SCameras_takeSnapshot.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCameras_updatePreview_php | '''SCameras_updatePreview.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SControllers_switch_php | '''SControllers_switch.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SControllers_turnOff_php | '''SControllers_turnOff.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SControllers_turnOn_php | '''SControllers_turnOn.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCounters_pulseDetected_php | '''SCounters_pulseDetected.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCounters_refreshStats_php | '''SCounters_refreshStats.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCounters_valueUpdated_php | '''SCounters_valueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCounters_valueWorkUpdated_php | '''SCounters_valueWorkUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDevices_batteryLevelUpdated_php | '''SDevices_batteryLevelUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDevices_keepAlive_php | '''SDevices_keepAlive.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDevices_logicAction_php | '''SDevices_logicAction.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDevices_statusUpdated_php | '''SDevices_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_levelUpdated_php | '''SDimmers_levelUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_levelWorkUpdated_php | '''SDimmers_levelWorkUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_setLevel_php | '''SDimmers_setLevel.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_statusUpdated_php | '''SDimmers_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_turnOff_php | '''SDimmers_turnOff.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_turnOn_php | '''SDimmers_turnOn.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SGroups_statusUpdated_php | '''SGroups_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SGroups_switch_php | '''SGroups_switch.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SGroups_turnOff_php | '''SGroups_turnOff.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SGroups_turnOn_php | '''SGroups_turnOn.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLeak_alert_php | '''SLeak_alert.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLeak_blockSensor_php | '''SLeak_blockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLeak_statusUpdated_php | '''SLeak_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLeak_unblockSensor_php | '''SLeak_unblockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMotions_blockSensor_php | '''SMotions_blockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMotions_motionDetected_php | '''SMotions_motionDetected.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMotions_unblockSensor_php | '''SMotions_unblockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenClose_blockSensor_php | '''SOpenClose_blockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenClose_statusUpdated_php | '''SOpenClose_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenClose_unblockSensor_php | '''SOpenClose_unblockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_close_php | '''SOpenable_close.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_levelUpdated_php | '''SOpenable_levelUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_open_php | '''SOpenable_open.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_setLevel_php | '''SOpenable_setLevel.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_statusUpdated_php | '''SOpenable_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_switch_php | '''SOpenable_switch.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SPowerSensors_loadStatusChanged_php | '''SPowerSensors_loadStatusChanged.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SPowerSensors_valueUpdated_php | '''SPowerSensors_valueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SRGB_colorUpdated_php | '''SRGB_colorUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SRGB_setColor_php | '''SRGB_setColor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SRGB_turnOff_php | '''SRGB_turnOff.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SRGB_turnOn_php | '''SRGB_turnOn.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSensors_alert_php | '''SSensors_alert.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSensors_blockSensor_php | '''SSensors_blockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSensors_unblockSensor_php | '''SSensors_unblockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSensors_valueUpdated_php | '''SSensors_valueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSmoke_alert_php | '''SSmoke_alert.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSmoke_blockSensor_php | '''SSmoke_blockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSmoke_statusUpdated_php | '''SSmoke_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSmoke_unblockSensor_php | '''SSmoke_unblockSensor.php''']] -  &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_disable_php | '''SThermostats_disable.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_enable_php | '''SThermostats_enable.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_setTargetTemperature_php | '''SThermostats_setTargetTemperature.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_statusUpdated_php | '''SThermostats_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_switchEnable_php | '''SThermostats_switchEnable.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_tempDown_php | '''SThermostats_tempDown.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_tempUp_php | '''SThermostats_tempUp.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_turnOff_php | '''SThermostats_turnOff.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_turnOn_php | '''SThermostats_turnOn.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_valueUpdated_php | '''SThermostats_valueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_configUpdated_php | '''SAirConditioners_configUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_fanSpeedUpdated_php | '''SAirConditioners_fanSpeedUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_setFanSpeedMode_php | '''SAirConditioners_setFanSpeedMode.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_setTargetTemperature_php | '''SAirConditioners_setTargetTemperature.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_setThermostatMode_php | '''SAirConditioners_setThermostatMode.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_tempDown_php | '''SAirConditioners_tempDown.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_tempUp_php | '''SAirConditioners_tempUp.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_thermostatUpdated_php | '''SAirConditioners_thermostatUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLightSensors_periodMinValueUpdated_php | '''SLightSensors_periodMinValueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLightSensors_valueUpdated_php | '''SLightSensors_valueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMedias_pause_php | '''SMedias_pause.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMedias_setChannel_php | '''SMedias_setChannel.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMedias_setSource_php | '''SMedias_setSource.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMedias_setVolume_php | '''SMedias_setVolume.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/STVs_pause_php | '''STVs_pause.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/STVs_setChannel_php | '''STVs_setChannel.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/STVs_setSource_php | '''STVs_setSource.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/STVs_setVolume_php | '''STVs_setVolume.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SVacuums_pause_php | '''SVacuums_pause.php''']] - &lt;br /&gt;
&lt;br /&gt;
'''app''' -  пока файл не понятен, его назначение так-же&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/darknessmode_activate_php | '''darknessmode_activate.php''']] - для активации устройств, связанных с группой &amp;quot;groupSunset&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/darknessmode_deactivate_php | '''darknessmode_deactivate.php''']] - для деактивации устройств, связанных с группой &amp;quot;groupSunset&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_class_php | '''devices.class.php''']] - содержит набор функций для взаимодействия с устройствами в рамках проекта. Он обеспечивает взаимодействие между устройствами, базой данных, внешними API и другими частями системы, такими как управление группами устройств, связями между ними и действиями, которые могут быть выполнены над устройствами.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_edit_inc_php | '''devices_edit.inc.php''']] - содержит функции и код, связанный с редактированием устройств в проекте. Он включает в себя обработку форм, сохранение данных и другие операции, связанные с редактированием устройств.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_links_inc_php | '''devices_links.inc.php''']] - содержит функции для работы с связями между устройствами. Он включает в себя обработку создания, обновления и удаления связей, а также работу с деталями связей и другие операции, связанные с управлением связями устройств.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_links_actions_inc_php | '''devices_links_actions.inc.php''']] - содержит функции для обработки действий, связанных с устройствами. Он выполняет действия, такие как включение, выключение, установка цвета и передача значений объектов. Также файл подключает дополнительные скрипты для обработки действий из директории [[Modules/devices/addons|'''addons''']]&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_manage_groups_inc_php | '''devices_manage_groups.inc.php''']] - содержит функции для управления группами устройств. Он включает в себя операции по созданию, редактированию и удалению групп устройств, обновление объектов группы, очистку кэша значений, а также перенаправление на соответствующие страницы просмотра.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_manage_schedule_inc_php | '''devices_manage_schedule.inc.php''']] -  этот файл включает в себя операции по созданию, редактированию и удалению расписаний для устройств, а также операции по привязке устройств к определенным временным интервалам и управлению их работой в соответствии с расписанием.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_quick_edit_inc_php | '''devices_quick_edit.inc.php''']] - содержит код для сщздания/редактирования устройств. Он обеспечивает быстрый доступ к основным параметрам устройств, таким как имя, описание, состояние и другие атрибуты, позволяя пользователям внести изменения на странице редактирования.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_schedule_inc_php | '''devices_schedule.inc.php''']] - этот файл предоставляет функциональность для управления расписаниями устройств, включая создание, редактирование и удаление расписаний, а также привязку устройств к определенным временным интервалам и управление их работой в соответствии с расписанием.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_search_inc_php | '''devices_search.inc.php''']] -  содержит функции для поиска устройств в системе. Он предоставляет возможность осуществлять поиск устройств по различным критериям, таким как имя устройства, тип, статус и другие атрибуты. Кроме того, файл может включать функции для фильтрации результатов поиска и отображения найденной информации о устройствах.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_structure_inc_php | '''devices_structure.inc.php''']] - определяет структуру свойств и методов, которыми будут наделены устройства в системе. Он содержит описание основных характеристик устройств, таких как их тип, статус, параметры, возможные действия и другие атрибуты. Кроме того, данный файл определяет методы, которые позволяют взаимодействовать с устройствами, управлять ими и получать информацию о их состоянии.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_structure_links_inc_php | '''devices_structure_links.inc.php''']] - файл определяет структуру связей между устройствами в системе. Он содержит описание основных характеристик связей, таких как тип связи, устройства, которые связаны, параметры связи и другие атрибуты. Кроме того, данный файл определяет методы для управления связями между устройствами, включая создание новых связей, редактирование существующих и удаление ненужных связей.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_widgets_js_php | '''devices_widgets.js.php''']] - файл с примесью js, его я не знаю совсем, поэтому подождем описания знающих, а по ссылке будет страница с кодом без комментариев.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/econommode_activate_php | '''econommode_activate.php''']] - метод активации режима экономии энергии EconomMode.activate. Класс OperationalModes, обьект EconomMode.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/econommode_deactivate_php | '''econommode_deactivate.php''']] - метод деактивации режима экономии энергии EconomMode.activate. Класс OperationalModes, обьект EconomMode.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/homebridgeSendUpdate_inc_php | '''homebridgeSendUpdate.inc.php''']] - Этот файл вероятно отвечает за передачу информации о состоянии устройств, сценариев или других параметров из вашей системы в Homebridge для обновления данных и синхронизации информации между системами.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/homebridgeSync_inc_php | '''homebridgeSync.inc.php''']] - содержит функции для синхронизации устройств и их состояний с платформой Homebridge, которая обеспечивает интеграцию умного дома с устройствами Apple HomeKit. Код в этом файле вероятно отвечает за обновление информации об устройствах и их состояниях в Homebridge, чтобы обеспечить соответствие между системой умного дома и платформой HomeKit.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/nightmode_activate_php | '''nightmode_activate.php''']] - Метод активации ночного режима. Принадлежит классу OperationalModes, объект NightMode.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/nobodyhomemode_activate_php | '''nobodyhomemode_activate.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/nobodyhomemode_deactivate_php | '''nobodyhomemode_deactivate.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/processCommand_inc_php | '''processCommand.inc.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/processHomebridgeMQTT_inc_php | '''processHomebridgeMQTT.inc.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/system_checkstate_php | '''system_checkstate.php''']] -&lt;/div&gt;</summary>
		<author><name>Elmax</name></author>
	</entry>
	<entry>
		<id>https://mdminfo.ru/index.php?title=Modules/devices/homebridgeSendUpdate_inc_php&amp;diff=2105</id>
		<title>Modules/devices/homebridgeSendUpdate inc php</title>
		<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=Modules/devices/homebridgeSendUpdate_inc_php&amp;diff=2105"/>
		<updated>2024-04-08T19:07:30Z</updated>

		<summary type="html">&lt;p&gt;Elmax: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Modules/devices/homebridgeSendUpdate_inc_php | homebridgeSendUpdate.inc.php]]&lt;br /&gt;
[[Папки и файлы|ᐂ В корневой раздел]]  [[Modules/devices|ᐃ В директорию расположения файла]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
// Создание пустого массива под названием $payload&lt;br /&gt;
$payload = array();&lt;br /&gt;
// Добавление в массив $payload элемента 'name' со значением из $device1['LINKED_OBJECT']&lt;br /&gt;
$payload['name'] = $device1['LINKED_OBJECT'];&lt;br /&gt;
// Добавление в массив $payload элемента 'service_name' со значением из $device1['TITLE']&lt;br /&gt;
$payload['service_name'] = $device1['TITLE'];&lt;br /&gt;
&lt;br /&gt;
// Создание второго пустого массива под названием $payload2&lt;br /&gt;
$payload2 = array();&lt;br /&gt;
// Добавление в массив $payload2 элемента 'name' со значением из $device1['LINKED_OBJECT']&lt;br /&gt;
$payload2['name'] = $device1['LINKED_OBJECT'];&lt;br /&gt;
// Добавление в массив $payload2 элемента 'service_name' со значением из $device1['TITLE']&lt;br /&gt;
$payload2['service_name'] = $device1['TITLE'];&lt;br /&gt;
&lt;br /&gt;
// Закомментированный код, который, вероятно, должен был выводить сообщение об обновлении Homebridge&lt;br /&gt;
//DebMes(&amp;quot;Homebridge Update &amp;quot;.$device1['LINKED_OBJECT'].&amp;quot; (&amp;quot;.$device1['TYPE'].&amp;quot;): &amp;quot;.gg($device1['LINKED_OBJECT'] . '.status').&amp;quot; / &amp;quot;.gg($device1['LINKED_OBJECT'] . '.value'),'homebridge');&lt;br /&gt;
&lt;br /&gt;
// Выбор типа устройства&lt;br /&gt;
switch ($device1['TYPE']) {&lt;br /&gt;
        // Если тип устройства - реле&lt;br /&gt;
    case 'relay':&lt;br /&gt;
        // Получение типа нагрузки для реле&lt;br /&gt;
        $load_type = gg($device1['LINKED_OBJECT'] . '.loadType');&lt;br /&gt;
        // Если тип нагрузки - свет&lt;br /&gt;
        if ($load_type == 'light') $payload['service'] = 'Lightbulb';&lt;br /&gt;
        // Если тип нагрузки - вентилятор&lt;br /&gt;
        elseif ($load_type == 'vent') $payload['service'] = 'Fan';&lt;br /&gt;
        // Если тип нагрузки - переключатель&lt;br /&gt;
        elseif ($load_type == 'switch') $payload['service'] = 'Switch';&lt;br /&gt;
        // Если тип нагрузки не указан, считаем его выходом&lt;br /&gt;
        else $payload['service'] = 'Outlet';&lt;br /&gt;
        // Установка характеристики для реле&lt;br /&gt;
        $payload['characteristic'] = 'On';&lt;br /&gt;
        // Проверка статуса устройства&lt;br /&gt;
        if (gg($device1['LINKED_OBJECT'] . '.status')) {&lt;br /&gt;
            // Если устройство включено, устанавливаем значение true&lt;br /&gt;
            $payload['value'] = true;&lt;br /&gt;
        } else {&lt;br /&gt;
            // Если устройство выключено, устанавливаем значение false&lt;br /&gt;
            $payload['value'] = false;&lt;br /&gt;
        }&lt;br /&gt;
        // Прерывание выполнения кода для данного случая&lt;br /&gt;
        break;&lt;br /&gt;
&lt;br /&gt;
        // Если тип устройства - датчик температуры&lt;br /&gt;
    case 'sensor_temp':&lt;br /&gt;
        // Установка сервиса для датчика температуры&lt;br /&gt;
        $payload['service'] = 'TemperatureSensor';&lt;br /&gt;
        // Установка характеристики для текущей температуры&lt;br /&gt;
        $payload['characteristic'] = 'CurrentTemperature';&lt;br /&gt;
        // Получение значения температуры&lt;br /&gt;
        $payload['value'] = gg($device1['LINKED_OBJECT'] . '.value');&lt;br /&gt;
        break;&lt;br /&gt;
        // Если тип устройства - датчик CO2&lt;br /&gt;
    case 'sensor_co2':&lt;br /&gt;
        // Установка сервиса для датчика CO2&lt;br /&gt;
        $payload['service'] = 'CarbonDioxideSensor';&lt;br /&gt;
        // Установка характеристики для уровня CO2&lt;br /&gt;
        $payload['characteristic'] = 'CarbonDioxideLevel';&lt;br /&gt;
        // Получение значения уровня CO2&lt;br /&gt;
        $payload['value'] = gg($device1['LINKED_OBJECT'] . '.value');&lt;br /&gt;
&lt;br /&gt;
        // Получение максимального уровня CO2&lt;br /&gt;
        $max_level = gg($device1['LINKED_OBJECT'] . '.maxValue');&lt;br /&gt;
        if (!$max_level) {&lt;br /&gt;
            // Если максимальный уровень не указан, устанавливаем значение по умолчанию&lt;br /&gt;
            $max_level = 1200;&lt;br /&gt;
        }&lt;br /&gt;
        // Установка сервиса для датчика CO2 во втором массиве&lt;br /&gt;
        $payload2['service'] = 'CarbonDioxideSensor';&lt;br /&gt;
        // Установка характеристики для обнаружения CO2&lt;br /&gt;
        $payload2['characteristic'] = 'CarbonDioxideDetected';&lt;br /&gt;
        if ($payload['value'] &amp;gt;= $max_level) {&lt;br /&gt;
            // Если уровень CO2 превышает максимальный, устанавливаем значение обнаружения&lt;br /&gt;
            $payload2['value'] = &amp;quot;1&amp;quot;;&lt;br /&gt;
        } else {&lt;br /&gt;
            // Если уровень CO2 не превышает максимальный, устанавливаем значение отсутствия обнаружения&lt;br /&gt;
            $payload2['value'] = &amp;quot;0&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
        break;&lt;br /&gt;
        // Если тип устройства - датчик влажности&lt;br /&gt;
    case 'sensor_humidity':&lt;br /&gt;
        // Установка сервиса для датчика влажности&lt;br /&gt;
        $payload['service'] = 'HumiditySensor';&lt;br /&gt;
        // Установка характеристики для текущей относительной влажности&lt;br /&gt;
        $payload['characteristic'] = 'CurrentRelativeHumidity';&lt;br /&gt;
        // Получение значения относительной влажности&lt;br /&gt;
        $payload['value'] = gg($device1['LINKED_OBJECT'] . '.value');&lt;br /&gt;
        break;&lt;br /&gt;
        // Если тип устройства - датчик движения&lt;br /&gt;
    case 'motion':&lt;br /&gt;
        // Установка сервиса для датчика движения&lt;br /&gt;
        $payload['service'] = 'MotionSensor';&lt;br /&gt;
        // Установка характеристики для обнаружения движения&lt;br /&gt;
        $payload['characteristic'] = 'MotionDetected';&lt;br /&gt;
        if (gg($device1['LINKED_OBJECT'] . '.status')) {&lt;br /&gt;
            // Если обнаружено движение, устанавливаем значение true&lt;br /&gt;
            $payload['value'] = true;&lt;br /&gt;
        } else {&lt;br /&gt;
            // Если движение не обнаружено, устанавливаем значение false&lt;br /&gt;
            $payload['value'] = false;&lt;br /&gt;
        }&lt;br /&gt;
        break;&lt;br /&gt;
        // Если тип устройства - датчик дыма&lt;br /&gt;
    case 'smoke':&lt;br /&gt;
        // Установка сервиса для датчика дыма&lt;br /&gt;
        $payload['service'] = 'SmokeSensor';&lt;br /&gt;
        // Установка характеристики для обнаружения дыма&lt;br /&gt;
        $payload['characteristic'] = 'SmokeDetected';&lt;br /&gt;
        if (gg($device1['LINKED_OBJECT'] . '.status')) {&lt;br /&gt;
            // Если обнаружен дым, устанавливаем значение true&lt;br /&gt;
            $payload['value'] = true;&lt;br /&gt;
        } else {&lt;br /&gt;
            // Если дым не обнаружен, устанавливаем значение false&lt;br /&gt;
            $payload['value'] = false;&lt;br /&gt;
        }&lt;br /&gt;
        break;&lt;br /&gt;
        // Если тип устройства - датчик утечки&lt;br /&gt;
    case 'leak':&lt;br /&gt;
        // Установка сервиса для датчика утечки&lt;br /&gt;
        $payload['service'] = 'LeakSensor';&lt;br /&gt;
        // Установка характеристики для обнаружения утечки&lt;br /&gt;
        $payload['characteristic'] = 'LeakDetected';&lt;br /&gt;
        if (gg($device1['LINKED_OBJECT'] . '.status')) {&lt;br /&gt;
            // Если обнаружена утечка, устанавливаем значение true&lt;br /&gt;
            $payload['value'] = true;&lt;br /&gt;
        } else {&lt;br /&gt;
            // Если утечка не обнаружена, устанавливаем значение false&lt;br /&gt;
            $payload['value'] = false;&lt;br /&gt;
        }&lt;br /&gt;
        break;&lt;br /&gt;
        // Если тип устройства - датчик освещенности&lt;br /&gt;
    case 'sensor_light':&lt;br /&gt;
        // Установка сервиса для датчика освещенности&lt;br /&gt;
        $payload['service'] = 'LightSensor';&lt;br /&gt;
        // Установка характеристики для текущего уровня освещенности&lt;br /&gt;
        $payload['characteristic'] = 'CurrentAmbientLightLevel';&lt;br /&gt;
        // Получение значения уровня освещенности&lt;br /&gt;
        $payload['value'] = gg($device1['LINKED_OBJECT'] . '.value');&lt;br /&gt;
        break;&lt;br /&gt;
        // Если тип устройства - датчик открытия/закрытия&lt;br /&gt;
    case 'openclose':&lt;br /&gt;
        // Установка сервиса для датчика открытия/закрытия&lt;br /&gt;
        $payload['service'] = 'ContactSensor';&lt;br /&gt;
        // Установка характеристики для состояния датчика открытия/закрытия&lt;br /&gt;
        $payload['characteristic'] = 'ContactSensorState';&lt;br /&gt;
        // Проверка типа датчика (NO/NC)&lt;br /&gt;
        $nc = gg($device1['LINKED_OBJECT'] . '.ncno') == 'nc';&lt;br /&gt;
        // Установка значения в зависимости от типа датчика&lt;br /&gt;
        $payload['value'] = $nc ? 1 - gg($device1['LINKED_OBJECT'] . '.status') : gg($device1['LINKED_OBJECT'] . '.status');&lt;br /&gt;
        break;&lt;br /&gt;
        // Если тип устройства - открываемое устройство&lt;br /&gt;
    case 'openable':&lt;br /&gt;
        // Получение типа открываемого устройства&lt;br /&gt;
        $open_type = gg($device1['LINKED_OBJECT'] . '.openType');&lt;br /&gt;
        if ($open_type == 'gates') {&lt;br /&gt;
            // Установка сервиса для открывателя гаражных дверей&lt;br /&gt;
            $payload['service'] = 'GarageDoorOpener';&lt;br /&gt;
        } elseif ($open_type == 'door') {&lt;br /&gt;
            // Установка сервиса для двери&lt;br /&gt;
            $payload['service'] = 'Door';&lt;br /&gt;
        } elseif ($open_type == 'window') {&lt;br /&gt;
            // Установка сервиса для окна&lt;br /&gt;
            $payload['service'] = 'Window';&lt;br /&gt;
        } elseif ($open_type == 'curtains') {&lt;br /&gt;
            // Установка сервиса для жалюзи&lt;br /&gt;
            $payload['service'] = 'WindowCovering';&lt;br /&gt;
        } elseif ($open_type == 'shutters') {&lt;br /&gt;
            // Установка сервиса для штор&lt;br /&gt;
            $payload['service'] = 'WindowCovering';&lt;br /&gt;
        }&lt;br /&gt;
        if ($payload['service']) {&lt;br /&gt;
            if ($open_type == 'gates') {&lt;br /&gt;
                if (gg($device1['LINKED_OBJECT'] . '.status')) {&lt;br /&gt;
                    // Если дверь открыта, устанавливаем значение 1&lt;br /&gt;
                    $payload['value'] = &amp;quot;1&amp;quot;;&lt;br /&gt;
                } else {&lt;br /&gt;
                    // Если дверь закрыта, устанавливаем значение 0&lt;br /&gt;
                    $payload['value'] = &amp;quot;0&amp;quot;;&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                // Установка характеристики для текущего состояния двери&lt;br /&gt;
                $payload['characteristic'] = 'CurrentDoorState';&lt;br /&gt;
                if ($debug_sync) {&lt;br /&gt;
                    // Вывод сообщения для отладки&lt;br /&gt;
                    DebMes(&amp;quot;MQTT to_set : &amp;quot; . json_encode($payload), 'homebridge');&lt;br /&gt;
                }&lt;br /&gt;
                // Отправка данных в Homebridge&lt;br /&gt;
                sg('HomeBridge.to_set', json_encode($payload));&lt;br /&gt;
                /*&lt;br /&gt;
            if ($debug_sync) {&lt;br /&gt;
            // Вывод сообщения для отладки&lt;br /&gt;
                DebMes(&amp;quot;MQTT to_set : &amp;quot; . json_encode($payload), 'homebridge');&lt;br /&gt;
            }&lt;br /&gt;
            // Установка характеристики для целевого состояния двери&lt;br /&gt;
            $payload['characteristic'] = 'TargetDoorState';&lt;br /&gt;
            */&lt;br /&gt;
&lt;br /&gt;
                // Удаление сервиса из массива&lt;br /&gt;
                unset($payload['service']);&lt;br /&gt;
                // Если тип открываемого устройства - дверь, окно, жалюзи или шторы&lt;br /&gt;
            } elseif ($open_type == 'door' || $open_type == 'window' || $open_type == 'curtains' || $open_type == 'shutters') {&lt;br /&gt;
                // Установка характеристики для текущей позиции&lt;br /&gt;
                $payload['characteristic'] = 'CurrentPosition';&lt;br /&gt;
                if (gg($device1['LINKED_OBJECT'] . '.status')) {&lt;br /&gt;
                    // Если устройство закрыто, устанавливаем значение 0&lt;br /&gt;
                    $payload['value'] = &amp;quot;0&amp;quot;;&lt;br /&gt;
                } else {&lt;br /&gt;
                    // Если устройство открыто, устанавливаем значение 100&lt;br /&gt;
                    $payload['value'] = &amp;quot;100&amp;quot;;&lt;br /&gt;
                }&lt;br /&gt;
                if ($debug_sync) {&lt;br /&gt;
                    // Вывод сообщения для отладки&lt;br /&gt;
                    DebMes(&amp;quot;MQTT to_set : &amp;quot; . json_encode($payload), 'homebridge');&lt;br /&gt;
                }&lt;br /&gt;
                // Отправка данных в Homebridge&lt;br /&gt;
                sg('HomeBridge.to_set', json_encode($payload));&lt;br /&gt;
                // Установка характеристики для целевой позиции&lt;br /&gt;
                $payload['characteristic'] = 'TargetPosition';&lt;br /&gt;
                // Отправка данных в Homebridge&lt;br /&gt;
                sg('HomeBridge.to_set', json_encode($payload));&lt;br /&gt;
                // Удаление сервиса из массива&lt;br /&gt;
                unset($payload['service']);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        break;&lt;br /&gt;
        // Если тип устройства - RGB лампа&lt;br /&gt;
    case 'rgb':&lt;br /&gt;
        // Установка сервиса для лампы&lt;br /&gt;
        $payload['service'] = 'Lightbulb';&lt;br /&gt;
        // Добавление лампы в Homebridge&lt;br /&gt;
        sg('HomeBridge.to_add', json_encode($payload));&lt;br /&gt;
&lt;br /&gt;
        // Установка характеристики для включения/выключения&lt;br /&gt;
        $payload['characteristic'] = 'On';&lt;br /&gt;
        if (gg($device1['LINKED_OBJECT'] . '.status')) {&lt;br /&gt;
            // Если лампа включена, устанавливаем значение true&lt;br /&gt;
            $payload['value'] = true;&lt;br /&gt;
        } else {&lt;br /&gt;
            // Если лампа выключена, устанавливаем значение false&lt;br /&gt;
            $payload['value'] = false;&lt;br /&gt;
        }&lt;br /&gt;
        // Отправка данных в Homebridge&lt;br /&gt;
        sg('HomeBridge.to_set', json_encode($payload));&lt;br /&gt;
&lt;br /&gt;
        // Установка характеристики для оттенка&lt;br /&gt;
        $payload['characteristic'] = 'Hue';&lt;br /&gt;
        // Получение значения оттенка&lt;br /&gt;
        $payload['value'] = gg($device1['LINKED_OBJECT'] . '.hue');&lt;br /&gt;
        // Отправка данных в Homebridge&lt;br /&gt;
        sg('HomeBridge.to_set', json_encode($payload));&lt;br /&gt;
&lt;br /&gt;
        // Установка характеристики для насыщенности&lt;br /&gt;
        $payload['characteristic'] = 'Saturation';&lt;br /&gt;
        // Получение значения насыщенности&lt;br /&gt;
        $payload['value'] = gg($device1['LINKED_OBJECT'] . '.saturation');&lt;br /&gt;
        // Отправка данных в Homebridge&lt;br /&gt;
        sg('HomeBridge.to_set', json_encode($payload));&lt;br /&gt;
&lt;br /&gt;
        // Установка характеристики для яркости&lt;br /&gt;
        $payload['characteristic'] = 'Brightness';&lt;br /&gt;
        // Получение значения яркости&lt;br /&gt;
        $payload['value'] = gg($device1['LINKED_OBJECT'] . '.brightness');&lt;br /&gt;
        // Отправка данных в Homebridge&lt;br /&gt;
        sg('HomeBridge.to_set', json_encode($payload));&lt;br /&gt;
        // Удаление сервиса из массива&lt;br /&gt;
        unset($payload['service']);&lt;br /&gt;
        break;&lt;br /&gt;
        // Если тип устройства - LED лампа&lt;br /&gt;
    case 'ledlamp':&lt;br /&gt;
        // Установка сервиса для лампы&lt;br /&gt;
        $payload['service'] = 'Lightbulb';&lt;br /&gt;
        // Добавление лампы в Homebridge&lt;br /&gt;
        sg('HomeBridge.to_add', json_encode($payload));&lt;br /&gt;
&lt;br /&gt;
        // Установка характеристики для включения/выключения&lt;br /&gt;
        $payload['characteristic'] = 'On';&lt;br /&gt;
        if (gg($device1['LINKED_OBJECT'] . '.status')) {&lt;br /&gt;
            // Если лампа включена, устанавливаем значение true&lt;br /&gt;
            $payload['value'] = true;&lt;br /&gt;
        } else {&lt;br /&gt;
            // Если лампа выключена, устанавливаем значение false&lt;br /&gt;
            $payload['value'] = false;&lt;br /&gt;
        }&lt;br /&gt;
        // Отправка данных в Homebridge&lt;br /&gt;
        sg('HomeBridge.to_set', json_encode($payload));&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        // Установка характеристики для яркости&lt;br /&gt;
        $payload['characteristic'] = 'Brightness';&lt;br /&gt;
        // Получение значения яркости&lt;br /&gt;
        $payload['value'] = gg($device1['LINKED_OBJECT'] . '.brightness');&lt;br /&gt;
        // Отправка данных в Homebridge&lt;br /&gt;
        sg('HomeBridge.to_set', json_encode($payload));&lt;br /&gt;
        // Удаление сервиса из массива&lt;br /&gt;
        unset($payload['service']);&lt;br /&gt;
        break;&lt;br /&gt;
&lt;br /&gt;
        // Если тип устройства - термостат&lt;br /&gt;
    case 'thermostat':&lt;br /&gt;
        // Установка характеристики для текущей температуры&lt;br /&gt;
        $payload['characteristic'] = 'CurrentTemperature';&lt;br /&gt;
        // Получение значения текущей температуры&lt;br /&gt;
        $payload['value'] = gg($device1['LINKED_OBJECT'] . '.value');&lt;br /&gt;
        // Отправка данных в Homebridge&lt;br /&gt;
        sg('HomeBridge.to_set', json_encode($payload));&lt;br /&gt;
&lt;br /&gt;
        // Установка характеристики для целевой температуры&lt;br /&gt;
        $payload['characteristic'] = 'TargetTemperature';&lt;br /&gt;
        // Получение значения целевой температуры&lt;br /&gt;
        $payload['value'] = gg($device1['LINKED_OBJECT'] . '.currentTargetValue');&lt;br /&gt;
        // Отправка данных в Homebridge&lt;br /&gt;
        sg('HomeBridge.to_set', json_encode($payload));&lt;br /&gt;
        // Установка характеристики для текущего состояния обогрева/охлаждения&lt;br /&gt;
        $payload['characteristic'] = 'CurrentHeatingCoolingState'; //off = 0, heat = 1, and cool = 2, auto = 3&lt;br /&gt;
        if (!gg($device1['LINKED_OBJECT'] . '.disabled')) {&lt;br /&gt;
            if (gg($device1['LINKED_OBJECT'] . '.status')) {&lt;br /&gt;
                // Если термостат включен, устанавливаем значение 1 (нагрев)&lt;br /&gt;
                $payload['value'] = 1;&lt;br /&gt;
            } else {&lt;br /&gt;
                // Если термостат выключен, устанавливаем значение 2 (охлаждение)&lt;br /&gt;
                $payload['value'] = 2;&lt;br /&gt;
            }&lt;br /&gt;
        } else {&lt;br /&gt;
            // Если термостат отключен, устанавливаем значение 0 (выключено)&lt;br /&gt;
            $payload['value'] = 0;&lt;br /&gt;
        }&lt;br /&gt;
        break;&lt;br /&gt;
        /*&lt;br /&gt;
    // Если тип устройства - датчик батареи&lt;br /&gt;
case 'sensor_battery':&lt;br /&gt;
    // Установка сервиса для датчика батареи&lt;br /&gt;
    $payload['service']='BatteryService'; &lt;br /&gt;
    // Добавление датчика батареи в Homebridge&lt;br /&gt;
    sg('HomeBridge.to_add',json_encode($payload)); &lt;br /&gt;
    // Характеристика для уровня заряда батареи&lt;br /&gt;
    // Characteristic.BatteryLevel; &lt;br /&gt;
    // Характеристика для состояния зарядки&lt;br /&gt;
    // Characteristic.ChargingState; 0 - NOT_CHARGING, 1 - CHARGING, 2 - NOT_CHARGEABLE &lt;br /&gt;
    // Характеристика для состояния низкого уровня батареи&lt;br /&gt;
    // Characteristic.StatusLowBattery; &lt;br /&gt;
    // Установка характеристики для уровня заряда батареи&lt;br /&gt;
    $payload['characteristic'] = 'BatteryLevel'; &lt;br /&gt;
    // Получение значения уровня заряда батареи&lt;br /&gt;
    $payload['value']=gg($device1['LINKED_OBJECT'].'.value'); &lt;br /&gt;
    // Отправка данных в Homebridge&lt;br /&gt;
    sg('HomeBridge.to_set',json_encode($payload)); &lt;br /&gt;
&lt;br /&gt;
    // Установка характеристики для состояния зарядки&lt;br /&gt;
    $payload['characteristic'] = 'ChargingState'; &lt;br /&gt;
    // Установка значения для состояния зарядки (2 - NOT_CHARGEABLE)&lt;br /&gt;
    $payload['value']=2; &lt;br /&gt;
    // Отправка данных в Homebridge&lt;br /&gt;
    sg('HomeBridge.to_set',json_encode($payload)); &lt;br /&gt;
&lt;br /&gt;
    // Установка характеристики для состояния низкого уровня батареи&lt;br /&gt;
    $payload['characteristic'] = 'StatusLowBattery'; &lt;br /&gt;
    // Установка значения в зависимости от нормального значения батареи&lt;br /&gt;
    $payload['value']=gg($device1['LINKED_OBJECT'].'.normalValue') ? 0 : 1; &lt;br /&gt;
    // Отправка данных в Homebridge&lt;br /&gt;
    sg('HomeBridge.to_set',json_encode($payload)); &lt;br /&gt;
&lt;br /&gt;
    break;&lt;br /&gt;
    */&lt;br /&gt;
        // Если тип устройства не соответствует ни одному из предыдущих случаев&lt;br /&gt;
    default:&lt;br /&gt;
        // Формирование пути к дополнению для обработки данного типа устройства&lt;br /&gt;
        $addon_path = dirname(__FILE__) . '/addons/' . $device1['TYPE'] . '_homebridgeSendUpdate.php';&lt;br /&gt;
        // Проверка существования файла дополнения&lt;br /&gt;
        if (file_exists($addon_path)) {&lt;br /&gt;
            // Подключение файла дополнения для обработки данного типа устройства&lt;br /&gt;
            require($addon_path);&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
// Проверка наличия сервиса в массиве $payload&lt;br /&gt;
if (isset($payload['service'])) {&lt;br /&gt;
    // Формирование имени ключа для кэша&lt;br /&gt;
    $hmName = 'hmb:' . $payload['name'];&lt;br /&gt;
    // Кодирование данных $payload в формате JSON&lt;br /&gt;
    $payload_encoded = json_encode($payload);&lt;br /&gt;
    // Вычисление хеш-кода данных $payload&lt;br /&gt;
    $hmValue = md5($payload_encoded);&lt;br /&gt;
    // Сравнение хеш-кода данных $payload с хеш-кодом из кэша&lt;br /&gt;
    if (checkFromCache($hmName) != $hmValue) {&lt;br /&gt;
        // Если хеш-коды не совпадают, сохраняем новый хеш-код в кэш&lt;br /&gt;
        saveToCache($hmName, $hmValue);&lt;br /&gt;
        // Если включена отладка, выводим сообщение для отладки&lt;br /&gt;
        if ($debug_sync) {&lt;br /&gt;
            DebMes(&amp;quot;MQTT to_set : &amp;quot; . $payload_encoded, 'homebridge');&lt;br /&gt;
        }&lt;br /&gt;
        // Отправка данных в Homebridge&lt;br /&gt;
        sg('HomeBridge.to_set', $payload_encoded);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
// Проверка наличия сервиса во втором массиве $payload2&lt;br /&gt;
if (isset($payload2['service'])) {&lt;br /&gt;
    // Формирование имени ключа для кэша&lt;br /&gt;
    $hmName = 'hmb:' . $payload2['name'];&lt;br /&gt;
    // Кодирование данных $payload2 в формате JSON&lt;br /&gt;
    $payload2_encoded = json_encode($payload2);&lt;br /&gt;
    // Вычисление хеш-кода данных $payload2&lt;br /&gt;
    $hmValue = md5($payload2_encoded);&lt;br /&gt;
    // Сравнение хеш-кода данных $payload2 с хеш-кодом из кэша&lt;br /&gt;
    if (checkFromCache($hmName) != $hmValue) {&lt;br /&gt;
        // Если хеш-коды не совпадают, сохраняем новый хеш-код в кэш&lt;br /&gt;
        saveToCache($hmName, $hmValue);&lt;br /&gt;
        // Если включена отладка, выводим сообщение для отладки&lt;br /&gt;
        if ($debug_sync) {&lt;br /&gt;
            DebMes(&amp;quot;MQTT to_set : &amp;quot; . $payload2_encoded, 'homebridge');&lt;br /&gt;
        }&lt;br /&gt;
        // Отправка данных в Homebridge&lt;br /&gt;
        sg('HomeBridge.to_set', $payload2_encoded);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Elmax</name></author>
	</entry>
	<entry>
		<id>https://mdminfo.ru/index.php?title=Modules/devices&amp;diff=2104</id>
		<title>Modules/devices</title>
		<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=Modules/devices&amp;diff=2104"/>
		<updated>2024-04-08T18:59:05Z</updated>

		<summary type="html">&lt;p&gt;Elmax: описание homebridgeSendUpdate.inc.php&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Modules/devices|/modules/devices]]&lt;br /&gt;
&lt;br /&gt;
[[Папки и файлы|ᐂ В корневой раздел]]  [[Modules|ᐃ на директорию выше]][https://github.com/sergejey/majordomo/tree/master/modules/devices | Перейти в директорию на github]&lt;br /&gt;
===== Папки директории '''/modules/devices''' =====&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/addons|'''addons''']] - пока папка не имеет описания&lt;br /&gt;
&lt;br /&gt;
===== Файлы директории '''/modules/devices''' =====&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/Rooms_onActivity_php | '''Rooms_onActivity.php''']] - вызывается методом onActivity, класса Rooms. Содерит функции для анализа данных об активности в помещениях и принятия соответствующих действий на основе этой информации.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/Rooms_onIdle_php | '''Rooms_onIdle.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/Rooms_updateActivityStatus_php | '''Rooms_updateActivityStatus.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SButtons_pressed_php | '''SButtons_pressed.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCameras_motionDetected_php | '''SCameras_motionDetected.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCameras_takeSeries_php | '''SCameras_takeSeries.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCameras_takeSnapshot_php | '''SCameras_takeSnapshot.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCameras_updatePreview_php | '''SCameras_updatePreview.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SControllers_switch_php | '''SControllers_switch.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SControllers_turnOff_php | '''SControllers_turnOff.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SControllers_turnOn_php | '''SControllers_turnOn.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCounters_pulseDetected_php | '''SCounters_pulseDetected.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCounters_refreshStats_php | '''SCounters_refreshStats.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCounters_valueUpdated_php | '''SCounters_valueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCounters_valueWorkUpdated_php | '''SCounters_valueWorkUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDevices_batteryLevelUpdated_php | '''SDevices_batteryLevelUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDevices_keepAlive_php | '''SDevices_keepAlive.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDevices_logicAction_php | '''SDevices_logicAction.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDevices_statusUpdated_php | '''SDevices_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_levelUpdated_php | '''SDimmers_levelUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_levelWorkUpdated_php | '''SDimmers_levelWorkUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_setLevel_php | '''SDimmers_setLevel.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_statusUpdated_php | '''SDimmers_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_turnOff_php | '''SDimmers_turnOff.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_turnOn_php | '''SDimmers_turnOn.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SGroups_statusUpdated_php | '''SGroups_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SGroups_switch_php | '''SGroups_switch.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SGroups_turnOff_php | '''SGroups_turnOff.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SGroups_turnOn_php | '''SGroups_turnOn.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLeak_alert_php | '''SLeak_alert.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLeak_blockSensor_php | '''SLeak_blockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLeak_statusUpdated_php | '''SLeak_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLeak_unblockSensor_php | '''SLeak_unblockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMotions_blockSensor_php | '''SMotions_blockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMotions_motionDetected_php | '''SMotions_motionDetected.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMotions_unblockSensor_php | '''SMotions_unblockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenClose_blockSensor_php | '''SOpenClose_blockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenClose_statusUpdated_php | '''SOpenClose_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenClose_unblockSensor_php | '''SOpenClose_unblockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_close_php | '''SOpenable_close.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_levelUpdated_php | '''SOpenable_levelUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_open_php | '''SOpenable_open.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_setLevel_php | '''SOpenable_setLevel.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_statusUpdated_php | '''SOpenable_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_switch_php | '''SOpenable_switch.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SPowerSensors_loadStatusChanged_php | '''SPowerSensors_loadStatusChanged.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SPowerSensors_valueUpdated_php | '''SPowerSensors_valueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SRGB_colorUpdated_php | '''SRGB_colorUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SRGB_setColor_php | '''SRGB_setColor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SRGB_turnOff_php | '''SRGB_turnOff.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SRGB_turnOn_php | '''SRGB_turnOn.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSensors_alert_php | '''SSensors_alert.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSensors_blockSensor_php | '''SSensors_blockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSensors_unblockSensor_php | '''SSensors_unblockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSensors_valueUpdated_php | '''SSensors_valueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSmoke_alert_php | '''SSmoke_alert.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSmoke_blockSensor_php | '''SSmoke_blockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSmoke_statusUpdated_php | '''SSmoke_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSmoke_unblockSensor_php | '''SSmoke_unblockSensor.php''']] -  &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_disable_php | '''SThermostats_disable.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_enable_php | '''SThermostats_enable.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_setTargetTemperature_php | '''SThermostats_setTargetTemperature.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_statusUpdated_php | '''SThermostats_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_switchEnable_php | '''SThermostats_switchEnable.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_tempDown_php | '''SThermostats_tempDown.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_tempUp_php | '''SThermostats_tempUp.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_turnOff_php | '''SThermostats_turnOff.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_turnOn_php | '''SThermostats_turnOn.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_valueUpdated_php | '''SThermostats_valueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_configUpdated_php | '''SAirConditioners_configUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_fanSpeedUpdated_php | '''SAirConditioners_fanSpeedUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_setFanSpeedMode_php | '''SAirConditioners_setFanSpeedMode.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_setTargetTemperature_php | '''SAirConditioners_setTargetTemperature.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_setThermostatMode_php | '''SAirConditioners_setThermostatMode.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_tempDown_php | '''SAirConditioners_tempDown.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_tempUp_php | '''SAirConditioners_tempUp.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_thermostatUpdated_php | '''SAirConditioners_thermostatUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLightSensors_periodMinValueUpdated_php | '''SLightSensors_periodMinValueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLightSensors_valueUpdated_php | '''SLightSensors_valueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMedias_pause_php | '''SMedias_pause.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMedias_setChannel_php | '''SMedias_setChannel.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMedias_setSource_php | '''SMedias_setSource.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMedias_setVolume_php | '''SMedias_setVolume.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/STVs_pause_php | '''STVs_pause.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/STVs_setChannel_php | '''STVs_setChannel.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/STVs_setSource_php | '''STVs_setSource.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/STVs_setVolume_php | '''STVs_setVolume.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SVacuums_pause_php | '''SVacuums_pause.php''']] - &lt;br /&gt;
&lt;br /&gt;
'''app''' -  пока файл не понятен, его назначение так-же&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/darknessmode_activate_php | '''darknessmode_activate.php''']] - для активации устройств, связанных с группой &amp;quot;groupSunset&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/darknessmode_deactivate_php | '''darknessmode_deactivate.php''']] - для деактивации устройств, связанных с группой &amp;quot;groupSunset&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_class_php | '''devices.class.php''']] - содержит набор функций для взаимодействия с устройствами в рамках проекта. Он обеспечивает взаимодействие между устройствами, базой данных, внешними API и другими частями системы, такими как управление группами устройств, связями между ними и действиями, которые могут быть выполнены над устройствами.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_edit_inc_php | '''devices_edit.inc.php''']] - содержит функции и код, связанный с редактированием устройств в проекте. Он включает в себя обработку форм, сохранение данных и другие операции, связанные с редактированием устройств.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_links_inc_php | '''devices_links.inc.php''']] - содержит функции для работы с связями между устройствами. Он включает в себя обработку создания, обновления и удаления связей, а также работу с деталями связей и другие операции, связанные с управлением связями устройств.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_links_actions_inc_php | '''devices_links_actions.inc.php''']] - содержит функции для обработки действий, связанных с устройствами. Он выполняет действия, такие как включение, выключение, установка цвета и передача значений объектов. Также файл подключает дополнительные скрипты для обработки действий из директории [[Modules/devices/addons|'''addons''']]&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_manage_groups_inc_php | '''devices_manage_groups.inc.php''']] - содержит функции для управления группами устройств. Он включает в себя операции по созданию, редактированию и удалению групп устройств, обновление объектов группы, очистку кэша значений, а также перенаправление на соответствующие страницы просмотра.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_manage_schedule_inc_php | '''devices_manage_schedule.inc.php''']] -  этот файл включает в себя операции по созданию, редактированию и удалению расписаний для устройств, а также операции по привязке устройств к определенным временным интервалам и управлению их работой в соответствии с расписанием.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_quick_edit_inc_php | '''devices_quick_edit.inc.php''']] - содержит код для сщздания/редактирования устройств. Он обеспечивает быстрый доступ к основным параметрам устройств, таким как имя, описание, состояние и другие атрибуты, позволяя пользователям внести изменения на странице редактирования.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_schedule_inc_php | '''devices_schedule.inc.php''']] - этот файл предоставляет функциональность для управления расписаниями устройств, включая создание, редактирование и удаление расписаний, а также привязку устройств к определенным временным интервалам и управление их работой в соответствии с расписанием.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_search_inc_php | '''devices_search.inc.php''']] -  содержит функции для поиска устройств в системе. Он предоставляет возможность осуществлять поиск устройств по различным критериям, таким как имя устройства, тип, статус и другие атрибуты. Кроме того, файл может включать функции для фильтрации результатов поиска и отображения найденной информации о устройствах.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_structure_inc_php | '''devices_structure.inc.php''']] - определяет структуру свойств и методов, которыми будут наделены устройства в системе. Он содержит описание основных характеристик устройств, таких как их тип, статус, параметры, возможные действия и другие атрибуты. Кроме того, данный файл определяет методы, которые позволяют взаимодействовать с устройствами, управлять ими и получать информацию о их состоянии.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_structure_links_inc_php | '''devices_structure_links.inc.php''']] - файл определяет структуру связей между устройствами в системе. Он содержит описание основных характеристик связей, таких как тип связи, устройства, которые связаны, параметры связи и другие атрибуты. Кроме того, данный файл определяет методы для управления связями между устройствами, включая создание новых связей, редактирование существующих и удаление ненужных связей.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_widgets_js_php | '''devices_widgets.js.php''']] - файл с примесью js, его я не знаю совсем, поэтому подождем описания знающих, а по ссылке будет страница с кодом без комментариев.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/econommode_activate_php | '''econommode_activate.php''']] - метод активации режима экономии энергии EconomMode.activate. Класс OperationalModes, обьект EconomMode.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/econommode_deactivate_php | '''econommode_deactivate.php''']] - метод деактивации режима экономии энергии EconomMode.activate. Класс OperationalModes, обьект EconomMode.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/homebridgeSendUpdate_inc_php | '''homebridgeSendUpdate.inc.php''']] - Этот файл вероятно отвечает за передачу информации о состоянии устройств, сценариев или других параметров из вашей системы в Homebridge для обновления данных и синхронизации информации между системами.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/homebridgeSync_inc_php | '''homebridgeSync.inc.php''']] - содержит функции для синхронизации устройств и их состояний с платформой Homebridge, которая обеспечивает интеграцию умного дома с устройствами Apple HomeKit. Код в этом файле вероятно отвечает за обновление информации об устройствах и их состояниях в Homebridge, чтобы обеспечить соответствие между системой умного дома и платформой HomeKit.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/nightmode_activate_php | '''nightmode_activate.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/nobodyhomemode_activate_php | '''nobodyhomemode_activate.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/nobodyhomemode_deactivate_php | '''nobodyhomemode_deactivate.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/processCommand_inc_php | '''processCommand.inc.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/processHomebridgeMQTT_inc_php | '''processHomebridgeMQTT.inc.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/system_checkstate_php | '''system_checkstate.php''']] -&lt;/div&gt;</summary>
		<author><name>Elmax</name></author>
	</entry>
	<entry>
		<id>https://mdminfo.ru/index.php?title=Modules/devices/homebridgeSendUpdate_inc_php&amp;diff=2103</id>
		<title>Modules/devices/homebridgeSendUpdate inc php</title>
		<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=Modules/devices/homebridgeSendUpdate_inc_php&amp;diff=2103"/>
		<updated>2024-04-08T18:58:49Z</updated>

		<summary type="html">&lt;p&gt;Elmax: + файл homebridgeSendUpdate.inc.php&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Modules/devices/homebridgeSendUpdate_inc_php | homebridgeSendUpdate.inc.php]]]]&lt;br /&gt;
[[Папки и файлы|ᐂ В корневой раздел]]  [[Modules/devices|ᐃ В директорию расположения файла]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
// Создание пустого массива под названием $payload&lt;br /&gt;
$payload = array();&lt;br /&gt;
// Добавление в массив $payload элемента 'name' со значением из $device1['LINKED_OBJECT']&lt;br /&gt;
$payload['name'] = $device1['LINKED_OBJECT'];&lt;br /&gt;
// Добавление в массив $payload элемента 'service_name' со значением из $device1['TITLE']&lt;br /&gt;
$payload['service_name'] = $device1['TITLE'];&lt;br /&gt;
&lt;br /&gt;
// Создание второго пустого массива под названием $payload2&lt;br /&gt;
$payload2 = array();&lt;br /&gt;
// Добавление в массив $payload2 элемента 'name' со значением из $device1['LINKED_OBJECT']&lt;br /&gt;
$payload2['name'] = $device1['LINKED_OBJECT'];&lt;br /&gt;
// Добавление в массив $payload2 элемента 'service_name' со значением из $device1['TITLE']&lt;br /&gt;
$payload2['service_name'] = $device1['TITLE'];&lt;br /&gt;
&lt;br /&gt;
// Закомментированный код, который, вероятно, должен был выводить сообщение об обновлении Homebridge&lt;br /&gt;
//DebMes(&amp;quot;Homebridge Update &amp;quot;.$device1['LINKED_OBJECT'].&amp;quot; (&amp;quot;.$device1['TYPE'].&amp;quot;): &amp;quot;.gg($device1['LINKED_OBJECT'] . '.status').&amp;quot; / &amp;quot;.gg($device1['LINKED_OBJECT'] . '.value'),'homebridge');&lt;br /&gt;
&lt;br /&gt;
// Выбор типа устройства&lt;br /&gt;
switch ($device1['TYPE']) {&lt;br /&gt;
        // Если тип устройства - реле&lt;br /&gt;
    case 'relay':&lt;br /&gt;
        // Получение типа нагрузки для реле&lt;br /&gt;
        $load_type = gg($device1['LINKED_OBJECT'] . '.loadType');&lt;br /&gt;
        // Если тип нагрузки - свет&lt;br /&gt;
        if ($load_type == 'light') $payload['service'] = 'Lightbulb';&lt;br /&gt;
        // Если тип нагрузки - вентилятор&lt;br /&gt;
        elseif ($load_type == 'vent') $payload['service'] = 'Fan';&lt;br /&gt;
        // Если тип нагрузки - переключатель&lt;br /&gt;
        elseif ($load_type == 'switch') $payload['service'] = 'Switch';&lt;br /&gt;
        // Если тип нагрузки не указан, считаем его выходом&lt;br /&gt;
        else $payload['service'] = 'Outlet';&lt;br /&gt;
        // Установка характеристики для реле&lt;br /&gt;
        $payload['characteristic'] = 'On';&lt;br /&gt;
        // Проверка статуса устройства&lt;br /&gt;
        if (gg($device1['LINKED_OBJECT'] . '.status')) {&lt;br /&gt;
            // Если устройство включено, устанавливаем значение true&lt;br /&gt;
            $payload['value'] = true;&lt;br /&gt;
        } else {&lt;br /&gt;
            // Если устройство выключено, устанавливаем значение false&lt;br /&gt;
            $payload['value'] = false;&lt;br /&gt;
        }&lt;br /&gt;
        // Прерывание выполнения кода для данного случая&lt;br /&gt;
        break;&lt;br /&gt;
&lt;br /&gt;
        // Если тип устройства - датчик температуры&lt;br /&gt;
    case 'sensor_temp':&lt;br /&gt;
        // Установка сервиса для датчика температуры&lt;br /&gt;
        $payload['service'] = 'TemperatureSensor';&lt;br /&gt;
        // Установка характеристики для текущей температуры&lt;br /&gt;
        $payload['characteristic'] = 'CurrentTemperature';&lt;br /&gt;
        // Получение значения температуры&lt;br /&gt;
        $payload['value'] = gg($device1['LINKED_OBJECT'] . '.value');&lt;br /&gt;
        break;&lt;br /&gt;
        // Если тип устройства - датчик CO2&lt;br /&gt;
    case 'sensor_co2':&lt;br /&gt;
        // Установка сервиса для датчика CO2&lt;br /&gt;
        $payload['service'] = 'CarbonDioxideSensor';&lt;br /&gt;
        // Установка характеристики для уровня CO2&lt;br /&gt;
        $payload['characteristic'] = 'CarbonDioxideLevel';&lt;br /&gt;
        // Получение значения уровня CO2&lt;br /&gt;
        $payload['value'] = gg($device1['LINKED_OBJECT'] . '.value');&lt;br /&gt;
&lt;br /&gt;
        // Получение максимального уровня CO2&lt;br /&gt;
        $max_level = gg($device1['LINKED_OBJECT'] . '.maxValue');&lt;br /&gt;
        if (!$max_level) {&lt;br /&gt;
            // Если максимальный уровень не указан, устанавливаем значение по умолчанию&lt;br /&gt;
            $max_level = 1200;&lt;br /&gt;
        }&lt;br /&gt;
        // Установка сервиса для датчика CO2 во втором массиве&lt;br /&gt;
        $payload2['service'] = 'CarbonDioxideSensor';&lt;br /&gt;
        // Установка характеристики для обнаружения CO2&lt;br /&gt;
        $payload2['characteristic'] = 'CarbonDioxideDetected';&lt;br /&gt;
        if ($payload['value'] &amp;gt;= $max_level) {&lt;br /&gt;
            // Если уровень CO2 превышает максимальный, устанавливаем значение обнаружения&lt;br /&gt;
            $payload2['value'] = &amp;quot;1&amp;quot;;&lt;br /&gt;
        } else {&lt;br /&gt;
            // Если уровень CO2 не превышает максимальный, устанавливаем значение отсутствия обнаружения&lt;br /&gt;
            $payload2['value'] = &amp;quot;0&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
        break;&lt;br /&gt;
        // Если тип устройства - датчик влажности&lt;br /&gt;
    case 'sensor_humidity':&lt;br /&gt;
        // Установка сервиса для датчика влажности&lt;br /&gt;
        $payload['service'] = 'HumiditySensor';&lt;br /&gt;
        // Установка характеристики для текущей относительной влажности&lt;br /&gt;
        $payload['characteristic'] = 'CurrentRelativeHumidity';&lt;br /&gt;
        // Получение значения относительной влажности&lt;br /&gt;
        $payload['value'] = gg($device1['LINKED_OBJECT'] . '.value');&lt;br /&gt;
        break;&lt;br /&gt;
        // Если тип устройства - датчик движения&lt;br /&gt;
    case 'motion':&lt;br /&gt;
        // Установка сервиса для датчика движения&lt;br /&gt;
        $payload['service'] = 'MotionSensor';&lt;br /&gt;
        // Установка характеристики для обнаружения движения&lt;br /&gt;
        $payload['characteristic'] = 'MotionDetected';&lt;br /&gt;
        if (gg($device1['LINKED_OBJECT'] . '.status')) {&lt;br /&gt;
            // Если обнаружено движение, устанавливаем значение true&lt;br /&gt;
            $payload['value'] = true;&lt;br /&gt;
        } else {&lt;br /&gt;
            // Если движение не обнаружено, устанавливаем значение false&lt;br /&gt;
            $payload['value'] = false;&lt;br /&gt;
        }&lt;br /&gt;
        break;&lt;br /&gt;
        // Если тип устройства - датчик дыма&lt;br /&gt;
    case 'smoke':&lt;br /&gt;
        // Установка сервиса для датчика дыма&lt;br /&gt;
        $payload['service'] = 'SmokeSensor';&lt;br /&gt;
        // Установка характеристики для обнаружения дыма&lt;br /&gt;
        $payload['characteristic'] = 'SmokeDetected';&lt;br /&gt;
        if (gg($device1['LINKED_OBJECT'] . '.status')) {&lt;br /&gt;
            // Если обнаружен дым, устанавливаем значение true&lt;br /&gt;
            $payload['value'] = true;&lt;br /&gt;
        } else {&lt;br /&gt;
            // Если дым не обнаружен, устанавливаем значение false&lt;br /&gt;
            $payload['value'] = false;&lt;br /&gt;
        }&lt;br /&gt;
        break;&lt;br /&gt;
        // Если тип устройства - датчик утечки&lt;br /&gt;
    case 'leak':&lt;br /&gt;
        // Установка сервиса для датчика утечки&lt;br /&gt;
        $payload['service'] = 'LeakSensor';&lt;br /&gt;
        // Установка характеристики для обнаружения утечки&lt;br /&gt;
        $payload['characteristic'] = 'LeakDetected';&lt;br /&gt;
        if (gg($device1['LINKED_OBJECT'] . '.status')) {&lt;br /&gt;
            // Если обнаружена утечка, устанавливаем значение true&lt;br /&gt;
            $payload['value'] = true;&lt;br /&gt;
        } else {&lt;br /&gt;
            // Если утечка не обнаружена, устанавливаем значение false&lt;br /&gt;
            $payload['value'] = false;&lt;br /&gt;
        }&lt;br /&gt;
        break;&lt;br /&gt;
        // Если тип устройства - датчик освещенности&lt;br /&gt;
    case 'sensor_light':&lt;br /&gt;
        // Установка сервиса для датчика освещенности&lt;br /&gt;
        $payload['service'] = 'LightSensor';&lt;br /&gt;
        // Установка характеристики для текущего уровня освещенности&lt;br /&gt;
        $payload['characteristic'] = 'CurrentAmbientLightLevel';&lt;br /&gt;
        // Получение значения уровня освещенности&lt;br /&gt;
        $payload['value'] = gg($device1['LINKED_OBJECT'] . '.value');&lt;br /&gt;
        break;&lt;br /&gt;
        // Если тип устройства - датчик открытия/закрытия&lt;br /&gt;
    case 'openclose':&lt;br /&gt;
        // Установка сервиса для датчика открытия/закрытия&lt;br /&gt;
        $payload['service'] = 'ContactSensor';&lt;br /&gt;
        // Установка характеристики для состояния датчика открытия/закрытия&lt;br /&gt;
        $payload['characteristic'] = 'ContactSensorState';&lt;br /&gt;
        // Проверка типа датчика (NO/NC)&lt;br /&gt;
        $nc = gg($device1['LINKED_OBJECT'] . '.ncno') == 'nc';&lt;br /&gt;
        // Установка значения в зависимости от типа датчика&lt;br /&gt;
        $payload['value'] = $nc ? 1 - gg($device1['LINKED_OBJECT'] . '.status') : gg($device1['LINKED_OBJECT'] . '.status');&lt;br /&gt;
        break;&lt;br /&gt;
        // Если тип устройства - открываемое устройство&lt;br /&gt;
    case 'openable':&lt;br /&gt;
        // Получение типа открываемого устройства&lt;br /&gt;
        $open_type = gg($device1['LINKED_OBJECT'] . '.openType');&lt;br /&gt;
        if ($open_type == 'gates') {&lt;br /&gt;
            // Установка сервиса для открывателя гаражных дверей&lt;br /&gt;
            $payload['service'] = 'GarageDoorOpener';&lt;br /&gt;
        } elseif ($open_type == 'door') {&lt;br /&gt;
            // Установка сервиса для двери&lt;br /&gt;
            $payload['service'] = 'Door';&lt;br /&gt;
        } elseif ($open_type == 'window') {&lt;br /&gt;
            // Установка сервиса для окна&lt;br /&gt;
            $payload['service'] = 'Window';&lt;br /&gt;
        } elseif ($open_type == 'curtains') {&lt;br /&gt;
            // Установка сервиса для жалюзи&lt;br /&gt;
            $payload['service'] = 'WindowCovering';&lt;br /&gt;
        } elseif ($open_type == 'shutters') {&lt;br /&gt;
            // Установка сервиса для штор&lt;br /&gt;
            $payload['service'] = 'WindowCovering';&lt;br /&gt;
        }&lt;br /&gt;
        if ($payload['service']) {&lt;br /&gt;
            if ($open_type == 'gates') {&lt;br /&gt;
                if (gg($device1['LINKED_OBJECT'] . '.status')) {&lt;br /&gt;
                    // Если дверь открыта, устанавливаем значение 1&lt;br /&gt;
                    $payload['value'] = &amp;quot;1&amp;quot;;&lt;br /&gt;
                } else {&lt;br /&gt;
                    // Если дверь закрыта, устанавливаем значение 0&lt;br /&gt;
                    $payload['value'] = &amp;quot;0&amp;quot;;&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                // Установка характеристики для текущего состояния двери&lt;br /&gt;
                $payload['characteristic'] = 'CurrentDoorState';&lt;br /&gt;
                if ($debug_sync) {&lt;br /&gt;
                    // Вывод сообщения для отладки&lt;br /&gt;
                    DebMes(&amp;quot;MQTT to_set : &amp;quot; . json_encode($payload), 'homebridge');&lt;br /&gt;
                }&lt;br /&gt;
                // Отправка данных в Homebridge&lt;br /&gt;
                sg('HomeBridge.to_set', json_encode($payload));&lt;br /&gt;
                /*&lt;br /&gt;
            if ($debug_sync) {&lt;br /&gt;
            // Вывод сообщения для отладки&lt;br /&gt;
                DebMes(&amp;quot;MQTT to_set : &amp;quot; . json_encode($payload), 'homebridge');&lt;br /&gt;
            }&lt;br /&gt;
            // Установка характеристики для целевого состояния двери&lt;br /&gt;
            $payload['characteristic'] = 'TargetDoorState';&lt;br /&gt;
            */&lt;br /&gt;
&lt;br /&gt;
                // Удаление сервиса из массива&lt;br /&gt;
                unset($payload['service']);&lt;br /&gt;
                // Если тип открываемого устройства - дверь, окно, жалюзи или шторы&lt;br /&gt;
            } elseif ($open_type == 'door' || $open_type == 'window' || $open_type == 'curtains' || $open_type == 'shutters') {&lt;br /&gt;
                // Установка характеристики для текущей позиции&lt;br /&gt;
                $payload['characteristic'] = 'CurrentPosition';&lt;br /&gt;
                if (gg($device1['LINKED_OBJECT'] . '.status')) {&lt;br /&gt;
                    // Если устройство закрыто, устанавливаем значение 0&lt;br /&gt;
                    $payload['value'] = &amp;quot;0&amp;quot;;&lt;br /&gt;
                } else {&lt;br /&gt;
                    // Если устройство открыто, устанавливаем значение 100&lt;br /&gt;
                    $payload['value'] = &amp;quot;100&amp;quot;;&lt;br /&gt;
                }&lt;br /&gt;
                if ($debug_sync) {&lt;br /&gt;
                    // Вывод сообщения для отладки&lt;br /&gt;
                    DebMes(&amp;quot;MQTT to_set : &amp;quot; . json_encode($payload), 'homebridge');&lt;br /&gt;
                }&lt;br /&gt;
                // Отправка данных в Homebridge&lt;br /&gt;
                sg('HomeBridge.to_set', json_encode($payload));&lt;br /&gt;
                // Установка характеристики для целевой позиции&lt;br /&gt;
                $payload['characteristic'] = 'TargetPosition';&lt;br /&gt;
                // Отправка данных в Homebridge&lt;br /&gt;
                sg('HomeBridge.to_set', json_encode($payload));&lt;br /&gt;
                // Удаление сервиса из массива&lt;br /&gt;
                unset($payload['service']);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        break;&lt;br /&gt;
        // Если тип устройства - RGB лампа&lt;br /&gt;
    case 'rgb':&lt;br /&gt;
        // Установка сервиса для лампы&lt;br /&gt;
        $payload['service'] = 'Lightbulb';&lt;br /&gt;
        // Добавление лампы в Homebridge&lt;br /&gt;
        sg('HomeBridge.to_add', json_encode($payload));&lt;br /&gt;
&lt;br /&gt;
        // Установка характеристики для включения/выключения&lt;br /&gt;
        $payload['characteristic'] = 'On';&lt;br /&gt;
        if (gg($device1['LINKED_OBJECT'] . '.status')) {&lt;br /&gt;
            // Если лампа включена, устанавливаем значение true&lt;br /&gt;
            $payload['value'] = true;&lt;br /&gt;
        } else {&lt;br /&gt;
            // Если лампа выключена, устанавливаем значение false&lt;br /&gt;
            $payload['value'] = false;&lt;br /&gt;
        }&lt;br /&gt;
        // Отправка данных в Homebridge&lt;br /&gt;
        sg('HomeBridge.to_set', json_encode($payload));&lt;br /&gt;
&lt;br /&gt;
        // Установка характеристики для оттенка&lt;br /&gt;
        $payload['characteristic'] = 'Hue';&lt;br /&gt;
        // Получение значения оттенка&lt;br /&gt;
        $payload['value'] = gg($device1['LINKED_OBJECT'] . '.hue');&lt;br /&gt;
        // Отправка данных в Homebridge&lt;br /&gt;
        sg('HomeBridge.to_set', json_encode($payload));&lt;br /&gt;
&lt;br /&gt;
        // Установка характеристики для насыщенности&lt;br /&gt;
        $payload['characteristic'] = 'Saturation';&lt;br /&gt;
        // Получение значения насыщенности&lt;br /&gt;
        $payload['value'] = gg($device1['LINKED_OBJECT'] . '.saturation');&lt;br /&gt;
        // Отправка данных в Homebridge&lt;br /&gt;
        sg('HomeBridge.to_set', json_encode($payload));&lt;br /&gt;
&lt;br /&gt;
        // Установка характеристики для яркости&lt;br /&gt;
        $payload['characteristic'] = 'Brightness';&lt;br /&gt;
        // Получение значения яркости&lt;br /&gt;
        $payload['value'] = gg($device1['LINKED_OBJECT'] . '.brightness');&lt;br /&gt;
        // Отправка данных в Homebridge&lt;br /&gt;
        sg('HomeBridge.to_set', json_encode($payload));&lt;br /&gt;
        // Удаление сервиса из массива&lt;br /&gt;
        unset($payload['service']);&lt;br /&gt;
        break;&lt;br /&gt;
        // Если тип устройства - LED лампа&lt;br /&gt;
    case 'ledlamp':&lt;br /&gt;
        // Установка сервиса для лампы&lt;br /&gt;
        $payload['service'] = 'Lightbulb';&lt;br /&gt;
        // Добавление лампы в Homebridge&lt;br /&gt;
        sg('HomeBridge.to_add', json_encode($payload));&lt;br /&gt;
&lt;br /&gt;
        // Установка характеристики для включения/выключения&lt;br /&gt;
        $payload['characteristic'] = 'On';&lt;br /&gt;
        if (gg($device1['LINKED_OBJECT'] . '.status')) {&lt;br /&gt;
            // Если лампа включена, устанавливаем значение true&lt;br /&gt;
            $payload['value'] = true;&lt;br /&gt;
        } else {&lt;br /&gt;
            // Если лампа выключена, устанавливаем значение false&lt;br /&gt;
            $payload['value'] = false;&lt;br /&gt;
        }&lt;br /&gt;
        // Отправка данных в Homebridge&lt;br /&gt;
        sg('HomeBridge.to_set', json_encode($payload));&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        // Установка характеристики для яркости&lt;br /&gt;
        $payload['characteristic'] = 'Brightness';&lt;br /&gt;
        // Получение значения яркости&lt;br /&gt;
        $payload['value'] = gg($device1['LINKED_OBJECT'] . '.brightness');&lt;br /&gt;
        // Отправка данных в Homebridge&lt;br /&gt;
        sg('HomeBridge.to_set', json_encode($payload));&lt;br /&gt;
        // Удаление сервиса из массива&lt;br /&gt;
        unset($payload['service']);&lt;br /&gt;
        break;&lt;br /&gt;
&lt;br /&gt;
        // Если тип устройства - термостат&lt;br /&gt;
    case 'thermostat':&lt;br /&gt;
        // Установка характеристики для текущей температуры&lt;br /&gt;
        $payload['characteristic'] = 'CurrentTemperature';&lt;br /&gt;
        // Получение значения текущей температуры&lt;br /&gt;
        $payload['value'] = gg($device1['LINKED_OBJECT'] . '.value');&lt;br /&gt;
        // Отправка данных в Homebridge&lt;br /&gt;
        sg('HomeBridge.to_set', json_encode($payload));&lt;br /&gt;
&lt;br /&gt;
        // Установка характеристики для целевой температуры&lt;br /&gt;
        $payload['characteristic'] = 'TargetTemperature';&lt;br /&gt;
        // Получение значения целевой температуры&lt;br /&gt;
        $payload['value'] = gg($device1['LINKED_OBJECT'] . '.currentTargetValue');&lt;br /&gt;
        // Отправка данных в Homebridge&lt;br /&gt;
        sg('HomeBridge.to_set', json_encode($payload));&lt;br /&gt;
        // Установка характеристики для текущего состояния обогрева/охлаждения&lt;br /&gt;
        $payload['characteristic'] = 'CurrentHeatingCoolingState'; //off = 0, heat = 1, and cool = 2, auto = 3&lt;br /&gt;
        if (!gg($device1['LINKED_OBJECT'] . '.disabled')) {&lt;br /&gt;
            if (gg($device1['LINKED_OBJECT'] . '.status')) {&lt;br /&gt;
                // Если термостат включен, устанавливаем значение 1 (нагрев)&lt;br /&gt;
                $payload['value'] = 1;&lt;br /&gt;
            } else {&lt;br /&gt;
                // Если термостат выключен, устанавливаем значение 2 (охлаждение)&lt;br /&gt;
                $payload['value'] = 2;&lt;br /&gt;
            }&lt;br /&gt;
        } else {&lt;br /&gt;
            // Если термостат отключен, устанавливаем значение 0 (выключено)&lt;br /&gt;
            $payload['value'] = 0;&lt;br /&gt;
        }&lt;br /&gt;
        break;&lt;br /&gt;
        /*&lt;br /&gt;
    // Если тип устройства - датчик батареи&lt;br /&gt;
case 'sensor_battery':&lt;br /&gt;
    // Установка сервиса для датчика батареи&lt;br /&gt;
    $payload['service']='BatteryService'; &lt;br /&gt;
    // Добавление датчика батареи в Homebridge&lt;br /&gt;
    sg('HomeBridge.to_add',json_encode($payload)); &lt;br /&gt;
    // Характеристика для уровня заряда батареи&lt;br /&gt;
    // Characteristic.BatteryLevel; &lt;br /&gt;
    // Характеристика для состояния зарядки&lt;br /&gt;
    // Characteristic.ChargingState; 0 - NOT_CHARGING, 1 - CHARGING, 2 - NOT_CHARGEABLE &lt;br /&gt;
    // Характеристика для состояния низкого уровня батареи&lt;br /&gt;
    // Characteristic.StatusLowBattery; &lt;br /&gt;
    // Установка характеристики для уровня заряда батареи&lt;br /&gt;
    $payload['characteristic'] = 'BatteryLevel'; &lt;br /&gt;
    // Получение значения уровня заряда батареи&lt;br /&gt;
    $payload['value']=gg($device1['LINKED_OBJECT'].'.value'); &lt;br /&gt;
    // Отправка данных в Homebridge&lt;br /&gt;
    sg('HomeBridge.to_set',json_encode($payload)); &lt;br /&gt;
&lt;br /&gt;
    // Установка характеристики для состояния зарядки&lt;br /&gt;
    $payload['characteristic'] = 'ChargingState'; &lt;br /&gt;
    // Установка значения для состояния зарядки (2 - NOT_CHARGEABLE)&lt;br /&gt;
    $payload['value']=2; &lt;br /&gt;
    // Отправка данных в Homebridge&lt;br /&gt;
    sg('HomeBridge.to_set',json_encode($payload)); &lt;br /&gt;
&lt;br /&gt;
    // Установка характеристики для состояния низкого уровня батареи&lt;br /&gt;
    $payload['characteristic'] = 'StatusLowBattery'; &lt;br /&gt;
    // Установка значения в зависимости от нормального значения батареи&lt;br /&gt;
    $payload['value']=gg($device1['LINKED_OBJECT'].'.normalValue') ? 0 : 1; &lt;br /&gt;
    // Отправка данных в Homebridge&lt;br /&gt;
    sg('HomeBridge.to_set',json_encode($payload)); &lt;br /&gt;
&lt;br /&gt;
    break;&lt;br /&gt;
    */&lt;br /&gt;
        // Если тип устройства не соответствует ни одному из предыдущих случаев&lt;br /&gt;
    default:&lt;br /&gt;
        // Формирование пути к дополнению для обработки данного типа устройства&lt;br /&gt;
        $addon_path = dirname(__FILE__) . '/addons/' . $device1['TYPE'] . '_homebridgeSendUpdate.php';&lt;br /&gt;
        // Проверка существования файла дополнения&lt;br /&gt;
        if (file_exists($addon_path)) {&lt;br /&gt;
            // Подключение файла дополнения для обработки данного типа устройства&lt;br /&gt;
            require($addon_path);&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
// Проверка наличия сервиса в массиве $payload&lt;br /&gt;
if (isset($payload['service'])) {&lt;br /&gt;
    // Формирование имени ключа для кэша&lt;br /&gt;
    $hmName = 'hmb:' . $payload['name'];&lt;br /&gt;
    // Кодирование данных $payload в формате JSON&lt;br /&gt;
    $payload_encoded = json_encode($payload);&lt;br /&gt;
    // Вычисление хеш-кода данных $payload&lt;br /&gt;
    $hmValue = md5($payload_encoded);&lt;br /&gt;
    // Сравнение хеш-кода данных $payload с хеш-кодом из кэша&lt;br /&gt;
    if (checkFromCache($hmName) != $hmValue) {&lt;br /&gt;
        // Если хеш-коды не совпадают, сохраняем новый хеш-код в кэш&lt;br /&gt;
        saveToCache($hmName, $hmValue);&lt;br /&gt;
        // Если включена отладка, выводим сообщение для отладки&lt;br /&gt;
        if ($debug_sync) {&lt;br /&gt;
            DebMes(&amp;quot;MQTT to_set : &amp;quot; . $payload_encoded, 'homebridge');&lt;br /&gt;
        }&lt;br /&gt;
        // Отправка данных в Homebridge&lt;br /&gt;
        sg('HomeBridge.to_set', $payload_encoded);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
// Проверка наличия сервиса во втором массиве $payload2&lt;br /&gt;
if (isset($payload2['service'])) {&lt;br /&gt;
    // Формирование имени ключа для кэша&lt;br /&gt;
    $hmName = 'hmb:' . $payload2['name'];&lt;br /&gt;
    // Кодирование данных $payload2 в формате JSON&lt;br /&gt;
    $payload2_encoded = json_encode($payload2);&lt;br /&gt;
    // Вычисление хеш-кода данных $payload2&lt;br /&gt;
    $hmValue = md5($payload2_encoded);&lt;br /&gt;
    // Сравнение хеш-кода данных $payload2 с хеш-кодом из кэша&lt;br /&gt;
    if (checkFromCache($hmName) != $hmValue) {&lt;br /&gt;
        // Если хеш-коды не совпадают, сохраняем новый хеш-код в кэш&lt;br /&gt;
        saveToCache($hmName, $hmValue);&lt;br /&gt;
        // Если включена отладка, выводим сообщение для отладки&lt;br /&gt;
        if ($debug_sync) {&lt;br /&gt;
            DebMes(&amp;quot;MQTT to_set : &amp;quot; . $payload2_encoded, 'homebridge');&lt;br /&gt;
        }&lt;br /&gt;
        // Отправка данных в Homebridge&lt;br /&gt;
        sg('HomeBridge.to_set', $payload2_encoded);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Elmax</name></author>
	</entry>
	<entry>
		<id>https://mdminfo.ru/index.php?title=Modules/devices&amp;diff=2102</id>
		<title>Modules/devices</title>
		<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=Modules/devices&amp;diff=2102"/>
		<updated>2024-04-06T23:24:03Z</updated>

		<summary type="html">&lt;p&gt;Elmax: описание homebridgeSync.inc.php&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Modules/devices|/modules/devices]]&lt;br /&gt;
&lt;br /&gt;
[[Папки и файлы|ᐂ В корневой раздел]]  [[Modules|ᐃ на директорию выше]][https://github.com/sergejey/majordomo/tree/master/modules/devices | Перейти в директорию на github]&lt;br /&gt;
===== Папки директории '''/modules/devices''' =====&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/addons|'''addons''']] - пока папка не имеет описания&lt;br /&gt;
&lt;br /&gt;
===== Файлы директории '''/modules/devices''' =====&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/Rooms_onActivity_php | '''Rooms_onActivity.php''']] - вызывается методом onActivity, класса Rooms. Содерит функции для анализа данных об активности в помещениях и принятия соответствующих действий на основе этой информации.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/Rooms_onIdle_php | '''Rooms_onIdle.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/Rooms_updateActivityStatus_php | '''Rooms_updateActivityStatus.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SButtons_pressed_php | '''SButtons_pressed.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCameras_motionDetected_php | '''SCameras_motionDetected.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCameras_takeSeries_php | '''SCameras_takeSeries.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCameras_takeSnapshot_php | '''SCameras_takeSnapshot.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCameras_updatePreview_php | '''SCameras_updatePreview.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SControllers_switch_php | '''SControllers_switch.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SControllers_turnOff_php | '''SControllers_turnOff.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SControllers_turnOn_php | '''SControllers_turnOn.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCounters_pulseDetected_php | '''SCounters_pulseDetected.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCounters_refreshStats_php | '''SCounters_refreshStats.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCounters_valueUpdated_php | '''SCounters_valueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCounters_valueWorkUpdated_php | '''SCounters_valueWorkUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDevices_batteryLevelUpdated_php | '''SDevices_batteryLevelUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDevices_keepAlive_php | '''SDevices_keepAlive.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDevices_logicAction_php | '''SDevices_logicAction.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDevices_statusUpdated_php | '''SDevices_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_levelUpdated_php | '''SDimmers_levelUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_levelWorkUpdated_php | '''SDimmers_levelWorkUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_setLevel_php | '''SDimmers_setLevel.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_statusUpdated_php | '''SDimmers_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_turnOff_php | '''SDimmers_turnOff.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_turnOn_php | '''SDimmers_turnOn.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SGroups_statusUpdated_php | '''SGroups_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SGroups_switch_php | '''SGroups_switch.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SGroups_turnOff_php | '''SGroups_turnOff.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SGroups_turnOn_php | '''SGroups_turnOn.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLeak_alert_php | '''SLeak_alert.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLeak_blockSensor_php | '''SLeak_blockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLeak_statusUpdated_php | '''SLeak_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLeak_unblockSensor_php | '''SLeak_unblockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMotions_blockSensor_php | '''SMotions_blockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMotions_motionDetected_php | '''SMotions_motionDetected.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMotions_unblockSensor_php | '''SMotions_unblockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenClose_blockSensor_php | '''SOpenClose_blockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenClose_statusUpdated_php | '''SOpenClose_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenClose_unblockSensor_php | '''SOpenClose_unblockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_close_php | '''SOpenable_close.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_levelUpdated_php | '''SOpenable_levelUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_open_php | '''SOpenable_open.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_setLevel_php | '''SOpenable_setLevel.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_statusUpdated_php | '''SOpenable_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_switch_php | '''SOpenable_switch.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SPowerSensors_loadStatusChanged_php | '''SPowerSensors_loadStatusChanged.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SPowerSensors_valueUpdated_php | '''SPowerSensors_valueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SRGB_colorUpdated_php | '''SRGB_colorUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SRGB_setColor_php | '''SRGB_setColor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SRGB_turnOff_php | '''SRGB_turnOff.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SRGB_turnOn_php | '''SRGB_turnOn.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSensors_alert_php | '''SSensors_alert.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSensors_blockSensor_php | '''SSensors_blockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSensors_unblockSensor_php | '''SSensors_unblockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSensors_valueUpdated_php | '''SSensors_valueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSmoke_alert_php | '''SSmoke_alert.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSmoke_blockSensor_php | '''SSmoke_blockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSmoke_statusUpdated_php | '''SSmoke_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSmoke_unblockSensor_php | '''SSmoke_unblockSensor.php''']] -  &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_disable_php | '''SThermostats_disable.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_enable_php | '''SThermostats_enable.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_setTargetTemperature_php | '''SThermostats_setTargetTemperature.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_statusUpdated_php | '''SThermostats_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_switchEnable_php | '''SThermostats_switchEnable.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_tempDown_php | '''SThermostats_tempDown.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_tempUp_php | '''SThermostats_tempUp.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_turnOff_php | '''SThermostats_turnOff.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_turnOn_php | '''SThermostats_turnOn.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_valueUpdated_php | '''SThermostats_valueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_configUpdated_php | '''SAirConditioners_configUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_fanSpeedUpdated_php | '''SAirConditioners_fanSpeedUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_setFanSpeedMode_php | '''SAirConditioners_setFanSpeedMode.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_setTargetTemperature_php | '''SAirConditioners_setTargetTemperature.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_setThermostatMode_php | '''SAirConditioners_setThermostatMode.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_tempDown_php | '''SAirConditioners_tempDown.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_tempUp_php | '''SAirConditioners_tempUp.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_thermostatUpdated_php | '''SAirConditioners_thermostatUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLightSensors_periodMinValueUpdated_php | '''SLightSensors_periodMinValueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLightSensors_valueUpdated_php | '''SLightSensors_valueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMedias_pause_php | '''SMedias_pause.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMedias_setChannel_php | '''SMedias_setChannel.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMedias_setSource_php | '''SMedias_setSource.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMedias_setVolume_php | '''SMedias_setVolume.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/STVs_pause_php | '''STVs_pause.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/STVs_setChannel_php | '''STVs_setChannel.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/STVs_setSource_php | '''STVs_setSource.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/STVs_setVolume_php | '''STVs_setVolume.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SVacuums_pause_php | '''SVacuums_pause.php''']] - &lt;br /&gt;
&lt;br /&gt;
'''app''' -  пока файл не понятен, его назначение так-же&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/darknessmode_activate_php | '''darknessmode_activate.php''']] - для активации устройств, связанных с группой &amp;quot;groupSunset&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/darknessmode_deactivate_php | '''darknessmode_deactivate.php''']] - для деактивации устройств, связанных с группой &amp;quot;groupSunset&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_class_php | '''devices.class.php''']] - содержит набор функций для взаимодействия с устройствами в рамках проекта. Он обеспечивает взаимодействие между устройствами, базой данных, внешними API и другими частями системы, такими как управление группами устройств, связями между ними и действиями, которые могут быть выполнены над устройствами.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_edit_inc_php | '''devices_edit.inc.php''']] - содержит функции и код, связанный с редактированием устройств в проекте. Он включает в себя обработку форм, сохранение данных и другие операции, связанные с редактированием устройств.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_links_inc_php | '''devices_links.inc.php''']] - содержит функции для работы с связями между устройствами. Он включает в себя обработку создания, обновления и удаления связей, а также работу с деталями связей и другие операции, связанные с управлением связями устройств.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_links_actions_inc_php | '''devices_links_actions.inc.php''']] - содержит функции для обработки действий, связанных с устройствами. Он выполняет действия, такие как включение, выключение, установка цвета и передача значений объектов. Также файл подключает дополнительные скрипты для обработки действий из директории [[Modules/devices/addons|'''addons''']]&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_manage_groups_inc_php | '''devices_manage_groups.inc.php''']] - содержит функции для управления группами устройств. Он включает в себя операции по созданию, редактированию и удалению групп устройств, обновление объектов группы, очистку кэша значений, а также перенаправление на соответствующие страницы просмотра.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_manage_schedule_inc_php | '''devices_manage_schedule.inc.php''']] -  этот файл включает в себя операции по созданию, редактированию и удалению расписаний для устройств, а также операции по привязке устройств к определенным временным интервалам и управлению их работой в соответствии с расписанием.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_quick_edit_inc_php | '''devices_quick_edit.inc.php''']] - содержит код для сщздания/редактирования устройств. Он обеспечивает быстрый доступ к основным параметрам устройств, таким как имя, описание, состояние и другие атрибуты, позволяя пользователям внести изменения на странице редактирования.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_schedule_inc_php | '''devices_schedule.inc.php''']] - этот файл предоставляет функциональность для управления расписаниями устройств, включая создание, редактирование и удаление расписаний, а также привязку устройств к определенным временным интервалам и управление их работой в соответствии с расписанием.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_search_inc_php | '''devices_search.inc.php''']] -  содержит функции для поиска устройств в системе. Он предоставляет возможность осуществлять поиск устройств по различным критериям, таким как имя устройства, тип, статус и другие атрибуты. Кроме того, файл может включать функции для фильтрации результатов поиска и отображения найденной информации о устройствах.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_structure_inc_php | '''devices_structure.inc.php''']] - определяет структуру свойств и методов, которыми будут наделены устройства в системе. Он содержит описание основных характеристик устройств, таких как их тип, статус, параметры, возможные действия и другие атрибуты. Кроме того, данный файл определяет методы, которые позволяют взаимодействовать с устройствами, управлять ими и получать информацию о их состоянии.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_structure_links_inc_php | '''devices_structure_links.inc.php''']] - файл определяет структуру связей между устройствами в системе. Он содержит описание основных характеристик связей, таких как тип связи, устройства, которые связаны, параметры связи и другие атрибуты. Кроме того, данный файл определяет методы для управления связями между устройствами, включая создание новых связей, редактирование существующих и удаление ненужных связей.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_widgets_js_php | '''devices_widgets.js.php''']] - файл с примесью js, его я не знаю совсем, поэтому подождем описания знающих, а по ссылке будет страница с кодом без комментариев.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/econommode_activate_php | '''econommode_activate.php''']] - метод активации режима экономии энергии EconomMode.activate. Класс OperationalModes, обьект EconomMode.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/econommode_deactivate_php | '''econommode_deactivate.php''']] - метод деактивации режима экономии энергии EconomMode.activate. Класс OperationalModes, обьект EconomMode.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/homebridgeSync_inc_php | '''homebridgeSync.inc.php''']] - содержит функции для синхронизации устройств и их состояний с платформой Homebridge, которая обеспечивает интеграцию умного дома с устройствами Apple HomeKit. Код в этом файле вероятно отвечает за обновление информации об устройствах и их состояниях в Homebridge, чтобы обеспечить соответствие между системой умного дома и платформой HomeKit.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/nightmode_activate_php | '''nightmode_activate.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/nobodyhomemode_activate_php | '''nobodyhomemode_activate.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/nobodyhomemode_deactivate_php | '''nobodyhomemode_deactivate.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/processCommand_inc_php | '''processCommand.inc.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/processHomebridgeMQTT_inc_php | '''processHomebridgeMQTT.inc.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/system_checkstate_php | '''system_checkstate.php''']] -&lt;/div&gt;</summary>
		<author><name>Elmax</name></author>
	</entry>
	<entry>
		<id>https://mdminfo.ru/index.php?title=Modules/devices/homebridgeSync_inc_php&amp;diff=2101</id>
		<title>Modules/devices/homebridgeSync inc php</title>
		<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=Modules/devices/homebridgeSync_inc_php&amp;diff=2101"/>
		<updated>2024-04-06T23:22:58Z</updated>

		<summary type="html">&lt;p&gt;Elmax: + файл homebridgeSync.inc.php&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Modules/devices/homebridgeSync_inc_php | homebridgeSync.inc.php]]&lt;br /&gt;
[[Папки и файлы|ᐂ В корневой раздел]]  [[Modules/devices|ᐃ В директорию расположения файла]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;?php&lt;br /&gt;
    // Благодарность автору https://github.com/cflurin/homebridge-mqtt&lt;br /&gt;
    // Если определено DISABLE_SIMPLE_DEVICES в файле конфигурации и равно 1, прекращаем выполнение скрипта&lt;br /&gt;
    if (defined('DISABLE_SIMPLE_DEVICES') &amp;amp;&amp;amp; DISABLE_SIMPLE_DEVICES == 1) return;&lt;br /&gt;
    // Переменная для отладки синхронизации, инициализируется значением 0&lt;br /&gt;
    $debug_sync = 0;&lt;br /&gt;
    // Инициализация переменной $qry значением &amp;quot;1&amp;quot;&lt;br /&gt;
    $qry = &amp;quot;1&amp;quot;;&lt;br /&gt;
    // Если переменная $device_id определена&lt;br /&gt;
    if ($device_id) {&lt;br /&gt;
        // Добавляем к $qry условие для выборки по ID устройства&lt;br /&gt;
        $qry .= &amp;quot; AND ID=&amp;quot; . $device_id;&lt;br /&gt;
    }&lt;br /&gt;
    // Выполняем SQL запрос для выборки устройств&lt;br /&gt;
    $devices = SQLSelect(&amp;quot;SELECT * FROM devices WHERE $qry&amp;quot;);&lt;br /&gt;
    // Подсчитываем общее количество устройств&lt;br /&gt;
    $total = count($devices);&lt;br /&gt;
    // Выводим сообщение о синхронизации устройств&lt;br /&gt;
    DebMes(&amp;quot;Syncing devices (total: $total)&amp;quot;, 'homebridge');&lt;br /&gt;
    // Начинаем цикл по всем устройствам&lt;br /&gt;
    for ($i = 0; $i &amp;lt; $total; $i++) {&lt;br /&gt;
&lt;br /&gt;
        // Если у устройства нет связанного объекта&lt;br /&gt;
        if ($devices[$i]['LINKED_OBJECT'] == '') {&lt;br /&gt;
            // Пропускаем текущую итерацию цикла&lt;br /&gt;
            continue;&lt;br /&gt;
        }&lt;br /&gt;
        // Инициализируем массив $payload&lt;br /&gt;
        $payload = array();&lt;br /&gt;
        // Добавляем в $payload имя связанного объекта&lt;br /&gt;
        $payload['name'] = $devices[$i]['LINKED_OBJECT'];&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        // Если устройство является системным или архивировано&lt;br /&gt;
        if ($devices[$i]['SYSTEM_DEVICE'] || $devices[$i]['ARCHIVED']) {&lt;br /&gt;
            // Если включена отладка синхронизации&lt;br /&gt;
            if ($debug_sync) {&lt;br /&gt;
                // Выводим сообщение о удалении устройства&lt;br /&gt;
                DebMes(&amp;quot;HomeBridge.to_remove: &amp;quot; . json_encode($payload), 'homebridge');&lt;br /&gt;
            }&lt;br /&gt;
            // Отправляем команду на удаление устройства&lt;br /&gt;
            sg('HomeBridge.to_remove', json_encode($payload));&lt;br /&gt;
            // Пропускаем текущую итерацию цикла&lt;br /&gt;
            continue;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // Если включена принудительная перезагрузка&lt;br /&gt;
        if ($force_refresh) {&lt;br /&gt;
            // Если включена отладка синхронизации&lt;br /&gt;
            if ($debug_sync) {&lt;br /&gt;
                // Выводим сообщение о удалении устройства&lt;br /&gt;
                DebMes(&amp;quot;HomeBridge.to_remove: &amp;quot; . json_encode($payload), 'homebridge');&lt;br /&gt;
            }&lt;br /&gt;
            // Отправляем команду на удаление устройства&lt;br /&gt;
            sg('HomeBridge.to_remove', json_encode($payload));&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // Добавляем в $payload имя сервиса, обрабатывая заголовок устройства&lt;br /&gt;
        $payload['service_name'] = processTitle($devices[$i]['TITLE']);&lt;br /&gt;
&lt;br /&gt;
        // Начинаем оператор switch для определения типа устройства&lt;br /&gt;
        switch ($devices[$i]['TYPE']) {&lt;br /&gt;
                // Если тип устройства - реле&lt;br /&gt;
            case 'relay':&lt;br /&gt;
                // Получаем тип нагрузки&lt;br /&gt;
                $load_type = gg($devices[$i]['LINKED_OBJECT'] . '.loadType');&lt;br /&gt;
                // Если тип нагрузки - свет, устанавливаем сервис &amp;quot;Lightbulb&amp;quot;&lt;br /&gt;
                if ($load_type == 'light') $payload['service'] = 'Lightbulb';&lt;br /&gt;
                // Если тип нагрузки - вентиляция, устанавливаем сервис &amp;quot;Fan&amp;quot;&lt;br /&gt;
                elseif ($load_type == 'vent') $payload['service'] = 'Fan';&lt;br /&gt;
                // Если тип нагрузки - переключатель, устанавливаем сервис &amp;quot;Switch&amp;quot;&lt;br /&gt;
                elseif ($load_type == 'switch') $payload['service'] = 'Switch';&lt;br /&gt;
                // В противном случае устанавливаем сервис &amp;quot;Outlet&amp;quot;&lt;br /&gt;
                else                          $payload['service'] = 'Outlet';&lt;br /&gt;
                // Отправляем команду на добавление устройства&lt;br /&gt;
                sg('HomeBridge.to_add', json_encode($payload));&lt;br /&gt;
&lt;br /&gt;
                // Устанавливаем характеристику &amp;quot;On&amp;quot;&lt;br /&gt;
                $payload['characteristic'] = 'On';&lt;br /&gt;
                // Если статус устройства активен&lt;br /&gt;
                if (gg($devices[$i]['LINKED_OBJECT'] . '.status')) {&lt;br /&gt;
                    // Устанавливаем значение характеристики &amp;quot;On&amp;quot; в true&lt;br /&gt;
                    $payload['value'] = true;&lt;br /&gt;
                    // В противном случае&lt;br /&gt;
                } else {&lt;br /&gt;
                    // Устанавливаем значение характеристики &amp;quot;On&amp;quot; в false&lt;br /&gt;
                    $payload['value'] = false;&lt;br /&gt;
                }&lt;br /&gt;
                // Отправляем команду на установку значения характеристики&lt;br /&gt;
                sg('HomeBridge.to_set', json_encode($payload));&lt;br /&gt;
                // Выходим из оператора switch&lt;br /&gt;
                break;&lt;br /&gt;
                // Если тип устройства - открываемый&lt;br /&gt;
            case 'openable':&lt;br /&gt;
                // Получаем тип открытия&lt;br /&gt;
                $open_type = gg($devices[$i]['LINKED_OBJECT'] . '.openType');&lt;br /&gt;
                // Если тип открытия - ворота&lt;br /&gt;
                if ($open_type == 'gates') {&lt;br /&gt;
                    // Устанавливаем сервис &amp;quot;GarageDoorOpener&amp;quot;&lt;br /&gt;
                    $payload['service'] = 'GarageDoorOpener';&lt;br /&gt;
                    // Если тип открытия - дверь&lt;br /&gt;
                } elseif ($open_type == 'door') {&lt;br /&gt;
                    // Устанавливаем сервис &amp;quot;Door&amp;quot;&lt;br /&gt;
                    $payload['service'] = 'Door';&lt;br /&gt;
                    // Если тип открытия - окно&lt;br /&gt;
                } elseif ($open_type == 'window') {&lt;br /&gt;
                    // Устанавливаем сервис &amp;quot;Window&amp;quot;&lt;br /&gt;
                    $payload['service'] = 'Window';&lt;br /&gt;
                    // Если тип открытия - шторы&lt;br /&gt;
                } elseif ($open_type == 'curtains') {&lt;br /&gt;
                    // Устанавливаем сервис &amp;quot;WindowCovering&amp;quot;&lt;br /&gt;
                    $payload['service'] = 'WindowCovering';&lt;br /&gt;
                    // Если тип открытия - жалюзи&lt;br /&gt;
                } elseif ($open_type == 'shutters') {&lt;br /&gt;
                    // Устанавливаем сервис &amp;quot;WindowCovering&amp;quot;&lt;br /&gt;
                    $payload['service'] = 'WindowCovering';&lt;br /&gt;
                }&lt;br /&gt;
                // Если сервис установлен&lt;br /&gt;
                if ($payload['service']) {&lt;br /&gt;
                    // Отправляем команду на добавление устройства&lt;br /&gt;
                    sg('HomeBridge.to_add', json_encode($payload));&lt;br /&gt;
                    // Если тип открытия - ворота&lt;br /&gt;
                    if ($open_type == 'gates') {&lt;br /&gt;
                        // Устанавливаем характеристику &amp;quot;CurrentDoorState&amp;quot;&lt;br /&gt;
                        $payload['characteristic'] = 'CurrentDoorState';&lt;br /&gt;
                        // Если статус устройства активен&lt;br /&gt;
                        if (gg($devices[$i]['LINKED_OBJECT'] . '.status')) {&lt;br /&gt;
                            // Устанавливаем значение характеристики &amp;quot;CurrentDoorState&amp;quot; в &amp;quot;1&amp;quot;&lt;br /&gt;
                            $payload['value'] = &amp;quot;1&amp;quot;;&lt;br /&gt;
                            // В противном случае&lt;br /&gt;
                        } else {&lt;br /&gt;
                            // Устанавливаем значение характеристики &amp;quot;CurrentDoorState&amp;quot; в &amp;quot;0&amp;quot;&lt;br /&gt;
                            $payload['value'] = &amp;quot;0&amp;quot;;&lt;br /&gt;
                        }&lt;br /&gt;
                        // Отправляем команду на установку значения характеристики&lt;br /&gt;
                        sg('HomeBridge.to_set', json_encode($payload));&lt;br /&gt;
                        // Устанавливаем характеристику &amp;quot;TargetDoorState&amp;quot;&lt;br /&gt;
                        $payload['characteristic'] = 'TargetDoorState';&lt;br /&gt;
                        // Устанавливаем значение характеристики &amp;quot;TargetDoorState&amp;quot; в &amp;quot;1&amp;quot;&lt;br /&gt;
                        $payload['value'] = &amp;quot;1&amp;quot;;&lt;br /&gt;
                        // Отправляем команду на установку значения характеристики&lt;br /&gt;
                        sg('HomeBridge.to_set', json_encode($payload));&lt;br /&gt;
                        // Если тип открытия - дверь, окно, шторы или жалюзи&lt;br /&gt;
                    } elseif ($open_type == 'door' || $open_type == 'window' || $open_type == 'curtains' || $open_type == 'shutters') {&lt;br /&gt;
                        // Устанавливаем характеристику &amp;quot;CurrentPosition&amp;quot;&lt;br /&gt;
                        $payload['characteristic'] = 'CurrentPosition';&lt;br /&gt;
                        // Если статус устройства активен&lt;br /&gt;
                        if (gg($devices[$i]['LINKED_OBJECT'] . '.status')) {&lt;br /&gt;
                            // Устанавливаем значение характеристики &amp;quot;CurrentPosition&amp;quot; в &amp;quot;0&amp;quot; (закрыто)&lt;br /&gt;
                            $payload['value'] = &amp;quot;0&amp;quot;;&lt;br /&gt;
                            // В противном случае&lt;br /&gt;
                        } else {&lt;br /&gt;
                            // Устанавливаем значение характеристики &amp;quot;CurrentPosition&amp;quot; в &amp;quot;100&amp;quot; (открыто)&lt;br /&gt;
                            $payload['value'] = &amp;quot;100&amp;quot;;&lt;br /&gt;
                        }&lt;br /&gt;
                        // Отправляем команду на установку значения характеристики&lt;br /&gt;
                        sg('HomeBridge.to_set', json_encode($payload));&lt;br /&gt;
                        // Устанавливаем характеристику &amp;quot;TargetPosition&amp;quot; для управления позицией устройства&lt;br /&gt;
                        $payload['characteristic'] = 'TargetPosition';&lt;br /&gt;
                        // Отправляем данные на сервер HomeBridge для установки характеристики&lt;br /&gt;
                        sg('HomeBridge.to_set', json_encode($payload));&lt;br /&gt;
                        // Устанавливаем характеристику &amp;quot;PositionState&amp;quot; для отображения состояния позиции устройства&lt;br /&gt;
                        $payload['characteristic'] = 'PositionState';&lt;br /&gt;
                        // Устанавливаем значение 0 - &amp;quot;Закрывается&amp;quot; 1 - &amp;quot;Открывается&amp;quot; 2 - нет отображения&lt;br /&gt;
                        $payload['value'] = &amp;quot;2&amp;quot;;&lt;br /&gt;
                        // Отправляем данные на сервер HomeBridge для установки характеристики&lt;br /&gt;
                        sg('HomeBridge.to_set', json_encode($payload));&lt;br /&gt;
                        // Завершаем обработку данного случая&lt;br /&gt;
                    }&lt;br /&gt;
                    // Завершаем обработку всех случаев&lt;br /&gt;
                }&lt;br /&gt;
                // Переходим к следующему случаю&lt;br /&gt;
                break;&lt;br /&gt;
                // Обрабатываем случай, когда устройство является датчиком температуры&lt;br /&gt;
            case 'sensor_temp':&lt;br /&gt;
                // Устанавливаем сервис &amp;quot;TemperatureSensor&amp;quot; для устройства&lt;br /&gt;
                $payload['service'] = 'TemperatureSensor';&lt;br /&gt;
                // Устанавливаем минимальное значение температуры, которое может показать датчик&lt;br /&gt;
                $payload['CurrentTemperature']['minValue'] = -40;&lt;br /&gt;
                // Отправляем данные на сервер HomeBridge для добавления устройства&lt;br /&gt;
                sg('HomeBridge.to_add', json_encode($payload));&lt;br /&gt;
&lt;br /&gt;
                // Устанавливаем характеристику &amp;quot;CurrentTemperature&amp;quot; для отображения текущей температуры&lt;br /&gt;
                $payload['characteristic'] = 'CurrentTemperature';&lt;br /&gt;
                // Получаем текущее значение температуры устройства&lt;br /&gt;
                $payload['value'] = gg($devices[$i]['LINKED_OBJECT'] . '.value');&lt;br /&gt;
                // Отправляем данные на сервер HomeBridge для установки характеристики&lt;br /&gt;
                sg('HomeBridge.to_set', json_encode($payload));&lt;br /&gt;
                // Переходим к следующему случаю&lt;br /&gt;
                break;&lt;br /&gt;
                // Обрабатываем случай, когда устройство является датчиком влажности&lt;br /&gt;
            case 'sensor_humidity':&lt;br /&gt;
                // Устанавливаем сервис &amp;quot;HumiditySensor&amp;quot; для устройства&lt;br /&gt;
                $payload['service'] = 'HumiditySensor';&lt;br /&gt;
                // Отправляем данные на сервер HomeBridge для добавления устройства&lt;br /&gt;
                sg('HomeBridge.to_add', json_encode($payload));&lt;br /&gt;
&lt;br /&gt;
                // Устанавливаем характеристику &amp;quot;CurrentRelativeHumidity&amp;quot; для отображения текущей влажности&lt;br /&gt;
                $payload['characteristic'] = 'CurrentRelativeHumidity';&lt;br /&gt;
&lt;br /&gt;
                $payload['value'] = gg($devices[$i]['LINKED_OBJECT'] . '.value');&lt;br /&gt;
&lt;br /&gt;
                sg('HomeBridge.to_set', json_encode($payload));&lt;br /&gt;
                // Переходим к следующему случаю&lt;br /&gt;
                break;&lt;br /&gt;
                // Обрабатываем случай, когда устройство является датчиком углекислого газа&lt;br /&gt;
            case 'sensor_co2':&lt;br /&gt;
                // Устанавливаем сервис &amp;quot;CarbonDioxideSensor&amp;quot; для устройства&lt;br /&gt;
                $payload['service'] = 'CarbonDioxideSensor';&lt;br /&gt;
                // Отправляем данные на сервер HomeBridge для добавления устройства&lt;br /&gt;
                sg('HomeBridge.to_add', json_encode($payload));&lt;br /&gt;
&lt;br /&gt;
                // Устанавливаем характеристику &amp;quot;CarbonDioxideLevel&amp;quot; для отображения уровня углекислого газа&lt;br /&gt;
                $payload['characteristic'] = 'CarbonDioxideLevel';&lt;br /&gt;
                // Получаем текущее значение уровня углекислого газа устройства&lt;br /&gt;
                $payload['value'] = gg($devices[$i]['LINKED_OBJECT'] . '.value');&lt;br /&gt;
                // Отправляем данные на сервер HomeBridge для установки характеристики&lt;br /&gt;
                sg('HomeBridge.to_set', json_encode($payload));&lt;br /&gt;
&lt;br /&gt;
                // Устанавливаем характеристику &amp;quot;CarbonDioxideDetected&amp;quot; для отображения наличия углекислого газа&lt;br /&gt;
                $payload['characteristic'] = 'CarbonDioxideDetected';&lt;br /&gt;
                // Устанавливаем значение &amp;quot;0&amp;quot;, что означает отсутствие углекислого газа&lt;br /&gt;
                $payload['value'] = &amp;quot;0&amp;quot;;&lt;br /&gt;
                // Отправляем данные на сервер HomeBridge для установки характеристики&lt;br /&gt;
                sg('HomeBridge.to_set', json_encode($payload));&lt;br /&gt;
&lt;br /&gt;
                // Переходим к следующему случаю&lt;br /&gt;
                break;&lt;br /&gt;
&lt;br /&gt;
                // Обрабатываем случай, когда устройство является датчиком влажности&lt;br /&gt;
            case 'sensor_moisture':&lt;br /&gt;
                // Здесь должен быть код для обработки датчика влажности, но он еще не реализован&lt;br /&gt;
                break;&lt;br /&gt;
&lt;br /&gt;
                // Обрабатываем случай, когда устройство является датчиком радиации&lt;br /&gt;
            case 'sensor_radiation':&lt;br /&gt;
                // Здесь должен быть код для обработки датчика радиации, но он еще не реализован&lt;br /&gt;
                break;&lt;br /&gt;
&lt;br /&gt;
                // Обрабатываем случай, когда устройство является пылесосом&lt;br /&gt;
            case 'vacuum':&lt;br /&gt;
                // Здесь должен быть код для обработки пылесоса, но он еще не реализован&lt;br /&gt;
                break;&lt;br /&gt;
&lt;br /&gt;
                // Обрабатываем случай, когда устройство является медиа устройством&lt;br /&gt;
            case 'media':&lt;br /&gt;
                // Здесь должен быть код для обработки медиа устройства, но он еще не реализован&lt;br /&gt;
                break;&lt;br /&gt;
&lt;br /&gt;
                // Обрабатываем случай, когда устройство является телевизором&lt;br /&gt;
            case 'tv':&lt;br /&gt;
                // Здесь должен быть код для обработки телевизора, но он еще не реализован&lt;br /&gt;
                break;&lt;br /&gt;
&lt;br /&gt;
                // Обрабатываем случай, когда устройство является датчиком движения&lt;br /&gt;
            case 'motion':&lt;br /&gt;
                // Устанавливаем сервис &amp;quot;MotionSensor&amp;quot; для устройства&lt;br /&gt;
                $payload['service'] = 'MotionSensor';&lt;br /&gt;
                // Отправляем данные на сервер HomeBridge для добавления устройства&lt;br /&gt;
                sg('HomeBridge.to_add', json_encode($payload));&lt;br /&gt;
&lt;br /&gt;
                // Устанавливаем характеристику &amp;quot;MotionDetected&amp;quot; для отображения обнаружения движения&lt;br /&gt;
                $payload['characteristic'] = 'MotionDetected';&lt;br /&gt;
                // Получаем текущее значение статуса устройства&lt;br /&gt;
                $payload['value'] = (int)gg($devices[$i]['LINKED_OBJECT'] . '.status');&lt;br /&gt;
                // Отправляем данные на сервер HomeBridge для установки характеристики&lt;br /&gt;
                sg('HomeBridge.to_set', json_encode($payload));&lt;br /&gt;
                // Переходим к следующему случаю&lt;br /&gt;
                break;&lt;br /&gt;
                // Обрабатываем случай, когда устройство является датчиком дыма&lt;br /&gt;
            case 'smoke':&lt;br /&gt;
                // Устанавливаем сервис &amp;quot;SmokeSensor&amp;quot; для устройства&lt;br /&gt;
                $payload['service'] = 'SmokeSensor';&lt;br /&gt;
                // Отправляем данные на сервер HomeBridge для добавления устройства&lt;br /&gt;
                sg('HomeBridge.to_add', json_encode($payload));&lt;br /&gt;
&lt;br /&gt;
                // Устанавливаем характеристику &amp;quot;SmokeDetected&amp;quot; для отображения обнаружения дыма&lt;br /&gt;
                $payload['characteristic'] = 'SmokeDetected';&lt;br /&gt;
                // Получаем текущее значение статуса устройства&lt;br /&gt;
                $payload['value'] = (int)gg($devices[$i]['LINKED_OBJECT'] . '.status');&lt;br /&gt;
                // Отправляем данные на сервер HomeBridge для установки характеристики&lt;br /&gt;
                sg('HomeBridge.to_set', json_encode($payload));&lt;br /&gt;
                // Переходим к следующему случаю&lt;br /&gt;
                break;&lt;br /&gt;
                // Обрабатываем случай, когда устройство является датчиком утечки&lt;br /&gt;
            case 'leak':&lt;br /&gt;
                // Устанавливаем сервис &amp;quot;LeakSensor&amp;quot; для устройства&lt;br /&gt;
                $payload['service'] = 'LeakSensor';&lt;br /&gt;
                // Отправляем данные на сервер HomeBridge для добавления устройства&lt;br /&gt;
                sg('HomeBridge.to_add', json_encode($payload));&lt;br /&gt;
&lt;br /&gt;
                // Устанавливаем характеристику &amp;quot;LeakDetected&amp;quot; для отображения обнаружения утечки&lt;br /&gt;
                $payload['characteristic'] = 'LeakDetected';&lt;br /&gt;
                // Получаем текущее значение статуса устройства&lt;br /&gt;
                $payload['value'] = (int)gg($devices[$i]['LINKED_OBJECT'] . '.status');&lt;br /&gt;
                // Отправляем данные на сервер HomeBridge для установки характеристики&lt;br /&gt;
                sg('HomeBridge.to_set', json_encode($payload));&lt;br /&gt;
                // Переходим к следующему случаю&lt;br /&gt;
                break;&lt;br /&gt;
                // Обрабатываем случай, когда устройство является кнопкой&lt;br /&gt;
            case 'button':&lt;br /&gt;
                // Устанавливаем сервис &amp;quot;Switch&amp;quot; для устройства&lt;br /&gt;
                $payload['service'] = 'Switch';&lt;br /&gt;
                // Отправляем данные на сервер HomeBridge для добавления устройства&lt;br /&gt;
                sg('HomeBridge.to_add', json_encode($payload));&lt;br /&gt;
                // Переходим к следующему случаю&lt;br /&gt;
                break;&lt;br /&gt;
                // Обрабатываем случай, когда устройство является датчиком освещенности&lt;br /&gt;
            case 'sensor_light':&lt;br /&gt;
                // Устанавливаем сервис &amp;quot;LightSensor&amp;quot; для устройства&lt;br /&gt;
                $payload['service'] = 'LightSensor';&lt;br /&gt;
                // Устанавливаем минимальное значение освещенности, которое может показать датчик&lt;br /&gt;
                $payload['CurrentAmbientLightLevel']['minValue'] = 0;&lt;br /&gt;
                // Отправляем данные на сервер HomeBridge для добавления устройства&lt;br /&gt;
                sg('HomeBridge.to_add', json_encode($payload));&lt;br /&gt;
&lt;br /&gt;
                // Устанавливаем характеристику &amp;quot;CurrentAmbientLightLevel&amp;quot; для отображения текущей освещенности&lt;br /&gt;
                $payload['characteristic'] = 'CurrentAmbientLightLevel';&lt;br /&gt;
                // Получаем текущее значение освещенности устройства&lt;br /&gt;
                $payload['value'] = (int)gg($devices[$i]['LINKED_OBJECT'] . '.value');&lt;br /&gt;
                // Отправляем данные на сервер HomeBridge для установки характеристики&lt;br /&gt;
                sg('HomeBridge.to_set', json_encode($payload));&lt;br /&gt;
                // Переходим к следующему случаю&lt;br /&gt;
                break;&lt;br /&gt;
                // Обрабатываем случай, когда устройство является датчиком открытия/закрытия&lt;br /&gt;
            case 'openclose':&lt;br /&gt;
                // Устанавливаем сервис &amp;quot;ContactSensor&amp;quot; для устройства&lt;br /&gt;
                $payload['service'] = 'ContactSensor';&lt;br /&gt;
                // Отправляем данные на сервер HomeBridge для добавления устройства&lt;br /&gt;
                sg('HomeBridge.to_add', json_encode($payload));&lt;br /&gt;
&lt;br /&gt;
                // Устанавливаем характеристику &amp;quot;ContactSensorState&amp;quot; для отображения состояния датчика&lt;br /&gt;
                $payload['characteristic'] = 'ContactSensorState';&lt;br /&gt;
                // Получаем текущее значение статуса устройства и корректируем его в зависимости от настроек устройства&lt;br /&gt;
                $payload['value'] = (int)gg($devices[$i]['LINKED_OBJECT'] . '.ncno') == 'nc' ? 1 - gg($devices[$i]['LINKED_OBJECT'] . '.status') : gg($devices[$i]['LINKED_OBJECT'] . '.status');&lt;br /&gt;
                // Отправляем данные на сервер HomeBridge для установки характеристики&lt;br /&gt;
                sg('HomeBridge.to_set', json_encode($payload));&lt;br /&gt;
                // Переходим к следующему случаю&lt;br /&gt;
                break;&lt;br /&gt;
                // Обрабатываем случай, когда устройство является регулятором яркости&lt;br /&gt;
            case 'dimmer':&lt;br /&gt;
                // Устанавливаем сервис &amp;quot;Lightbulb&amp;quot; для устройства&lt;br /&gt;
                $payload['service'] = 'Lightbulb';&lt;br /&gt;
                // Устанавливаем значение яркости по умолчанию&lt;br /&gt;
                $payload['Brightness'] = 'default';&lt;br /&gt;
                // Отправляем данные на сервер HomeBridge для добавления устройства&lt;br /&gt;
                sg('HomeBridge.to_add', json_encode($payload));&lt;br /&gt;
                // Устанавливаем характеристику &amp;quot;On&amp;quot; для отображения состояния устройства&lt;br /&gt;
                $payload['characteristic'] = 'On';&lt;br /&gt;
                // Проверяем статус устройства и устанавливаем соответствующее значение&lt;br /&gt;
                if (gg($devices[$i]['LINKED_OBJECT'] . '.status')) {&lt;br /&gt;
                    $payload['value'] = true;&lt;br /&gt;
                } else {&lt;br /&gt;
                    $payload['value'] = false;&lt;br /&gt;
                }&lt;br /&gt;
                // Отправляем данные на сервер HomeBridge для установки характеристики&lt;br /&gt;
                sg('HomeBridge.to_set', json_encode($payload));&lt;br /&gt;
                // Устанавливаем характеристику &amp;quot;Brightness&amp;quot; для отображения текущей яркости&lt;br /&gt;
                $payload['characteristic'] = 'Brightness';&lt;br /&gt;
                // Получаем текущее значение яркости устройства&lt;br /&gt;
                $payload['value'] = (int)gg($devices[$i]['LINKED_OBJECT'] . '.level');&lt;br /&gt;
                // Отправляем данные на сервер HomeBridge для установки характеристики&lt;br /&gt;
                sg('HomeBridge.to_set', json_encode($payload));&lt;br /&gt;
                // Переходим к следующему случаю&lt;br /&gt;
                break;&lt;br /&gt;
                // Обрабатываем случай, когда устройство является RGB лампой&lt;br /&gt;
            case 'rgb':&lt;br /&gt;
                // Устанавливаем сервис &amp;quot;Lightbulb&amp;quot; для устройства&lt;br /&gt;
                $payload['service'] = 'Lightbulb';&lt;br /&gt;
                // Устанавливаем значения по умолчанию для характеристик Hue, Saturation и Brightness&lt;br /&gt;
                $payload['Hue'] = 'default';&lt;br /&gt;
                $payload['Saturation'] = 'default';&lt;br /&gt;
                $payload['Brightness'] = 'default';&lt;br /&gt;
                &lt;br /&gt;
                // Отправляем данные на сервер HomeBridge для добавления устройства&lt;br /&gt;
                sg('HomeBridge.to_add', json_encode($payload));&lt;br /&gt;
&lt;br /&gt;
                // Устанавливаем характеристику &amp;quot;On&amp;quot; для отображения состояния устройства&lt;br /&gt;
                $payload['characteristic'] = 'On';&lt;br /&gt;
                // Проверяем статус устройства и устанавливаем соответствующее значение&lt;br /&gt;
                if (gg($devices[$i]['LINKED_OBJECT'] . '.status')) {&lt;br /&gt;
                    $payload['value'] = true;&lt;br /&gt;
                } else {&lt;br /&gt;
                    $payload['value'] = false;&lt;br /&gt;
                }&lt;br /&gt;
                // Отправляем данные на сервер HomeBridge для установки характеристики&lt;br /&gt;
                sg('HomeBridge.to_set', json_encode($payload));&lt;br /&gt;
&lt;br /&gt;
                // Устанавливаем характеристику &amp;quot;Hue&amp;quot; для отображения оттенка устройства&lt;br /&gt;
                $payload['characteristic'] = 'Hue';&lt;br /&gt;
                // Получаем текущее значение оттенка устройства&lt;br /&gt;
                $payload['value'] = gg($devices[$i]['LINKED_OBJECT'] . '.hue');&lt;br /&gt;
                // Отправляем данные на сервер HomeBridge для установки характеристики&lt;br /&gt;
                sg('HomeBridge.to_set', json_encode($payload));&lt;br /&gt;
&lt;br /&gt;
                // Устанавливаем характеристику &amp;quot;Saturation&amp;quot; для отображения насыщенности устройства&lt;br /&gt;
                $payload['characteristic'] = 'Saturation';&lt;br /&gt;
                // Получаем текущее значение насыщенности устройства&lt;br /&gt;
                $payload['value'] = gg($devices[$i]['LINKED_OBJECT'] . '.saturation');&lt;br /&gt;
                // Отправляем данные на сервер HomeBridge для установки характеристики&lt;br /&gt;
                sg('HomeBridge.to_set', json_encode($payload));&lt;br /&gt;
&lt;br /&gt;
                // Устанавливаем характеристику &amp;quot;Brightness&amp;quot; для отображения яркости устройства&lt;br /&gt;
                $payload['characteristic'] = 'Brightness';&lt;br /&gt;
                // Получаем текущее значение яркости устройства&lt;br /&gt;
                $payload['value'] = gg($devices[$i]['LINKED_OBJECT'] . '.brightness');&lt;br /&gt;
                // Отправляем данные на сервер HomeBridge для установки характеристики&lt;br /&gt;
                sg('HomeBridge.to_set', json_encode($payload));&lt;br /&gt;
                // Переходим к следующему случаю&lt;br /&gt;
                break;&lt;br /&gt;
&lt;br /&gt;
                // Обрабатываем случай, когда устройство является светодиодной лампой&lt;br /&gt;
            case 'ledlamp':&lt;br /&gt;
                // Устанавливаем сервис &amp;quot;Lightbulb&amp;quot; для устройства&lt;br /&gt;
                $payload['service'] = 'Lightbulb';&lt;br /&gt;
                // Устанавливаем значение яркости по умолчанию&lt;br /&gt;
                $payload['Brightness'] = 'default';&lt;br /&gt;
                // Отправляем данные на сервер HomeBridge для добавления устройства&lt;br /&gt;
                sg('HomeBridge.to_add', json_encode($payload));&lt;br /&gt;
&lt;br /&gt;
                // Устанавливаем характеристику &amp;quot;On&amp;quot; для отображения состояния устройства&lt;br /&gt;
                $payload['characteristic'] = 'On';&lt;br /&gt;
                // Проверяем статус устройства и устанавливаем соответствующее значение&lt;br /&gt;
                if (gg($devices[$i]['LINKED_OBJECT'] . '.status')) {&lt;br /&gt;
                    $payload['value'] = true;&lt;br /&gt;
                } else {&lt;br /&gt;
                    $payload['value'] = false;&lt;br /&gt;
                }&lt;br /&gt;
                // Отправляем данные на сервер HomeBridge для установки характеристики&lt;br /&gt;
                sg('HomeBridge.to_set', json_encode($payload));&lt;br /&gt;
                // Устанавливаем характеристику &amp;quot;Brightness&amp;quot; для отображения яркости устройства&lt;br /&gt;
                $payload['characteristic'] = 'Brightness';&lt;br /&gt;
                // Получаем текущее значение яркости устройства&lt;br /&gt;
                $payload['value'] = gg($devices[$i]['LINKED_OBJECT'] . '.brightness');&lt;br /&gt;
                // Отправляем данные на сервер HomeBridge для установки характеристики&lt;br /&gt;
                sg('HomeBridge.to_set', json_encode($payload));&lt;br /&gt;
                // Переходим к следующему случаю&lt;br /&gt;
                break;&lt;br /&gt;
&lt;br /&gt;
                // Обрабатываем случай, когда устройство является термостатом&lt;br /&gt;
            case 'thermostat':&lt;br /&gt;
                // Устанавливаем сервис &amp;quot;Thermostat&amp;quot; для устройства&lt;br /&gt;
                $payload['service'] = 'Thermostat';&lt;br /&gt;
                // Отправляем данные на сервер HomeBridge для добавления устройства&lt;br /&gt;
                sg('HomeBridge.to_add', json_encode($payload));&lt;br /&gt;
&lt;br /&gt;
                // Устанавливаем характеристику &amp;quot;CurrentTemperature&amp;quot; для отображения текущей температуры&lt;br /&gt;
                $payload['characteristic'] = 'CurrentTemperature';&lt;br /&gt;
                // Получаем текущее значение температуры устройства&lt;br /&gt;
                $payload['value'] = gg($devices[$i]['LINKED_OBJECT'] . '.value');&lt;br /&gt;
                // Отправляем данные на сервер HomeBridge для установки характеристики&lt;br /&gt;
                sg('HomeBridge.to_set', json_encode($payload));&lt;br /&gt;
&lt;br /&gt;
                // Устанавливаем характеристику &amp;quot;TargetTemperature&amp;quot; для отображения целевой температуры&lt;br /&gt;
                $payload['characteristic'] = 'TargetTemperature';&lt;br /&gt;
                // Получаем текущее значение целевой температуры устройства&lt;br /&gt;
                $payload['value'] = gg($devices[$i]['LINKED_OBJECT'] . '.currentTargetValue');&lt;br /&gt;
                // Отправляем данные на сервер HomeBridge для установки характеристики&lt;br /&gt;
                sg('HomeBridge.to_set', json_encode($payload));&lt;br /&gt;
&lt;br /&gt;
                /*&lt;br /&gt;
                 код закомментирован на github&lt;br /&gt;
    // Устанавливаем характеристику &amp;quot;TemperatureDisplayUnits&amp;quot; для отображения единиц измерения температуры&lt;br /&gt;
    $payload['characteristic'] = 'TemperatureDisplayUnits';&lt;br /&gt;
    // Получаем текущее значение единиц измерения температуры устройства&lt;br /&gt;
    $payload['value']=gg($devices[$i]['LINKED_OBJECT'].'.currentTargetValue');&lt;br /&gt;
    // Отправляем данные на сервер HomeBridge для установки характеристики&lt;br /&gt;
    sg('HomeBridge.to_set',json_encode($payload));&lt;br /&gt;
    */&lt;br /&gt;
                // Устанавливаем характеристику &amp;quot;CurrentHeatingCoolingState&amp;quot; для отображения текущего состояния отопления/охлаждения&lt;br /&gt;
                $payload['characteristic'] = 'CurrentHeatingCoolingState'; //off = 0, heat = 1, and cool = 2&lt;br /&gt;
                // Проверяем, не отключен ли устройство&lt;br /&gt;
                if (!gg($devices[$i]['LINKED_OBJECT'] . '.disabled')) {&lt;br /&gt;
                    // Проверяем статус устройства&lt;br /&gt;
                    if (gg($devices[$i]['LINKED_OBJECT'] . '.status')) {&lt;br /&gt;
                        // Устанавливаем значение &amp;quot;1&amp;quot; для характеристики &amp;quot;CurrentHeatingCoolingState&amp;quot;, что означает отопление&lt;br /&gt;
                        $payload['value'] = 1;&lt;br /&gt;
                    } else {&lt;br /&gt;
                        // Устанавливаем значение &amp;quot;2&amp;quot; для характеристики &amp;quot;CurrentHeatingCoolingState&amp;quot;, что означает охлаждение&lt;br /&gt;
                        $payload['value'] = 2;&lt;br /&gt;
                    }&lt;br /&gt;
                } else {&lt;br /&gt;
                    // Устанавливаем значение &amp;quot;0&amp;quot; для характеристики &amp;quot;CurrentHeatingCoolingState&amp;quot;, что означает выключено&lt;br /&gt;
                    $payload['value'] = 0;&lt;br /&gt;
                }&lt;br /&gt;
                // Отправляем данные на сервер HomeBridge для установки характеристики&lt;br /&gt;
                sg('HomeBridge.to_set', json_encode($payload));&lt;br /&gt;
                // Переходим к следующему случаю&lt;br /&gt;
                //TargetHeatingCoolingState&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                //CoolingThresholdTemperature&lt;br /&gt;
                //HeatingThresholdTemperature&lt;br /&gt;
                //Name&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                break;&lt;br /&gt;
                // Обрабатываем случай, когда устройство является камерой&lt;br /&gt;
            case 'camera':&lt;br /&gt;
                /*&lt;br /&gt;
    // Здесь должен быть код для обработки камеры, но он еще не реализован&lt;br /&gt;
            /*&lt;br /&gt;
            $cameraUsername = gg($devices[$i]['LINKED_OBJECT'].'.cameraUsername');&lt;br /&gt;
            $cameraPassword = gg($devices[$i]['LINKED_OBJECT'].'.cameraPassword');&lt;br /&gt;
            $snapshot_url = gg($devices[$i]['LINKED_OBJECT'].'.snapshotURL');&lt;br /&gt;
            $stream_url = gg($devices[$i]['LINKED_OBJECT'].'.streamURL');&lt;br /&gt;
            $stream_url_hq = gg($devices[$i]['LINKED_OBJECT'].'.streamURL_HQ');&lt;br /&gt;
            if ($snapshot_url) {&lt;br /&gt;
               $stream_url=$snapshot_url;&lt;br /&gt;
            } elseif (!$stream_url &amp;amp;&amp;amp; $stream_url_hq) {&lt;br /&gt;
               $stream_url = $stream_url_hq;&lt;br /&gt;
            }&lt;br /&gt;
            $thumb_params ='';&lt;br /&gt;
            $thumb_params.= 'username=&amp;quot;' . $cameraUsername . '&amp;quot; password=&amp;quot;' . $cameraPassword . '&amp;quot;';&lt;br /&gt;
            $thumb_params.= ' width=&amp;quot;1024&amp;quot;';&lt;br /&gt;
            $thumb_params.= ' url=&amp;quot;' . $stream_url . '&amp;quot;';&lt;br /&gt;
            $streamTransport = gg($devices[$i]['LINKED_OBJECT'].'.streamTransport');&lt;br /&gt;
            if ($streamTransport!='auto' &amp;amp;&amp;amp; $streamTransport!='') {&lt;br /&gt;
               $thumb_params.= ' transport=&amp;quot;'.$streamTransport.'&amp;quot;';&lt;br /&gt;
            }&lt;br /&gt;
            $body = '[#module name=&amp;quot;thumb&amp;quot; '. $thumb_params. '#]';&lt;br /&gt;
            $body = processTitle($body, $this);&lt;br /&gt;
            if (preg_match('/img src=&amp;quot;(.+?)&amp;quot;/is',$body,$m)) {&lt;br /&gt;
               $snapshotPreviewURL=$m[1];&lt;br /&gt;
               $snapshotPreviewURL = preg_replace('/&amp;amp;w=(\d+?)/','', $snapshotPreviewURL);&lt;br /&gt;
               $snapshotPreviewURL = preg_replace('/&amp;amp;h=(\d+?)/','', $snapshotPreviewURL);&lt;br /&gt;
            } else {&lt;br /&gt;
               $snapshotPreviewURL='';&lt;br /&gt;
            }&lt;br /&gt;
            $snapshotPreviewURL='http://'.getLocalIP().$snapshotPreviewURL;&lt;br /&gt;
&lt;br /&gt;
            $payload['service']='CameraRTPStreamManagement';&lt;br /&gt;
            sg('HomeBridge.to_add',json_encode($payload));&lt;br /&gt;
&lt;br /&gt;
            $payload['characteristic'] = 'SupportedVideoStreamConfiguration';&lt;br /&gt;
            $payload['value']='';&lt;br /&gt;
            sg('HomeBridge.to_set',json_encode($payload));&lt;br /&gt;
&lt;br /&gt;
            $payload['characteristic'] = 'SupportedAudioStreamConfiguration';&lt;br /&gt;
            $payload['value']='';&lt;br /&gt;
            sg('HomeBridge.to_set',json_encode($payload));&lt;br /&gt;
&lt;br /&gt;
            $payload['characteristic'] = 'SupportedRTPConfiguration';&lt;br /&gt;
            $payload['value']='';&lt;br /&gt;
            sg('HomeBridge.to_set',json_encode($payload));&lt;br /&gt;
&lt;br /&gt;
            $payload['characteristic'] = 'SelectedRTPStreamConfiguration';&lt;br /&gt;
            $payload['value']='';&lt;br /&gt;
            sg('HomeBridge.to_set',json_encode($payload));&lt;br /&gt;
&lt;br /&gt;
            $payload['characteristic'] = 'StreamingStatus';&lt;br /&gt;
            $payload['value']='';&lt;br /&gt;
            sg('HomeBridge.to_set',json_encode($payload));&lt;br /&gt;
&lt;br /&gt;
            $payload['characteristic'] = 'SetupEndpoints';&lt;br /&gt;
            $payload['value']='';&lt;br /&gt;
            sg('HomeBridge.to_set',json_encode($payload));&lt;br /&gt;
   */&lt;br /&gt;
                // Переходим к следующему случаю&lt;br /&gt;
                break;&lt;br /&gt;
                /*&lt;br /&gt;
                // Обрабатываем случай, когда устройство является датчиком батареи&lt;br /&gt;
            case 'sensor_battery':&lt;br /&gt;
    // Здесь должен быть код для обработки датчика батареи, но он еще не реализован&lt;br /&gt;
&lt;br /&gt;
    $payload['service']='BatteryService';&lt;br /&gt;
    sg('HomeBridge.to_add',json_encode($payload));&lt;br /&gt;
    // Characteristic.BatteryLevel;&lt;br /&gt;
    // Characteristic.ChargingState; 0 - NOT_CHARGING, 1 - CHARGING, 2 - NOT_CHARGEABLE&lt;br /&gt;
    // Characteristic.StatusLowBattery;&lt;br /&gt;
    $payload['characteristic'] = 'BatteryLevel';&lt;br /&gt;
    $payload['value']=gg($devices[$i]['LINKED_OBJECT'].'.value');&lt;br /&gt;
    sg('HomeBridge.to_set',json_encode($payload));&lt;br /&gt;
&lt;br /&gt;
    $payload['characteristic'] = 'ChargingState';&lt;br /&gt;
    $payload['value']=2;&lt;br /&gt;
    sg('HomeBridge.to_set',json_encode($payload));&lt;br /&gt;
&lt;br /&gt;
    $payload['characteristic'] = 'StatusLowBattery';&lt;br /&gt;
    $payload['value']=gg($devices[$i]['LINKED_OBJECT'].'.normalValue') ? 0 : 1;&lt;br /&gt;
    sg('HomeBridge.to_set',json_encode($payload));&lt;br /&gt;
    break;&lt;br /&gt;
            */&lt;br /&gt;
            default:&lt;br /&gt;
                $addon_path = dirname(__FILE__) . '/addons/' . $devices[$i]['TYPE'] . '_homebridgeSync.php';&lt;br /&gt;
                if (file_exists($addon_path)) {&lt;br /&gt;
                    require($addon_path);&lt;br /&gt;
                }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Отправляем команду на сервер HomeBridge для получения всех устройств&lt;br /&gt;
    sg('HomeBridge.to_get', '{&amp;quot;name&amp;quot;: &amp;quot;*&amp;quot;}');&lt;br /&gt;
    // Устанавливаем режим работы HomeBridge в &amp;quot;list&amp;quot;&lt;br /&gt;
    sg('HomeBridge.mode', 'list');&lt;br /&gt;
    // Устанавливаем таймер для сброса режима работы HomeBridge через 5 секунд&lt;br /&gt;
    setTimeout('HomeBridgeMode', &amp;quot;sg('HomeBridge.mode','');&amp;quot;, 5);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Elmax</name></author>
	</entry>
	<entry>
		<id>https://mdminfo.ru/index.php?title=Modules/devices&amp;diff=2100</id>
		<title>Modules/devices</title>
		<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=Modules/devices&amp;diff=2100"/>
		<updated>2024-04-06T15:29:33Z</updated>

		<summary type="html">&lt;p&gt;Elmax: описание econommode_deactivate.php&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Modules/devices|/modules/devices]]&lt;br /&gt;
&lt;br /&gt;
[[Папки и файлы|ᐂ В корневой раздел]]  [[Modules|ᐃ на директорию выше]][https://github.com/sergejey/majordomo/tree/master/modules/devices | Перейти в директорию на github]&lt;br /&gt;
===== Папки директории '''/modules/devices''' =====&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/addons|'''addons''']] - пока папка не имеет описания&lt;br /&gt;
&lt;br /&gt;
===== Файлы директории '''/modules/devices''' =====&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/Rooms_onActivity_php | '''Rooms_onActivity.php''']] - вызывается методом onActivity, класса Rooms. Содерит функции для анализа данных об активности в помещениях и принятия соответствующих действий на основе этой информации.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/Rooms_onIdle_php | '''Rooms_onIdle.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/Rooms_updateActivityStatus_php | '''Rooms_updateActivityStatus.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SButtons_pressed_php | '''SButtons_pressed.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCameras_motionDetected_php | '''SCameras_motionDetected.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCameras_takeSeries_php | '''SCameras_takeSeries.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCameras_takeSnapshot_php | '''SCameras_takeSnapshot.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCameras_updatePreview_php | '''SCameras_updatePreview.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SControllers_switch_php | '''SControllers_switch.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SControllers_turnOff_php | '''SControllers_turnOff.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SControllers_turnOn_php | '''SControllers_turnOn.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCounters_pulseDetected_php | '''SCounters_pulseDetected.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCounters_refreshStats_php | '''SCounters_refreshStats.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCounters_valueUpdated_php | '''SCounters_valueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCounters_valueWorkUpdated_php | '''SCounters_valueWorkUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDevices_batteryLevelUpdated_php | '''SDevices_batteryLevelUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDevices_keepAlive_php | '''SDevices_keepAlive.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDevices_logicAction_php | '''SDevices_logicAction.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDevices_statusUpdated_php | '''SDevices_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_levelUpdated_php | '''SDimmers_levelUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_levelWorkUpdated_php | '''SDimmers_levelWorkUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_setLevel_php | '''SDimmers_setLevel.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_statusUpdated_php | '''SDimmers_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_turnOff_php | '''SDimmers_turnOff.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_turnOn_php | '''SDimmers_turnOn.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SGroups_statusUpdated_php | '''SGroups_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SGroups_switch_php | '''SGroups_switch.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SGroups_turnOff_php | '''SGroups_turnOff.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SGroups_turnOn_php | '''SGroups_turnOn.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLeak_alert_php | '''SLeak_alert.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLeak_blockSensor_php | '''SLeak_blockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLeak_statusUpdated_php | '''SLeak_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLeak_unblockSensor_php | '''SLeak_unblockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMotions_blockSensor_php | '''SMotions_blockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMotions_motionDetected_php | '''SMotions_motionDetected.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMotions_unblockSensor_php | '''SMotions_unblockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenClose_blockSensor_php | '''SOpenClose_blockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenClose_statusUpdated_php | '''SOpenClose_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenClose_unblockSensor_php | '''SOpenClose_unblockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_close_php | '''SOpenable_close.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_levelUpdated_php | '''SOpenable_levelUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_open_php | '''SOpenable_open.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_setLevel_php | '''SOpenable_setLevel.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_statusUpdated_php | '''SOpenable_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_switch_php | '''SOpenable_switch.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SPowerSensors_loadStatusChanged_php | '''SPowerSensors_loadStatusChanged.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SPowerSensors_valueUpdated_php | '''SPowerSensors_valueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SRGB_colorUpdated_php | '''SRGB_colorUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SRGB_setColor_php | '''SRGB_setColor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SRGB_turnOff_php | '''SRGB_turnOff.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SRGB_turnOn_php | '''SRGB_turnOn.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSensors_alert_php | '''SSensors_alert.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSensors_blockSensor_php | '''SSensors_blockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSensors_unblockSensor_php | '''SSensors_unblockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSensors_valueUpdated_php | '''SSensors_valueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSmoke_alert_php | '''SSmoke_alert.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSmoke_blockSensor_php | '''SSmoke_blockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSmoke_statusUpdated_php | '''SSmoke_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSmoke_unblockSensor_php | '''SSmoke_unblockSensor.php''']] -  &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_disable_php | '''SThermostats_disable.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_enable_php | '''SThermostats_enable.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_setTargetTemperature_php | '''SThermostats_setTargetTemperature.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_statusUpdated_php | '''SThermostats_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_switchEnable_php | '''SThermostats_switchEnable.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_tempDown_php | '''SThermostats_tempDown.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_tempUp_php | '''SThermostats_tempUp.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_turnOff_php | '''SThermostats_turnOff.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_turnOn_php | '''SThermostats_turnOn.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_valueUpdated_php | '''SThermostats_valueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_configUpdated_php | '''SAirConditioners_configUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_fanSpeedUpdated_php | '''SAirConditioners_fanSpeedUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_setFanSpeedMode_php | '''SAirConditioners_setFanSpeedMode.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_setTargetTemperature_php | '''SAirConditioners_setTargetTemperature.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_setThermostatMode_php | '''SAirConditioners_setThermostatMode.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_tempDown_php | '''SAirConditioners_tempDown.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_tempUp_php | '''SAirConditioners_tempUp.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_thermostatUpdated_php | '''SAirConditioners_thermostatUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLightSensors_periodMinValueUpdated_php | '''SLightSensors_periodMinValueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLightSensors_valueUpdated_php | '''SLightSensors_valueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMedias_pause_php | '''SMedias_pause.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMedias_setChannel_php | '''SMedias_setChannel.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMedias_setSource_php | '''SMedias_setSource.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMedias_setVolume_php | '''SMedias_setVolume.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/STVs_pause_php | '''STVs_pause.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/STVs_setChannel_php | '''STVs_setChannel.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/STVs_setSource_php | '''STVs_setSource.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/STVs_setVolume_php | '''STVs_setVolume.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SVacuums_pause_php | '''SVacuums_pause.php''']] - &lt;br /&gt;
&lt;br /&gt;
'''app''' -  пока файл не понятен, его назначение так-же&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/darknessmode_activate_php | '''darknessmode_activate.php''']] - для активации устройств, связанных с группой &amp;quot;groupSunset&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/darknessmode_deactivate_php | '''darknessmode_deactivate.php''']] - для деактивации устройств, связанных с группой &amp;quot;groupSunset&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_class_php | '''devices.class.php''']] - содержит набор функций для взаимодействия с устройствами в рамках проекта. Он обеспечивает взаимодействие между устройствами, базой данных, внешними API и другими частями системы, такими как управление группами устройств, связями между ними и действиями, которые могут быть выполнены над устройствами.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_edit_inc_php | '''devices_edit.inc.php''']] - содержит функции и код, связанный с редактированием устройств в проекте. Он включает в себя обработку форм, сохранение данных и другие операции, связанные с редактированием устройств.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_links_inc_php | '''devices_links.inc.php''']] - содержит функции для работы с связями между устройствами. Он включает в себя обработку создания, обновления и удаления связей, а также работу с деталями связей и другие операции, связанные с управлением связями устройств.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_links_actions_inc_php | '''devices_links_actions.inc.php''']] - содержит функции для обработки действий, связанных с устройствами. Он выполняет действия, такие как включение, выключение, установка цвета и передача значений объектов. Также файл подключает дополнительные скрипты для обработки действий из директории [[Modules/devices/addons|'''addons''']]&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_manage_groups_inc_php | '''devices_manage_groups.inc.php''']] - содержит функции для управления группами устройств. Он включает в себя операции по созданию, редактированию и удалению групп устройств, обновление объектов группы, очистку кэша значений, а также перенаправление на соответствующие страницы просмотра.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_manage_schedule_inc_php | '''devices_manage_schedule.inc.php''']] -  этот файл включает в себя операции по созданию, редактированию и удалению расписаний для устройств, а также операции по привязке устройств к определенным временным интервалам и управлению их работой в соответствии с расписанием.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_quick_edit_inc_php | '''devices_quick_edit.inc.php''']] - содержит код для сщздания/редактирования устройств. Он обеспечивает быстрый доступ к основным параметрам устройств, таким как имя, описание, состояние и другие атрибуты, позволяя пользователям внести изменения на странице редактирования.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_schedule_inc_php | '''devices_schedule.inc.php''']] - этот файл предоставляет функциональность для управления расписаниями устройств, включая создание, редактирование и удаление расписаний, а также привязку устройств к определенным временным интервалам и управление их работой в соответствии с расписанием.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_search_inc_php | '''devices_search.inc.php''']] -  содержит функции для поиска устройств в системе. Он предоставляет возможность осуществлять поиск устройств по различным критериям, таким как имя устройства, тип, статус и другие атрибуты. Кроме того, файл может включать функции для фильтрации результатов поиска и отображения найденной информации о устройствах.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_structure_inc_php | '''devices_structure.inc.php''']] - определяет структуру свойств и методов, которыми будут наделены устройства в системе. Он содержит описание основных характеристик устройств, таких как их тип, статус, параметры, возможные действия и другие атрибуты. Кроме того, данный файл определяет методы, которые позволяют взаимодействовать с устройствами, управлять ими и получать информацию о их состоянии.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_structure_links_inc_php | '''devices_structure_links.inc.php''']] - файл определяет структуру связей между устройствами в системе. Он содержит описание основных характеристик связей, таких как тип связи, устройства, которые связаны, параметры связи и другие атрибуты. Кроме того, данный файл определяет методы для управления связями между устройствами, включая создание новых связей, редактирование существующих и удаление ненужных связей.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_widgets_js_php | '''devices_widgets.js.php''']] - файл с примесью js, его я не знаю совсем, поэтому подождем описания знающих, а по ссылке будет страница с кодом без комментариев.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/econommode_activate_php | '''econommode_activate.php''']] - метод активации режима экономии энергии EconomMode.activate. Класс OperationalModes, обьект EconomMode.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/econommode_deactivate_php | '''econommode_deactivate.php''']] - метод деактивации режима экономии энергии EconomMode.activate. Класс OperationalModes, обьект EconomMode.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/homebridgeSync_inc_php | '''homebridgeSync.inc.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/nightmode_activate_php | '''nightmode_activate.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/nobodyhomemode_activate_php | '''nobodyhomemode_activate.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/nobodyhomemode_deactivate_php | '''nobodyhomemode_deactivate.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/processCommand_inc_php | '''processCommand.inc.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/processHomebridgeMQTT_inc_php | '''processHomebridgeMQTT.inc.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/system_checkstate_php | '''system_checkstate.php''']] -&lt;/div&gt;</summary>
		<author><name>Elmax</name></author>
	</entry>
	<entry>
		<id>https://mdminfo.ru/index.php?title=Modules/devices/econommode_deactivate_php&amp;diff=2099</id>
		<title>Modules/devices/econommode deactivate php</title>
		<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=Modules/devices/econommode_deactivate_php&amp;diff=2099"/>
		<updated>2024-04-06T15:27:48Z</updated>

		<summary type="html">&lt;p&gt;Elmax: + файл econommode_deactivate.php&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Modules/devices/econommode_deactivate_php | econommode_deactivate.php]]&lt;br /&gt;
[[Папки и файлы|ᐂ В корневой раздел]]  [[Modules/devices|ᐃ В директорию расположения файла]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// Если определено и равно 1, отключаем функциональность простых устройств и прекращаем выполнение.&lt;br /&gt;
if (defined('DISABLE_SIMPLE_DEVICES') &amp;amp;&amp;amp; DISABLE_SIMPLE_DEVICES == 1) return;&lt;br /&gt;
&lt;br /&gt;
// Получаем список объектов, у которых свойство groupEcoOn равно 1.&lt;br /&gt;
$objects = getObjectsByProperty('groupEcoOn', '=', 1);&lt;br /&gt;
// Считаем количество объектов в списке.&lt;br /&gt;
$total = count($objects);&lt;br /&gt;
&lt;br /&gt;
// Начинаем цикл по всем объектам.&lt;br /&gt;
for ($i = 0; $i &amp;lt; $total; $i++) {&lt;br /&gt;
    // Получаем объект по его идентификатору.&lt;br /&gt;
    $obj = getObject($objects[$i]);&lt;br /&gt;
    // Проверяем, является ли объект объектом, имеет ли он идентификатор устройства и не имеет ли доступа к свойству groupEcoOn.&lt;br /&gt;
    if (is_object($obj) &amp;amp;&amp;amp; $obj-&amp;gt;device_id &amp;amp;&amp;amp; !checkAccess('prop_groupEcoOn', $obj-&amp;gt;device_id)) continue;&lt;br /&gt;
    // Вызываем метод turnOn для объекта, передавая параметр source со значением EconomMode.&lt;br /&gt;
    callMethodSafe($objects[$i] . '.turnOn', array('source' =&amp;gt; 'EconomMode'));&lt;br /&gt;
    // Приостанавливаем выполнение скрипта на 50 миллисекунд.&lt;br /&gt;
    usleep(50000);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Elmax</name></author>
	</entry>
	<entry>
		<id>https://mdminfo.ru/index.php?title=Modules/devices/devices_structure_inc_php&amp;diff=2098</id>
		<title>Modules/devices/devices structure inc php</title>
		<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=Modules/devices/devices_structure_inc_php&amp;diff=2098"/>
		<updated>2024-04-06T11:53:55Z</updated>

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

		<summary type="html">&lt;p&gt;Elmax: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Modules/devices|/modules/devices]]&lt;br /&gt;
&lt;br /&gt;
[[Папки и файлы|ᐂ В корневой раздел]]  [[Modules|ᐃ на директорию выше]][https://github.com/sergejey/majordomo/tree/master/modules/devices | Перейти в директорию на github]&lt;br /&gt;
===== Папки директории '''/modules/devices''' =====&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/addons|'''addons''']] - пока папка не имеет описания&lt;br /&gt;
&lt;br /&gt;
===== Файлы директории '''/modules/devices''' =====&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/Rooms_onActivity_php | '''Rooms_onActivity.php''']] - вызывается методом onActivity, класса Rooms. Содерит функции для анализа данных об активности в помещениях и принятия соответствующих действий на основе этой информации.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/Rooms_onIdle_php | '''Rooms_onIdle.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/Rooms_updateActivityStatus_php | '''Rooms_updateActivityStatus.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SButtons_pressed_php | '''SButtons_pressed.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCameras_motionDetected_php | '''SCameras_motionDetected.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCameras_takeSeries_php | '''SCameras_takeSeries.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCameras_takeSnapshot_php | '''SCameras_takeSnapshot.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCameras_updatePreview_php | '''SCameras_updatePreview.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SControllers_switch_php | '''SControllers_switch.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SControllers_turnOff_php | '''SControllers_turnOff.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SControllers_turnOn_php | '''SControllers_turnOn.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCounters_pulseDetected_php | '''SCounters_pulseDetected.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCounters_refreshStats_php | '''SCounters_refreshStats.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCounters_valueUpdated_php | '''SCounters_valueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCounters_valueWorkUpdated_php | '''SCounters_valueWorkUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDevices_batteryLevelUpdated_php | '''SDevices_batteryLevelUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDevices_keepAlive_php | '''SDevices_keepAlive.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDevices_logicAction_php | '''SDevices_logicAction.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDevices_statusUpdated_php | '''SDevices_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_levelUpdated_php | '''SDimmers_levelUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_levelWorkUpdated_php | '''SDimmers_levelWorkUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_setLevel_php | '''SDimmers_setLevel.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_statusUpdated_php | '''SDimmers_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_turnOff_php | '''SDimmers_turnOff.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_turnOn_php | '''SDimmers_turnOn.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SGroups_statusUpdated_php | '''SGroups_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SGroups_switch_php | '''SGroups_switch.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SGroups_turnOff_php | '''SGroups_turnOff.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SGroups_turnOn_php | '''SGroups_turnOn.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLeak_alert_php | '''SLeak_alert.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLeak_blockSensor_php | '''SLeak_blockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLeak_statusUpdated_php | '''SLeak_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLeak_unblockSensor_php | '''SLeak_unblockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMotions_blockSensor_php | '''SMotions_blockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMotions_motionDetected_php | '''SMotions_motionDetected.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMotions_unblockSensor_php | '''SMotions_unblockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenClose_blockSensor_php | '''SOpenClose_blockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenClose_statusUpdated_php | '''SOpenClose_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenClose_unblockSensor_php | '''SOpenClose_unblockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_close_php | '''SOpenable_close.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_levelUpdated_php | '''SOpenable_levelUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_open_php | '''SOpenable_open.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_setLevel_php | '''SOpenable_setLevel.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_statusUpdated_php | '''SOpenable_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_switch_php | '''SOpenable_switch.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SPowerSensors_loadStatusChanged_php | '''SPowerSensors_loadStatusChanged.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SPowerSensors_valueUpdated_php | '''SPowerSensors_valueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SRGB_colorUpdated_php | '''SRGB_colorUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SRGB_setColor_php | '''SRGB_setColor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SRGB_turnOff_php | '''SRGB_turnOff.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SRGB_turnOn_php | '''SRGB_turnOn.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSensors_alert_php | '''SSensors_alert.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSensors_blockSensor_php | '''SSensors_blockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSensors_unblockSensor_php | '''SSensors_unblockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSensors_valueUpdated_php | '''SSensors_valueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSmoke_alert_php | '''SSmoke_alert.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSmoke_blockSensor_php | '''SSmoke_blockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSmoke_statusUpdated_php | '''SSmoke_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSmoke_unblockSensor_php | '''SSmoke_unblockSensor.php''']] -  &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_disable_php | '''SThermostats_disable.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_enable_php | '''SThermostats_enable.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_setTargetTemperature_php | '''SThermostats_setTargetTemperature.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_statusUpdated_php | '''SThermostats_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_switchEnable_php | '''SThermostats_switchEnable.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_tempDown_php | '''SThermostats_tempDown.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_tempUp_php | '''SThermostats_tempUp.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_turnOff_php | '''SThermostats_turnOff.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_turnOn_php | '''SThermostats_turnOn.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_valueUpdated_php | '''SThermostats_valueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_configUpdated_php | '''SAirConditioners_configUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_fanSpeedUpdated_php | '''SAirConditioners_fanSpeedUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_setFanSpeedMode_php | '''SAirConditioners_setFanSpeedMode.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_setTargetTemperature_php | '''SAirConditioners_setTargetTemperature.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_setThermostatMode_php | '''SAirConditioners_setThermostatMode.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_tempDown_php | '''SAirConditioners_tempDown.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_tempUp_php | '''SAirConditioners_tempUp.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_thermostatUpdated_php | '''SAirConditioners_thermostatUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLightSensors_periodMinValueUpdated_php | '''SLightSensors_periodMinValueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLightSensors_valueUpdated_php | '''SLightSensors_valueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMedias_pause_php | '''SMedias_pause.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMedias_setChannel_php | '''SMedias_setChannel.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMedias_setSource_php | '''SMedias_setSource.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMedias_setVolume_php | '''SMedias_setVolume.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/STVs_pause_php | '''STVs_pause.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/STVs_setChannel_php | '''STVs_setChannel.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/STVs_setSource_php | '''STVs_setSource.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/STVs_setVolume_php | '''STVs_setVolume.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SVacuums_pause_php | '''SVacuums_pause.php''']] - &lt;br /&gt;
&lt;br /&gt;
'''app''' -  пока файл не понятен, его назначение так-же&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/darknessmode_activate_php | '''darknessmode_activate.php''']] - для активации устройств, связанных с группой &amp;quot;groupSunset&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/darknessmode_deactivate_php | '''darknessmode_deactivate.php''']] - для деактивации устройств, связанных с группой &amp;quot;groupSunset&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_class_php | '''devices.class.php''']] - содержит набор функций для взаимодействия с устройствами в рамках проекта. Он обеспечивает взаимодействие между устройствами, базой данных, внешними API и другими частями системы, такими как управление группами устройств, связями между ними и действиями, которые могут быть выполнены над устройствами.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_edit_inc_php | '''devices_edit.inc.php''']] - содержит функции и код, связанный с редактированием устройств в проекте. Он включает в себя обработку форм, сохранение данных и другие операции, связанные с редактированием устройств.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_links_inc_php | '''devices_links.inc.php''']] - содержит функции для работы с связями между устройствами. Он включает в себя обработку создания, обновления и удаления связей, а также работу с деталями связей и другие операции, связанные с управлением связями устройств.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_links_actions_inc_php | '''devices_links_actions.inc.php''']] - содержит функции для обработки действий, связанных с устройствами. Он выполняет действия, такие как включение, выключение, установка цвета и передача значений объектов. Также файл подключает дополнительные скрипты для обработки действий из директории [[Modules/devices/addons|'''addons''']]&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_manage_groups_inc_php | '''devices_manage_groups.inc.php''']] - содержит функции для управления группами устройств. Он включает в себя операции по созданию, редактированию и удалению групп устройств, обновление объектов группы, очистку кэша значений, а также перенаправление на соответствующие страницы просмотра.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_manage_schedule_inc_php | '''devices_manage_schedule.inc.php''']] -  этот файл включает в себя операции по созданию, редактированию и удалению расписаний для устройств, а также операции по привязке устройств к определенным временным интервалам и управлению их работой в соответствии с расписанием.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_quick_edit_inc_php | '''devices_quick_edit.inc.php''']] - содержит код для сщздания/редактирования устройств. Он обеспечивает быстрый доступ к основным параметрам устройств, таким как имя, описание, состояние и другие атрибуты, позволяя пользователям внести изменения на странице редактирования.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_schedule_inc_php | '''devices_schedule.inc.php''']] - этот файл предоставляет функциональность для управления расписаниями устройств, включая создание, редактирование и удаление расписаний, а также привязку устройств к определенным временным интервалам и управление их работой в соответствии с расписанием.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_search_inc_php | '''devices_search.inc.php''']] -  содержит функции для поиска устройств в системе. Он предоставляет возможность осуществлять поиск устройств по различным критериям, таким как имя устройства, тип, статус и другие атрибуты. Кроме того, файл может включать функции для фильтрации результатов поиска и отображения найденной информации о устройствах.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_structure_inc_php | '''devices_structure.inc.php''']] - определяет структуру свойств и методов, которыми будут наделены устройства в системе. Он содержит описание основных характеристик устройств, таких как их тип, статус, параметры, возможные действия и другие атрибуты. Кроме того, данный файл определяет методы, которые позволяют взаимодействовать с устройствами, управлять ими и получать информацию о их состоянии.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_structure_links_inc_php | '''devices_structure_links.inc.php''']] - файл определяет структуру связей между устройствами в системе. Он содержит описание основных характеристик связей, таких как тип связи, устройства, которые связаны, параметры связи и другие атрибуты. Кроме того, данный файл определяет методы для управления связями между устройствами, включая создание новых связей, редактирование существующих и удаление ненужных связей.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_widgets_js_php | '''devices_widgets.js.php''']] - файл с примесью js, его я не знаю совсем, поэтому подождем описания знающих, а по ссылке будет страница с кодом без комментариев.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/econommode_activate_php | '''econommode_activate.php''']] - метод активации режима экономии энергии EconomMode.activate. Класс OperationalModes, обьект EconomMode.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/econommode_deactivate_php | '''econommode_deactivate.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/homebridgeSync_inc_php | '''homebridgeSync.inc.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/nightmode_activate_php | '''nightmode_activate.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/nobodyhomemode_activate_php | '''nobodyhomemode_activate.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/nobodyhomemode_deactivate_php | '''nobodyhomemode_deactivate.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/processCommand_inc_php | '''processCommand.inc.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/processHomebridgeMQTT_inc_php | '''processHomebridgeMQTT.inc.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/system_checkstate_php | '''system_checkstate.php''']] -&lt;/div&gt;</summary>
		<author><name>Elmax</name></author>
	</entry>
	<entry>
		<id>https://mdminfo.ru/index.php?title=Modules/devices/econommode_activate_php&amp;diff=2096</id>
		<title>Modules/devices/econommode activate php</title>
		<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=Modules/devices/econommode_activate_php&amp;diff=2096"/>
		<updated>2024-04-06T11:14:44Z</updated>

		<summary type="html">&lt;p&gt;Elmax: + файл econommode_activate.php&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Modules/devices/econommode_activate_php | econommode_activate.php]]&lt;br /&gt;
[[Папки и файлы|ᐂ В корневой раздел]]  [[Modules/devices|ᐃ В директорию расположения файла]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// Если определено и равно 1, отключаем функциональность простых устройств и прекращаем выполнение.&lt;br /&gt;
if (defined('DISABLE_SIMPLE_DEVICES') &amp;amp;&amp;amp; DISABLE_SIMPLE_DEVICES == 1) return;&lt;br /&gt;
&lt;br /&gt;
// Получаем список объектов, у которых свойство groupEco равно 1.&lt;br /&gt;
$objects = getObjectsByProperty('groupEco', '=', 1);&lt;br /&gt;
// Считаем количество объектов в списке.&lt;br /&gt;
$total = count($objects);&lt;br /&gt;
&lt;br /&gt;
// Начинаем цикл по всем объектам.&lt;br /&gt;
for ($i = 0; $i &amp;lt; $total; $i++) {&lt;br /&gt;
    // Проверяем глобальное состояние объекта.&lt;br /&gt;
    if (getGlobal($objects[$i] . '.status')) {&lt;br /&gt;
        // Получаем объект по его идентификатору.&lt;br /&gt;
        $obj = getObject($objects[$i]);&lt;br /&gt;
        // Проверяем, является ли объект объектом, имеет ли он идентификатор устройства и не имеет ли доступа к свойству groupEco.&lt;br /&gt;
        if (is_object($obj) &amp;amp;&amp;amp; $obj-&amp;gt;device_id &amp;amp;&amp;amp; !checkAccess('prop_groupEco', $obj-&amp;gt;device_id)) continue;&lt;br /&gt;
        // Вызываем метод turnOff для объекта, передавая параметр source со значением EconomMode.&lt;br /&gt;
        callMethodSafe($objects[$i] . '.turnOff', array('source' =&amp;gt; 'EconomMode'));&lt;br /&gt;
        // Приостанавливаем выполнение скрипта на 50 миллисекунд.&lt;br /&gt;
        usleep(50000);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Elmax</name></author>
	</entry>
	<entry>
		<id>https://mdminfo.ru/index.php?title=Modules/devices/devices_widgets_js_php&amp;diff=2095</id>
		<title>Modules/devices/devices widgets js php</title>
		<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=Modules/devices/devices_widgets_js_php&amp;diff=2095"/>
		<updated>2024-04-06T11:05:24Z</updated>

		<summary type="html">&lt;p&gt;Elmax: + файл devices_widgets.js.php&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Modules/devices/devices_widgets_js_php | devices_widgets.js.php]]&lt;br /&gt;
&lt;br /&gt;
[[Папки и файлы|ᐂ В корневой раздел]]  [[Modules/devices|ᐃ В директорию расположения файла]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
header(&amp;quot;Content-type:application/javascript&amp;quot;);&lt;br /&gt;
chdir(dirname(__FILE__) . '/../../');&lt;br /&gt;
include_once(&amp;quot;./config.php&amp;quot;);&lt;br /&gt;
include_once(&amp;quot;./lib/loader.php&amp;quot;);&lt;br /&gt;
include_once(&amp;quot;./load_settings.php&amp;quot;);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
var activeDevices = Array();&lt;br /&gt;
var devicesWidgetWSTimer;&lt;br /&gt;
var devicesWidgetWSUpdatedTimer;&lt;br /&gt;
&lt;br /&gt;
$.subscribe('wsData', function (_, response) {&lt;br /&gt;
    if (response.action=='subscribed') {&lt;br /&gt;
        //console.log('Subscription to devices confirmed.');&lt;br /&gt;
    }&lt;br /&gt;
    if (response.action=='devices') {&lt;br /&gt;
        var obj=jQuery.parseJSON(response.data);&lt;br /&gt;
        if (typeof obj.DATA !='object') return false;&lt;br /&gt;
        var objCnt = obj.DATA.length;&lt;br /&gt;
        if (objCnt) {&lt;br /&gt;
            for(var i=0;i&amp;lt;objCnt;i++) {&lt;br /&gt;
                var device_id=obj.DATA[i].DEVICE_ID;&lt;br /&gt;
                var html=obj.DATA[i].DATA;&lt;br /&gt;
                $('#device'+device_id).html(html);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
function refreshDevicesHTTP() {&lt;br /&gt;
    var baseURL = ROOTHTML + &amp;quot;ajax/devices.html?op=get_device&amp;amp;id=&amp;quot;;&lt;br /&gt;
    activeDevices.forEach(function(item, index) {&lt;br /&gt;
        var url = baseURL + item;&lt;br /&gt;
        $.ajax({&lt;br /&gt;
            url: url&lt;br /&gt;
        }).done(function(data) {&lt;br /&gt;
            var obj=jQuery.parseJSON(data);&lt;br /&gt;
            $('#device'+item).html(obj.HTML);&lt;br /&gt;
        });&lt;br /&gt;
    });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function refreshWSSubscription() {&lt;br /&gt;
    clearTimeout(devicesWidgetWSTimer);&lt;br /&gt;
    //console.log('refresh subscription');&lt;br /&gt;
    if (startedWebSockets) {&lt;br /&gt;
        //for(var i=0;i&amp;lt;activeDevices.length;i++) {&lt;br /&gt;
            console.log('subscribing ws to device '+activeDevices.join());&lt;br /&gt;
            var payload;&lt;br /&gt;
            payload = new Object();&lt;br /&gt;
            payload.action = 'Subscribe';&lt;br /&gt;
            payload.data = new Object();&lt;br /&gt;
            payload.data.TYPE='devices';&lt;br /&gt;
            payload.data.DEVICE_ID=activeDevices.join();&lt;br /&gt;
            wsSocket.send(JSON.stringify(payload));&lt;br /&gt;
        //}&lt;br /&gt;
        devicesWidgetWSTimer=setTimeout('refreshWSSubscription();',10*60000);&lt;br /&gt;
    } else {&lt;br /&gt;
        refreshDevicesHTTP();&lt;br /&gt;
        devicesWidgetWSTimer=setTimeout('refreshWSSubscription();',5000);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function activeDevicesUpdated() {&lt;br /&gt;
    clearTimeout(devicesWidgetWSUpdatedTimer);&lt;br /&gt;
    devicesWidgetWSUpdatedTimer=setTimeout('refreshWSSubscription();',2000);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function requestDeviceHTML(device_id,widgetElement) {&lt;br /&gt;
    //alert('requested html for '+device_id+' ');&lt;br /&gt;
&lt;br /&gt;
    if (activeDevices.indexOf(device_id)&amp;lt;0) {&lt;br /&gt;
        activeDevices.push(device_id);&lt;br /&gt;
        activeDevicesUpdated();&lt;br /&gt;
    }&lt;br /&gt;
    var url='&amp;lt;?php echo ROOTHTML;?&amp;gt;ajax/devices.html?op=get_device&amp;amp;id='+device_id;&lt;br /&gt;
    $.ajax({&lt;br /&gt;
        url: url&lt;br /&gt;
    }).done(function(data) {&lt;br /&gt;
        var res=JSON.parse(data);&lt;br /&gt;
        if (typeof res.HTML !== 'undefined') {&lt;br /&gt;
            var myTextElement = $(&amp;quot;&amp;lt;div id='device&amp;quot;+device_id+&amp;quot;'&amp;gt;&amp;quot;+res.HTML+&amp;quot;&amp;lt;/div&amp;gt;&amp;quot;);&lt;br /&gt;
            $(widgetElement).html(myTextElement);&lt;br /&gt;
        }&lt;br /&gt;
        /*&lt;br /&gt;
        if (typeof res.HEIGHT !== 'undefined') {&lt;br /&gt;
            newSettings.size=res.HEIGHT;&lt;br /&gt;
            alert(newSettings);&lt;br /&gt;
        }&lt;br /&gt;
        */&lt;br /&gt;
    });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
(function()&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
    freeboard.loadWidgetPlugin({&lt;br /&gt;
        // Same stuff here as with datasource plugin.&lt;br /&gt;
        &amp;quot;type_name&amp;quot;   : &amp;quot;devices_plugin&amp;quot;,&lt;br /&gt;
        &amp;quot;display_name&amp;quot;: LANG_DEVICE,&lt;br /&gt;
        &amp;quot;description&amp;quot; : &amp;quot;MajorDoMo &amp;quot;+LANG_DEVICES,&lt;br /&gt;
        &amp;quot;fill_size&amp;quot; : false,&lt;br /&gt;
        &amp;quot;settings&amp;quot;    : [&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;name&amp;quot;        : &amp;quot;device_id&amp;quot;,&lt;br /&gt;
                &amp;quot;display_name&amp;quot;: LANG_DEVICE,&lt;br /&gt;
                &amp;quot;required&amp;quot; : true,&lt;br /&gt;
                &amp;quot;type&amp;quot;        : &amp;quot;option&amp;quot;,&lt;br /&gt;
                &amp;lt;?php&lt;br /&gt;
                $scripts=SQLSelect(&amp;quot;SELECT ID,TITLE FROM devices ORDER BY TITLE&amp;quot;);&lt;br /&gt;
                ?&amp;gt;&lt;br /&gt;
                &amp;quot;options&amp;quot;     : [&lt;br /&gt;
                    &amp;lt;?php&lt;br /&gt;
                    foreach($scripts as $k=&amp;gt;$v) {&lt;br /&gt;
                        echo '{';&lt;br /&gt;
                        echo '&amp;quot;name&amp;quot; : &amp;quot;'.($v['TITLE']).'&amp;quot;,'.&amp;quot;\n&amp;quot;;&lt;br /&gt;
                        echo '&amp;quot;value&amp;quot; : &amp;quot;'.$v['ID'].'&amp;quot;';&lt;br /&gt;
                        echo '},';&lt;br /&gt;
                    }&lt;br /&gt;
                    ?&amp;gt;&lt;br /&gt;
                ]&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;name&amp;quot;        : &amp;quot;size&amp;quot;,&lt;br /&gt;
                &amp;quot;display_name&amp;quot;: LANG_SIZE,&lt;br /&gt;
                &amp;quot;type&amp;quot;        : &amp;quot;option&amp;quot;,&lt;br /&gt;
                &amp;quot;options&amp;quot;     : [&lt;br /&gt;
                    {&amp;quot;name&amp;quot; : &amp;quot;1&amp;quot;,&amp;quot;value&amp;quot;: &amp;quot;1&amp;quot;},&lt;br /&gt;
                    {&amp;quot;name&amp;quot; : &amp;quot;2&amp;quot;,&amp;quot;value&amp;quot;: &amp;quot;2&amp;quot;},&lt;br /&gt;
                    {&amp;quot;name&amp;quot; : &amp;quot;3&amp;quot;,&amp;quot;value&amp;quot;: &amp;quot;3&amp;quot;},&lt;br /&gt;
                    {&amp;quot;name&amp;quot; : &amp;quot;4&amp;quot;,&amp;quot;value&amp;quot;: &amp;quot;4&amp;quot;},&lt;br /&gt;
                    {&amp;quot;name&amp;quot; : &amp;quot;5&amp;quot;,&amp;quot;value&amp;quot;: &amp;quot;5&amp;quot;},&lt;br /&gt;
                    {&amp;quot;name&amp;quot; : &amp;quot;6&amp;quot;,&amp;quot;value&amp;quot;: &amp;quot;6&amp;quot;},&lt;br /&gt;
                    {&amp;quot;name&amp;quot; : &amp;quot;7&amp;quot;,&amp;quot;value&amp;quot;: &amp;quot;7&amp;quot;},&lt;br /&gt;
                    {&amp;quot;name&amp;quot; : &amp;quot;8&amp;quot;,&amp;quot;value&amp;quot;: &amp;quot;8&amp;quot;}&lt;br /&gt;
                ]&lt;br /&gt;
            }&lt;br /&gt;
        ],&lt;br /&gt;
// Same as with datasource plugin, but there is no updateCallback parameter in this case.&lt;br /&gt;
        newInstance   : function(settings, newInstanceCallback)&lt;br /&gt;
        {&lt;br /&gt;
            newInstanceCallback(new myDevicesPlugin(settings));&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    var myDevicesPlugin = function(settings)&lt;br /&gt;
    {&lt;br /&gt;
        var self = this;&lt;br /&gt;
        var currentSettings = settings;&lt;br /&gt;
        var widgetElement;&lt;br /&gt;
&lt;br /&gt;
        function updateDeviceHTML()&lt;br /&gt;
        {&lt;br /&gt;
            if(widgetElement)&lt;br /&gt;
            {&lt;br /&gt;
                requestDeviceHTML(currentSettings.device_id,widgetElement);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        self.render = function(element)&lt;br /&gt;
        {&lt;br /&gt;
            widgetElement = element;&lt;br /&gt;
            updateDeviceHTML();&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        self.getHeight = function()&lt;br /&gt;
        {&lt;br /&gt;
            if (typeof currentSettings.size == 'undefined') currentSettings.size=1;&lt;br /&gt;
            return parseInt(currentSettings.size);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        self.onSettingsChanged = function(newSettings)&lt;br /&gt;
        {&lt;br /&gt;
            currentSettings = newSettings;&lt;br /&gt;
            updateDeviceHTML();&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        self.onCalculatedValueChanged = function(settingName, newValue)&lt;br /&gt;
        {&lt;br /&gt;
            updateDeviceHTML();&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        self.onDispose = function()&lt;br /&gt;
        {&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}());&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Elmax</name></author>
	</entry>
	<entry>
		<id>https://mdminfo.ru/index.php?title=Modules/devices&amp;diff=2094</id>
		<title>Modules/devices</title>
		<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=Modules/devices&amp;diff=2094"/>
		<updated>2024-04-06T11:03:35Z</updated>

		<summary type="html">&lt;p&gt;Elmax: почти описание devices_widgets.js.php&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Modules/devices|/modules/devices]]&lt;br /&gt;
&lt;br /&gt;
[[Папки и файлы|ᐂ В корневой раздел]]  [[Modules|ᐃ на директорию выше]][https://github.com/sergejey/majordomo/tree/master/modules/devices | Перейти в директорию на github]&lt;br /&gt;
===== Папки директории '''/modules/devices''' =====&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/addons|'''addons''']] - пока папка не имеет описания&lt;br /&gt;
&lt;br /&gt;
===== Файлы директории '''/modules/devices''' =====&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/Rooms_onActivity_php | '''Rooms_onActivity.php''']] - вызывается методом onActivity, класса Rooms. Содерит функции для анализа данных об активности в помещениях и принятия соответствующих действий на основе этой информации.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/Rooms_onIdle_php | '''Rooms_onIdle.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/Rooms_updateActivityStatus_php | '''Rooms_updateActivityStatus.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SButtons_pressed_php | '''SButtons_pressed.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCameras_motionDetected_php | '''SCameras_motionDetected.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCameras_takeSeries_php | '''SCameras_takeSeries.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCameras_takeSnapshot_php | '''SCameras_takeSnapshot.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCameras_updatePreview_php | '''SCameras_updatePreview.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SControllers_switch_php | '''SControllers_switch.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SControllers_turnOff_php | '''SControllers_turnOff.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SControllers_turnOn_php | '''SControllers_turnOn.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCounters_pulseDetected_php | '''SCounters_pulseDetected.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCounters_refreshStats_php | '''SCounters_refreshStats.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCounters_valueUpdated_php | '''SCounters_valueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCounters_valueWorkUpdated_php | '''SCounters_valueWorkUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDevices_batteryLevelUpdated_php | '''SDevices_batteryLevelUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDevices_keepAlive_php | '''SDevices_keepAlive.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDevices_logicAction_php | '''SDevices_logicAction.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDevices_statusUpdated_php | '''SDevices_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_levelUpdated_php | '''SDimmers_levelUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_levelWorkUpdated_php | '''SDimmers_levelWorkUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_setLevel_php | '''SDimmers_setLevel.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_statusUpdated_php | '''SDimmers_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_turnOff_php | '''SDimmers_turnOff.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_turnOn_php | '''SDimmers_turnOn.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SGroups_statusUpdated_php | '''SGroups_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SGroups_switch_php | '''SGroups_switch.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SGroups_turnOff_php | '''SGroups_turnOff.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SGroups_turnOn_php | '''SGroups_turnOn.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLeak_alert_php | '''SLeak_alert.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLeak_blockSensor_php | '''SLeak_blockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLeak_statusUpdated_php | '''SLeak_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLeak_unblockSensor_php | '''SLeak_unblockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMotions_blockSensor_php | '''SMotions_blockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMotions_motionDetected_php | '''SMotions_motionDetected.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMotions_unblockSensor_php | '''SMotions_unblockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenClose_blockSensor_php | '''SOpenClose_blockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenClose_statusUpdated_php | '''SOpenClose_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenClose_unblockSensor_php | '''SOpenClose_unblockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_close_php | '''SOpenable_close.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_levelUpdated_php | '''SOpenable_levelUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_open_php | '''SOpenable_open.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_setLevel_php | '''SOpenable_setLevel.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_statusUpdated_php | '''SOpenable_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_switch_php | '''SOpenable_switch.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SPowerSensors_loadStatusChanged_php | '''SPowerSensors_loadStatusChanged.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SPowerSensors_valueUpdated_php | '''SPowerSensors_valueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SRGB_colorUpdated_php | '''SRGB_colorUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SRGB_setColor_php | '''SRGB_setColor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SRGB_turnOff_php | '''SRGB_turnOff.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SRGB_turnOn_php | '''SRGB_turnOn.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSensors_alert_php | '''SSensors_alert.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSensors_blockSensor_php | '''SSensors_blockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSensors_unblockSensor_php | '''SSensors_unblockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSensors_valueUpdated_php | '''SSensors_valueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSmoke_alert_php | '''SSmoke_alert.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSmoke_blockSensor_php | '''SSmoke_blockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSmoke_statusUpdated_php | '''SSmoke_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSmoke_unblockSensor_php | '''SSmoke_unblockSensor.php''']] -  &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_disable_php | '''SThermostats_disable.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_enable_php | '''SThermostats_enable.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_setTargetTemperature_php | '''SThermostats_setTargetTemperature.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_statusUpdated_php | '''SThermostats_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_switchEnable_php | '''SThermostats_switchEnable.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_tempDown_php | '''SThermostats_tempDown.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_tempUp_php | '''SThermostats_tempUp.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_turnOff_php | '''SThermostats_turnOff.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_turnOn_php | '''SThermostats_turnOn.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_valueUpdated_php | '''SThermostats_valueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_configUpdated_php | '''SAirConditioners_configUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_fanSpeedUpdated_php | '''SAirConditioners_fanSpeedUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_setFanSpeedMode_php | '''SAirConditioners_setFanSpeedMode.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_setTargetTemperature_php | '''SAirConditioners_setTargetTemperature.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_setThermostatMode_php | '''SAirConditioners_setThermostatMode.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_tempDown_php | '''SAirConditioners_tempDown.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_tempUp_php | '''SAirConditioners_tempUp.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_thermostatUpdated_php | '''SAirConditioners_thermostatUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLightSensors_periodMinValueUpdated_php | '''SLightSensors_periodMinValueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLightSensors_valueUpdated_php | '''SLightSensors_valueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMedias_pause_php | '''SMedias_pause.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMedias_setChannel_php | '''SMedias_setChannel.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMedias_setSource_php | '''SMedias_setSource.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMedias_setVolume_php | '''SMedias_setVolume.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/STVs_pause_php | '''STVs_pause.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/STVs_setChannel_php | '''STVs_setChannel.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/STVs_setSource_php | '''STVs_setSource.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/STVs_setVolume_php | '''STVs_setVolume.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SVacuums_pause_php | '''SVacuums_pause.php''']] - &lt;br /&gt;
&lt;br /&gt;
'''app''' -  пока файл не понятен, его назначение так-же&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/darknessmode_activate_php | '''darknessmode_activate.php''']] - для активации устройств, связанных с группой &amp;quot;groupSunset&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/darknessmode_deactivate_php | '''darknessmode_deactivate.php''']] - для деактивации устройств, связанных с группой &amp;quot;groupSunset&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_class_php | '''devices.class.php''']] - содержит набор функций для взаимодействия с устройствами в рамках проекта. Он обеспечивает взаимодействие между устройствами, базой данных, внешними API и другими частями системы, такими как управление группами устройств, связями между ними и действиями, которые могут быть выполнены над устройствами.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_edit_inc_php | '''devices_edit.inc.php''']] - содержит функции и код, связанный с редактированием устройств в проекте. Он включает в себя обработку форм, сохранение данных и другие операции, связанные с редактированием устройств.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_links_inc_php | '''devices_links.inc.php''']] - содержит функции для работы с связями между устройствами. Он включает в себя обработку создания, обновления и удаления связей, а также работу с деталями связей и другие операции, связанные с управлением связями устройств.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_links_actions_inc_php | '''devices_links_actions.inc.php''']] - содержит функции для обработки действий, связанных с устройствами. Он выполняет действия, такие как включение, выключение, установка цвета и передача значений объектов. Также файл подключает дополнительные скрипты для обработки действий из директории [[Modules/devices/addons|'''addons''']]&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_manage_groups_inc_php | '''devices_manage_groups.inc.php''']] - содержит функции для управления группами устройств. Он включает в себя операции по созданию, редактированию и удалению групп устройств, обновление объектов группы, очистку кэша значений, а также перенаправление на соответствующие страницы просмотра.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_manage_schedule_inc_php | '''devices_manage_schedule.inc.php''']] -  этот файл включает в себя операции по созданию, редактированию и удалению расписаний для устройств, а также операции по привязке устройств к определенным временным интервалам и управлению их работой в соответствии с расписанием.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_quick_edit_inc_php | '''devices_quick_edit.inc.php''']] - содержит код для сщздания/редактирования устройств. Он обеспечивает быстрый доступ к основным параметрам устройств, таким как имя, описание, состояние и другие атрибуты, позволяя пользователям внести изменения на странице редактирования.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_schedule_inc_php | '''devices_schedule.inc.php''']] - этот файл предоставляет функциональность для управления расписаниями устройств, включая создание, редактирование и удаление расписаний, а также привязку устройств к определенным временным интервалам и управление их работой в соответствии с расписанием.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_search_inc_php | '''devices_search.inc.php''']] -  содержит функции для поиска устройств в системе. Он предоставляет возможность осуществлять поиск устройств по различным критериям, таким как имя устройства, тип, статус и другие атрибуты. Кроме того, файл может включать функции для фильтрации результатов поиска и отображения найденной информации о устройствах.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_structure_inc_php | '''devices_structure.inc.php''']] - определяет структуру свойств и методов, которыми будут наделены устройства в системе. Он содержит описание основных характеристик устройств, таких как их тип, статус, параметры, возможные действия и другие атрибуты. Кроме того, данный файл определяет методы, которые позволяют взаимодействовать с устройствами, управлять ими и получать информацию о их состоянии.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_structure_links_inc_php | '''devices_structure_links.inc.php''']] - файл определяет структуру связей между устройствами в системе. Он содержит описание основных характеристик связей, таких как тип связи, устройства, которые связаны, параметры связи и другие атрибуты. Кроме того, данный файл определяет методы для управления связями между устройствами, включая создание новых связей, редактирование существующих и удаление ненужных связей.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_widgets_js_php | '''devices_widgets.js.php''']] - файл с примесью js, его я не знаю совсем, поэтому подождем описания знающих, а по ссылке будет страница с кодом без комментариев.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/econommode_activate_php | '''econommode_activate.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/econommode_deactivate_php | '''econommode_deactivate.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/homebridgeSync_inc_php | '''homebridgeSync.inc.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/nightmode_activate_php | '''nightmode_activate.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/nobodyhomemode_activate_php | '''nobodyhomemode_activate.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/nobodyhomemode_deactivate_php | '''nobodyhomemode_deactivate.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/processCommand_inc_php | '''processCommand.inc.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/processHomebridgeMQTT_inc_php | '''processHomebridgeMQTT.inc.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/system_checkstate_php | '''system_checkstate.php''']] -&lt;/div&gt;</summary>
		<author><name>Elmax</name></author>
	</entry>
	<entry>
		<id>https://mdminfo.ru/index.php?title=Modules/devices&amp;diff=2093</id>
		<title>Modules/devices</title>
		<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=Modules/devices&amp;diff=2093"/>
		<updated>2024-04-06T10:52:08Z</updated>

		<summary type="html">&lt;p&gt;Elmax: описание devices_structure_links.inc.php&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Modules/devices|/modules/devices]]&lt;br /&gt;
&lt;br /&gt;
[[Папки и файлы|ᐂ В корневой раздел]]  [[Modules|ᐃ на директорию выше]][https://github.com/sergejey/majordomo/tree/master/modules/devices | Перейти в директорию на github]&lt;br /&gt;
===== Папки директории '''/modules/devices''' =====&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/addons|'''addons''']] - пока папка не имеет описания&lt;br /&gt;
&lt;br /&gt;
===== Файлы директории '''/modules/devices''' =====&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/Rooms_onActivity_php | '''Rooms_onActivity.php''']] - вызывается методом onActivity, класса Rooms. Содерит функции для анализа данных об активности в помещениях и принятия соответствующих действий на основе этой информации.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/Rooms_onIdle_php | '''Rooms_onIdle.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/Rooms_updateActivityStatus_php | '''Rooms_updateActivityStatus.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SButtons_pressed_php | '''SButtons_pressed.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCameras_motionDetected_php | '''SCameras_motionDetected.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCameras_takeSeries_php | '''SCameras_takeSeries.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCameras_takeSnapshot_php | '''SCameras_takeSnapshot.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCameras_updatePreview_php | '''SCameras_updatePreview.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SControllers_switch_php | '''SControllers_switch.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SControllers_turnOff_php | '''SControllers_turnOff.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SControllers_turnOn_php | '''SControllers_turnOn.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCounters_pulseDetected_php | '''SCounters_pulseDetected.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCounters_refreshStats_php | '''SCounters_refreshStats.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCounters_valueUpdated_php | '''SCounters_valueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCounters_valueWorkUpdated_php | '''SCounters_valueWorkUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDevices_batteryLevelUpdated_php | '''SDevices_batteryLevelUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDevices_keepAlive_php | '''SDevices_keepAlive.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDevices_logicAction_php | '''SDevices_logicAction.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDevices_statusUpdated_php | '''SDevices_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_levelUpdated_php | '''SDimmers_levelUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_levelWorkUpdated_php | '''SDimmers_levelWorkUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_setLevel_php | '''SDimmers_setLevel.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_statusUpdated_php | '''SDimmers_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_turnOff_php | '''SDimmers_turnOff.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_turnOn_php | '''SDimmers_turnOn.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SGroups_statusUpdated_php | '''SGroups_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SGroups_switch_php | '''SGroups_switch.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SGroups_turnOff_php | '''SGroups_turnOff.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SGroups_turnOn_php | '''SGroups_turnOn.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLeak_alert_php | '''SLeak_alert.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLeak_blockSensor_php | '''SLeak_blockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLeak_statusUpdated_php | '''SLeak_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLeak_unblockSensor_php | '''SLeak_unblockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMotions_blockSensor_php | '''SMotions_blockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMotions_motionDetected_php | '''SMotions_motionDetected.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMotions_unblockSensor_php | '''SMotions_unblockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenClose_blockSensor_php | '''SOpenClose_blockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenClose_statusUpdated_php | '''SOpenClose_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenClose_unblockSensor_php | '''SOpenClose_unblockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_close_php | '''SOpenable_close.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_levelUpdated_php | '''SOpenable_levelUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_open_php | '''SOpenable_open.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_setLevel_php | '''SOpenable_setLevel.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_statusUpdated_php | '''SOpenable_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_switch_php | '''SOpenable_switch.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SPowerSensors_loadStatusChanged_php | '''SPowerSensors_loadStatusChanged.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SPowerSensors_valueUpdated_php | '''SPowerSensors_valueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SRGB_colorUpdated_php | '''SRGB_colorUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SRGB_setColor_php | '''SRGB_setColor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SRGB_turnOff_php | '''SRGB_turnOff.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SRGB_turnOn_php | '''SRGB_turnOn.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSensors_alert_php | '''SSensors_alert.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSensors_blockSensor_php | '''SSensors_blockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSensors_unblockSensor_php | '''SSensors_unblockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSensors_valueUpdated_php | '''SSensors_valueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSmoke_alert_php | '''SSmoke_alert.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSmoke_blockSensor_php | '''SSmoke_blockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSmoke_statusUpdated_php | '''SSmoke_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSmoke_unblockSensor_php | '''SSmoke_unblockSensor.php''']] -  &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_disable_php | '''SThermostats_disable.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_enable_php | '''SThermostats_enable.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_setTargetTemperature_php | '''SThermostats_setTargetTemperature.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_statusUpdated_php | '''SThermostats_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_switchEnable_php | '''SThermostats_switchEnable.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_tempDown_php | '''SThermostats_tempDown.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_tempUp_php | '''SThermostats_tempUp.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_turnOff_php | '''SThermostats_turnOff.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_turnOn_php | '''SThermostats_turnOn.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_valueUpdated_php | '''SThermostats_valueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_configUpdated_php | '''SAirConditioners_configUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_fanSpeedUpdated_php | '''SAirConditioners_fanSpeedUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_setFanSpeedMode_php | '''SAirConditioners_setFanSpeedMode.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_setTargetTemperature_php | '''SAirConditioners_setTargetTemperature.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_setThermostatMode_php | '''SAirConditioners_setThermostatMode.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_tempDown_php | '''SAirConditioners_tempDown.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_tempUp_php | '''SAirConditioners_tempUp.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_thermostatUpdated_php | '''SAirConditioners_thermostatUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLightSensors_periodMinValueUpdated_php | '''SLightSensors_periodMinValueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLightSensors_valueUpdated_php | '''SLightSensors_valueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMedias_pause_php | '''SMedias_pause.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMedias_setChannel_php | '''SMedias_setChannel.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMedias_setSource_php | '''SMedias_setSource.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMedias_setVolume_php | '''SMedias_setVolume.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/STVs_pause_php | '''STVs_pause.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/STVs_setChannel_php | '''STVs_setChannel.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/STVs_setSource_php | '''STVs_setSource.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/STVs_setVolume_php | '''STVs_setVolume.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SVacuums_pause_php | '''SVacuums_pause.php''']] - &lt;br /&gt;
&lt;br /&gt;
'''app''' -  пока файл не понятен, его назначение так-же&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/darknessmode_activate_php | '''darknessmode_activate.php''']] - для активации устройств, связанных с группой &amp;quot;groupSunset&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/darknessmode_deactivate_php | '''darknessmode_deactivate.php''']] - для деактивации устройств, связанных с группой &amp;quot;groupSunset&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_class_php | '''devices.class.php''']] - содержит набор функций для взаимодействия с устройствами в рамках проекта. Он обеспечивает взаимодействие между устройствами, базой данных, внешними API и другими частями системы, такими как управление группами устройств, связями между ними и действиями, которые могут быть выполнены над устройствами.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_edit_inc_php | '''devices_edit.inc.php''']] - содержит функции и код, связанный с редактированием устройств в проекте. Он включает в себя обработку форм, сохранение данных и другие операции, связанные с редактированием устройств.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_links_inc_php | '''devices_links.inc.php''']] - содержит функции для работы с связями между устройствами. Он включает в себя обработку создания, обновления и удаления связей, а также работу с деталями связей и другие операции, связанные с управлением связями устройств.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_links_actions_inc_php | '''devices_links_actions.inc.php''']] - содержит функции для обработки действий, связанных с устройствами. Он выполняет действия, такие как включение, выключение, установка цвета и передача значений объектов. Также файл подключает дополнительные скрипты для обработки действий из директории [[Modules/devices/addons|'''addons''']]&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_manage_groups_inc_php | '''devices_manage_groups.inc.php''']] - содержит функции для управления группами устройств. Он включает в себя операции по созданию, редактированию и удалению групп устройств, обновление объектов группы, очистку кэша значений, а также перенаправление на соответствующие страницы просмотра.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_manage_schedule_inc_php | '''devices_manage_schedule.inc.php''']] -  этот файл включает в себя операции по созданию, редактированию и удалению расписаний для устройств, а также операции по привязке устройств к определенным временным интервалам и управлению их работой в соответствии с расписанием.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_quick_edit_inc_php | '''devices_quick_edit.inc.php''']] - содержит код для сщздания/редактирования устройств. Он обеспечивает быстрый доступ к основным параметрам устройств, таким как имя, описание, состояние и другие атрибуты, позволяя пользователям внести изменения на странице редактирования.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_schedule_inc_php | '''devices_schedule.inc.php''']] - этот файл предоставляет функциональность для управления расписаниями устройств, включая создание, редактирование и удаление расписаний, а также привязку устройств к определенным временным интервалам и управление их работой в соответствии с расписанием.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_search_inc_php | '''devices_search.inc.php''']] -  содержит функции для поиска устройств в системе. Он предоставляет возможность осуществлять поиск устройств по различным критериям, таким как имя устройства, тип, статус и другие атрибуты. Кроме того, файл может включать функции для фильтрации результатов поиска и отображения найденной информации о устройствах.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_structure_inc_php | '''devices_structure.inc.php''']] - определяет структуру свойств и методов, которыми будут наделены устройства в системе. Он содержит описание основных характеристик устройств, таких как их тип, статус, параметры, возможные действия и другие атрибуты. Кроме того, данный файл определяет методы, которые позволяют взаимодействовать с устройствами, управлять ими и получать информацию о их состоянии.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_structure_links_inc_php | '''devices_structure_links.inc.php''']] - файл определяет структуру связей между устройствами в системе. Он содержит описание основных характеристик связей, таких как тип связи, устройства, которые связаны, параметры связи и другие атрибуты. Кроме того, данный файл определяет методы для управления связями между устройствами, включая создание новых связей, редактирование существующих и удаление ненужных связей.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_widgets_js_php | '''devices_widgets.js.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/econommode_activate_php | '''econommode_activate.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/econommode_deactivate_php | '''econommode_deactivate.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/homebridgeSync_inc_php | '''homebridgeSync.inc.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/nightmode_activate_php | '''nightmode_activate.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/nobodyhomemode_activate_php | '''nobodyhomemode_activate.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/nobodyhomemode_deactivate_php | '''nobodyhomemode_deactivate.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/processCommand_inc_php | '''processCommand.inc.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/processHomebridgeMQTT_inc_php | '''processHomebridgeMQTT.inc.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/system_checkstate_php | '''system_checkstate.php''']] -&lt;/div&gt;</summary>
		<author><name>Elmax</name></author>
	</entry>
	<entry>
		<id>https://mdminfo.ru/index.php?title=Modules/devices/devices_structure_links_inc_php&amp;diff=2092</id>
		<title>Modules/devices/devices structure links inc php</title>
		<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=Modules/devices/devices_structure_links_inc_php&amp;diff=2092"/>
		<updated>2024-04-06T10:47:51Z</updated>

		<summary type="html">&lt;p&gt;Elmax: + файл devices_structure_links.inc.php&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Modules/devices/devices_structure_links_inc_php | devices_structure_links.inc.php]]&lt;br /&gt;
&lt;br /&gt;
[[Папки и файлы|ᐂ В корневой раздел]]  [[Modules/devices|ᐃ В директорию расположения файла]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
// Инициализация массива device_links для хранения ссылок между различными устройствами&lt;br /&gt;
$this-&amp;gt;device_links=array(&lt;br /&gt;
    // Ссылка между устройствами движения, кнопками, открывающими/закрывающими устройствами и камерами&lt;br /&gt;
    'SMotions,SButtons,SOpenClose,SCameras'=&amp;gt;array(&lt;br /&gt;
        // Ссылка &amp;quot;switch_timer&amp;quot; для управления таймером&lt;br /&gt;
        array(&lt;br /&gt;
            // Название ссылки&lt;br /&gt;
            'LINK_NAME'=&amp;gt;'switch_timer', &lt;br /&gt;
            // Заголовок ссылки&lt;br /&gt;
            'LINK_TITLE'=&amp;gt;LANG_DEVICES_LINK_SWITCH_TIMER, &lt;br /&gt;
            // Описание ссылки&lt;br /&gt;
            'LINK_DESCRIPTION'=&amp;gt;LANG_DEVICES_LINK_SWITCH_TIMER_DESCRIPTION, &lt;br /&gt;
            // Класс целевого устройства&lt;br /&gt;
            'TARGET_CLASS'=&amp;gt;'SControllers', &lt;br /&gt;
            // Параметры ссылки&lt;br /&gt;
            'PARAMS'=&amp;gt;array( &lt;br /&gt;
&lt;br /&gt;
                array(&lt;br /&gt;
                    // Название параметра&lt;br /&gt;
                    'PARAM_NAME'=&amp;gt;'action_delay', &lt;br /&gt;
                    // Заголовок параметра&lt;br /&gt;
                    'PARAM_TITLE'=&amp;gt;LANG_DEVICES_LINK_SWITCH_TIMER_PARAM_ACTION_DELAY, &lt;br /&gt;
                    // Тип параметра&lt;br /&gt;
                    'PARAM_TYPE'=&amp;gt;'num' &lt;br /&gt;
                ),&lt;br /&gt;
                array(&lt;br /&gt;
                    // Название параметра&lt;br /&gt;
                    'PARAM_NAME'=&amp;gt;'darktime', &lt;br /&gt;
                    // Заголовок параметра&lt;br /&gt;
                    'PARAM_TITLE'=&amp;gt;LANG_DEVICES_LINK_SWITCH_TIMER_PARAM_DARKTIME, &lt;br /&gt;
                    // Тип параметра&lt;br /&gt;
                    'PARAM_TYPE'=&amp;gt;'select', &lt;br /&gt;
                    // Опции параметра&lt;br /&gt;
                    'PARAM_OPTIONS'=&amp;gt;array( &lt;br /&gt;
                        // Опция &amp;quot;нет&amp;quot;&lt;br /&gt;
                        array('TITLE'=&amp;gt;LANG_NO,'VALUE'=&amp;gt;'0'), &lt;br /&gt;
                        // Опция &amp;quot;да&amp;quot;&lt;br /&gt;
                        array('TITLE'=&amp;gt;LANG_YES,'VALUE'=&amp;gt;'1') &lt;br /&gt;
                    )&lt;br /&gt;
                )&lt;br /&gt;
            )&lt;br /&gt;
        ),&lt;br /&gt;
        // Ссылка &amp;quot;switch_it&amp;quot; для управления устройствами&lt;br /&gt;
        array(&lt;br /&gt;
            // Название ссылки&lt;br /&gt;
            'LINK_NAME'=&amp;gt;'switch_it', &lt;br /&gt;
            // Заголовок ссылки&lt;br /&gt;
            'LINK_TITLE'=&amp;gt;LANG_DEVICES_LINK_SWITCH_IT, &lt;br /&gt;
            // Описание ссылки&lt;br /&gt;
            'LINK_DESCRIPTION'=&amp;gt;LANG_DEVICES_LINK_SWITCH_IT_DESCRIPTION, &lt;br /&gt;
            // Класс целевого устройства&lt;br /&gt;
            'TARGET_CLASS'=&amp;gt;'SControllers,SOpenable', &lt;br /&gt;
            // Параметры ссылки&lt;br /&gt;
            'PARAMS'=&amp;gt;array( &lt;br /&gt;
                array(&lt;br /&gt;
                    // Название параметра&lt;br /&gt;
                    'PARAM_NAME'=&amp;gt;'action_type', &lt;br /&gt;
                    // Заголовок параметра&lt;br /&gt;
                    'PARAM_TITLE'=&amp;gt;LANG_DEVICES_LINK_ACTION_TYPE, &lt;br /&gt;
                    // Тип параметра&lt;br /&gt;
                    'PARAM_TYPE'=&amp;gt;'select', &lt;br /&gt;
                    // Опции параметра&lt;br /&gt;
                    'PARAM_OPTIONS'=&amp;gt;array( &lt;br /&gt;
                        // Опция &amp;quot;включить&amp;quot;&lt;br /&gt;
                        array('TITLE'=&amp;gt;LANG_DEVICES_LINK_TYPE_TURN_ON,'VALUE'=&amp;gt;'turnon'), &lt;br /&gt;
                        // Опция &amp;quot;выключить&amp;quot;&lt;br /&gt;
                        array('TITLE'=&amp;gt;LANG_DEVICES_LINK_TYPE_TURN_OFF,'VALUE'=&amp;gt;'turnoff'), &lt;br /&gt;
                        // Опция &amp;quot;переключить&amp;quot;&lt;br /&gt;
                        array('TITLE'=&amp;gt;LANG_DEVICES_LINK_TYPE_SWITCH,'VALUE'=&amp;gt;'switch'), &lt;br /&gt;
                        // Опция &amp;quot;открыть&amp;quot;&lt;br /&gt;
                        array('TITLE'=&amp;gt;LANG_DEVICES_LINK_TYPE_OPEN,'VALUE'=&amp;gt;'open'), &lt;br /&gt;
                        // Опция &amp;quot;закрыть&amp;quot;&lt;br /&gt;
                        array('TITLE'=&amp;gt;LANG_DEVICES_LINK_TYPE_CLOSE,'VALUE'=&amp;gt;'close'), &lt;br /&gt;
                        )&lt;br /&gt;
                ),&lt;br /&gt;
                array(&lt;br /&gt;
                    // Название параметра&lt;br /&gt;
                    'PARAM_NAME'=&amp;gt;'action_delay', &lt;br /&gt;
                    // Заголовок параметра&lt;br /&gt;
                    'PARAM_TITLE'=&amp;gt;LANG_DEVICES_LINK_SWITCH_IT_PARAM_ACTION_DELAY, &lt;br /&gt;
                    // Тип параметра&lt;br /&gt;
                    'PARAM_TYPE'=&amp;gt;'num' &lt;br /&gt;
                )&lt;br /&gt;
            )&lt;br /&gt;
            ),&lt;br /&gt;
        // Ссылка &amp;quot;set_color&amp;quot; для управления цветом устройств&lt;br /&gt;
        array(&lt;br /&gt;
            // Название ссылки&lt;br /&gt;
            'LINK_NAME'=&amp;gt;'set_color', &lt;br /&gt;
            // Заголовок ссылки&lt;br /&gt;
            'LINK_TITLE'=&amp;gt;LANG_DEVICES_LINK_SET_COLOR, &lt;br /&gt;
            // Описание ссылки&lt;br /&gt;
            'LINK_DESCRIPTION'=&amp;gt;LANG_DEVICES_LINK_SET_COLOR_DESCRIPTION, &lt;br /&gt;
            // Класс целевого устройства&lt;br /&gt;
            'TARGET_CLASS'=&amp;gt;'SRGB', &lt;br /&gt;
            // Параметры ссылки&lt;br /&gt;
            'PARAMS'=&amp;gt;array( &lt;br /&gt;
                array(&lt;br /&gt;
                    // Название параметра&lt;br /&gt;
                    'PARAM_NAME'=&amp;gt;'action_color', &lt;br /&gt;
                    // Заголовок параметра&lt;br /&gt;
                    'PARAM_TITLE'=&amp;gt;LANG_DEVICES_LINK_SET_COLOR_PARAM_ACTION_COLOR, &lt;br /&gt;
                    // Тип параметра&lt;br /&gt;
                    'PARAM_TYPE'=&amp;gt;'color' &lt;br /&gt;
                ),&lt;br /&gt;
                array(&lt;br /&gt;
                    // Название параметра&lt;br /&gt;
                    'PARAM_NAME'=&amp;gt;'action_delay', &lt;br /&gt;
                    // Заголовок параметра&lt;br /&gt;
                    'PARAM_TITLE'=&amp;gt;LANG_DEVICES_LINK_SWITCH_IT_PARAM_ACTION_DELAY, &lt;br /&gt;
                    // Тип параметра&lt;br /&gt;
                    'PARAM_TYPE'=&amp;gt;'num' &lt;br /&gt;
                )&lt;br /&gt;
            )&lt;br /&gt;
        )&lt;br /&gt;
    ),&lt;br /&gt;
    // Ссылка между устройствами термостатов&lt;br /&gt;
    'SThermostats'=&amp;gt;array(&lt;br /&gt;
        array(&lt;br /&gt;
            // Название ссылки&lt;br /&gt;
            'LINK_NAME'=&amp;gt;'thermostat_switch', &lt;br /&gt;
            // Заголовок ссылки&lt;br /&gt;
            'LINK_TITLE'=&amp;gt;LANG_DEVICES_LINK_THERMOSTAT_SWITCH, &lt;br /&gt;
            // Описание ссылки&lt;br /&gt;
            'LINK_DESCRIPTION'=&amp;gt;LANG_DEVICES_LINK_THERMOSTAT_SWITCH_DESCRIPTION, &lt;br /&gt;
            // Класс целевого устройства&lt;br /&gt;
            'TARGET_CLASS'=&amp;gt;'SControllers', &lt;br /&gt;
            // Параметры ссылки&lt;br /&gt;
            'PARAMS'=&amp;gt;array( &lt;br /&gt;
                array(&lt;br /&gt;
                    // Название параметра&lt;br /&gt;
                    'PARAM_NAME'=&amp;gt;'invert_status', &lt;br /&gt;
                    // Заголовок параметра&lt;br /&gt;
                    'PARAM_TITLE'=&amp;gt;LANG_DEVICES_LINK_THERMOSTAT_INVERT, &lt;br /&gt;
                    // Тип параметра&lt;br /&gt;
                    'PARAM_TYPE'=&amp;gt;'select', &lt;br /&gt;
                    // Опции параметра&lt;br /&gt;
                    'PARAM_OPTIONS'=&amp;gt;array( &lt;br /&gt;
                    // Опция &amp;quot;нет&amp;quot;&lt;br /&gt;
                        array('TITLE'=&amp;gt;LANG_NO,'VALUE'=&amp;gt;'0'), &lt;br /&gt;
                        // Опция &amp;quot;да&amp;quot;&lt;br /&gt;
                        array('TITLE'=&amp;gt;LANG_YES,'VALUE'=&amp;gt;'1') &lt;br /&gt;
                    )&lt;br /&gt;
                )&lt;br /&gt;
            )&lt;br /&gt;
        )&lt;br /&gt;
    ), &lt;br /&gt;
    // Ссылка между датчиками&lt;br /&gt;
    'SSensors'=&amp;gt;array(&lt;br /&gt;
        array(&lt;br /&gt;
            // Название ссылки&lt;br /&gt;
            'LINK_NAME'=&amp;gt;'sensor_switch', &lt;br /&gt;
            // Заголовок ссылки&lt;br /&gt;
            'LINK_TITLE'=&amp;gt;LANG_DEVICES_LINK_SENSOR_SWITCH, &lt;br /&gt;
            // Описание ссылки&lt;br /&gt;
            'LINK_DESCRIPTION'=&amp;gt;LANG_DEVICES_LINK_SENSOR_SWITCH_DESCRIPTION, &lt;br /&gt;
            // Класс целевого устройства&lt;br /&gt;
            'TARGET_CLASS'=&amp;gt;'SControllers,SOpenable', &lt;br /&gt;
            // Параметры ссылки&lt;br /&gt;
            'PARAMS'=&amp;gt;array( &lt;br /&gt;
                array(&lt;br /&gt;
                    // Название параметра&lt;br /&gt;
                    'PARAM_NAME'=&amp;gt;'source_value_type', &lt;br /&gt;
                    // Заголовок параметра&lt;br /&gt;
                    'PARAM_TITLE'=&amp;gt;LANG_DEVICES_LINK_SENSOR_VALUE_TYPE, &lt;br /&gt;
                    // Тип параметра&lt;br /&gt;
                    'PARAM_TYPE'=&amp;gt;'select', &lt;br /&gt;
                    // Опции параметра&lt;br /&gt;
                    'PARAM_OPTIONS'=&amp;gt;array( &lt;br /&gt;
                        // Текущее значение&lt;br /&gt;
                        array('TITLE'=&amp;gt;LANG_DEVICES_LINK_SENSOR_VALUE_TYPE_CURRENT,'VALUE'=&amp;gt;''), &lt;br /&gt;
                        // Минимальное значение&lt;br /&gt;
                        array('TITLE'=&amp;gt;LANG_DEVICES_LINK_SENSOR_VALUE_TYPE_MIN,'VALUE'=&amp;gt;'min'), &lt;br /&gt;
                        // Среднее значение&lt;br /&gt;
                        array('TITLE'=&amp;gt;LANG_DEVICES_LINK_SENSOR_VALUE_TYPE_AVG,'VALUE'=&amp;gt;'avg'), &lt;br /&gt;
                        // Максимальное значение&lt;br /&gt;
                        array('TITLE'=&amp;gt;LANG_DEVICES_LINK_SENSOR_VALUE_TYPE_MAX,'VALUE'=&amp;gt;'max'), &lt;br /&gt;
                    )&lt;br /&gt;
                ),&lt;br /&gt;
                array(&lt;br /&gt;
                    // Условие видимости параметра&lt;br /&gt;
                    'PARAM_VISIBLE_CONDITION'=&amp;gt;array( &lt;br /&gt;
                        // Проверяемый параметр&lt;br /&gt;
                        'CHECK_PARAM_NAME'=&amp;gt;'source_value_type', &lt;br /&gt;
                        // Условие проверки&lt;br /&gt;
                        'CHECK_PARAM_CONDITION'=&amp;gt;'!=', &lt;br /&gt;
                        // Значение для проверки&lt;br /&gt;
                        'CHECK_PARAM_VALUE'=&amp;gt;'', &lt;br /&gt;
                    ),&lt;br /&gt;
                    // Название параметра&lt;br /&gt;
                    'PARAM_NAME'=&amp;gt;'source_value_time', &lt;br /&gt;
                    // Заголовок параметра&lt;br /&gt;
                    'PARAM_TITLE'=&amp;gt;LANG_DEVICES_LINK_SENSOR_VALUE_FOR_PERIOD, &lt;br /&gt;
                    // Тип параметра&lt;br /&gt;
                    'PARAM_TYPE'=&amp;gt;'duration' &lt;br /&gt;
                ),&lt;br /&gt;
                array(&lt;br /&gt;
                    // Название параметра&lt;br /&gt;
                    'PARAM_NAME'=&amp;gt;'condition_type', &lt;br /&gt;
                    // Заголовок параметра&lt;br /&gt;
                    'PARAM_TITLE'=&amp;gt;LANG_DEVICES_LINK_SENSOR_SWITCH_PARAM_CONDITION, &lt;br /&gt;
                    // Тип параметра&lt;br /&gt;
                    'PARAM_TYPE'=&amp;gt;'select', &lt;br /&gt;
                    // Опции параметра&lt;br /&gt;
                    'PARAM_OPTIONS'=&amp;gt;array( &lt;br /&gt;
                        // Условие &amp;quot;выше&amp;quot;&lt;br /&gt;
                        array('TITLE'=&amp;gt;LANG_DEVICES_LINK_SENSOR_SWITCH_PARAM_CONDITION_ABOVE,'VALUE'=&amp;gt;'above'), &lt;br /&gt;
                        // Условие &amp;quot;ниже&amp;quot;&lt;br /&gt;
                        array('TITLE'=&amp;gt;LANG_DEVICES_LINK_SENSOR_SWITCH_PARAM_CONDITION_BELOW,'VALUE'=&amp;gt;'below') &lt;br /&gt;
                    )&lt;br /&gt;
                ),&lt;br /&gt;
                array(&lt;br /&gt;
                    // Название параметра&lt;br /&gt;
                    'PARAM_NAME'=&amp;gt;'condition_value', &lt;br /&gt;
                    // Заголовок параметра&lt;br /&gt;
                    'PARAM_TITLE'=&amp;gt;LANG_DEVICES_LINK_SENSOR_SWITCH_PARAM_VALUE, &lt;br /&gt;
                    // Тип параметра&lt;br /&gt;
                    'PARAM_TYPE'=&amp;gt;'num' &lt;br /&gt;
                ),&lt;br /&gt;
                array(&lt;br /&gt;
                    // Название параметра&lt;br /&gt;
                    'PARAM_NAME'=&amp;gt;'action_type', &lt;br /&gt;
                    // Заголовок параметра&lt;br /&gt;
                    'PARAM_TITLE'=&amp;gt;LANG_DEVICES_LINK_ACTION_TYPE, &lt;br /&gt;
                    // Тип параметра&lt;br /&gt;
                    'PARAM_TYPE'=&amp;gt;'select', &lt;br /&gt;
                    // Опции параметра&lt;br /&gt;
                    'PARAM_OPTIONS'=&amp;gt;array( &lt;br /&gt;
                        // Действие &amp;quot;включить&amp;quot;&lt;br /&gt;
                        array('TITLE'=&amp;gt;LANG_DEVICES_LINK_TYPE_TURN_ON,'VALUE'=&amp;gt;'turnon'), &lt;br /&gt;
                        // Действие &amp;quot;выключить&amp;quot;&lt;br /&gt;
                        array('TITLE'=&amp;gt;LANG_DEVICES_LINK_TYPE_TURN_OFF,'VALUE'=&amp;gt;'turnoff'), &lt;br /&gt;
                        // Действие &amp;quot;открыть&amp;quot;&lt;br /&gt;
                        array('TITLE'=&amp;gt;LANG_DEVICES_LINK_TYPE_OPEN,'VALUE'=&amp;gt;'open'), &lt;br /&gt;
                        // Действие &amp;quot;закрыть&amp;quot;&lt;br /&gt;
                        array('TITLE'=&amp;gt;LANG_DEVICES_LINK_TYPE_CLOSE,'VALUE'=&amp;gt;'close'), &lt;br /&gt;
                    )&lt;br /&gt;
                )&lt;br /&gt;
            )&lt;br /&gt;
        ),&lt;br /&gt;
        array (&lt;br /&gt;
            // Название ссылки&lt;br /&gt;
            'LINK_NAME'=&amp;gt;'sensor_pass', &lt;br /&gt;
            // Заголовок ссылки&lt;br /&gt;
            'LINK_TITLE'=&amp;gt;LANG_DEVICES_LINK_SENSOR_PASS, &lt;br /&gt;
            // Описание ссылки&lt;br /&gt;
            'LINK_DESCRIPTION'=&amp;gt;LANG_DEVICES_LINK_SENSOR_PASS_DESCRIPTION, &lt;br /&gt;
            // Класс целевого устройства&lt;br /&gt;
            'TARGET_CLASS'=&amp;gt;'SThermostats', &lt;br /&gt;
        )&lt;br /&gt;
    ), &lt;br /&gt;
    /*&lt;br /&gt;
Этот фрагмент кода завершает определение массива device_links,&lt;br /&gt;
 который содержит ссылки между различными типами устройств.&lt;br /&gt;
  Каждая ссылка определена массивом параметров, включая название ссылки,&lt;br /&gt;
   заголовок, описание и целевой класс устройства.&lt;br /&gt;
    В данном случае, ссылка open_sensor_pass предназначена для устройств,&lt;br /&gt;
     которые могут открываться и закрываться,&lt;br /&gt;
      и позволяет управлять их состоянием на основе данных с датчиков.&lt;br /&gt;
    */&lt;br /&gt;
    // Ссылка между устройствами, которые могут открываться и закрываться&lt;br /&gt;
    'SOpenClose' =&amp;gt;array(&lt;br /&gt;
        array (&lt;br /&gt;
            // Название ссылки&lt;br /&gt;
            'LINK_NAME'=&amp;gt;'open_sensor_pass', &lt;br /&gt;
            // Заголовок ссылки&lt;br /&gt;
            'LINK_TITLE'=&amp;gt;LANG_DEVICES_LINK_SENSOR_PASS, &lt;br /&gt;
            // Описание ссылки&lt;br /&gt;
            'LINK_DESCRIPTION'=&amp;gt;LANG_DEVICES_LINK_SENSOR_PASS_DESCRIPTION, &lt;br /&gt;
            // Класс целевого устройства&lt;br /&gt;
            'TARGET_CLASS'=&amp;gt;'SOpenable', &lt;br /&gt;
        )&lt;br /&gt;
    )&lt;br /&gt;
);&lt;br /&gt;
/*&lt;br /&gt;
Этот участок кода проверяет наличие директории addons и,&lt;br /&gt;
 если она существует, загружает все файлы, которые соответствуют шаблону _links.php.&lt;br /&gt;
  Это позволяет расширять функциональность системы за счет дополнительных ссылок,&lt;br /&gt;
   определенных в этих файлах.&lt;br /&gt;
*/&lt;br /&gt;
// Проверяем наличие директории addons и загружаем дополнительные ссылки&lt;br /&gt;
// Путь к директории addons&lt;br /&gt;
$addons_dir=dirname(__FILE__).'/addons'; &lt;br /&gt;
// Если директория существует&lt;br /&gt;
if (is_dir($addons_dir)) { &lt;br /&gt;
    // Получаем список файлов в директории&lt;br /&gt;
    $addon_files=scandir($addons_dir); &lt;br /&gt;
    // Перебираем каждый файл&lt;br /&gt;
    foreach($addon_files as $file) { &lt;br /&gt;
    // Если файл соответствует шаблону &amp;quot;_links.php&amp;quot;&lt;br /&gt;
        if (preg_match('/\_links\.php$/',$file)) { &lt;br /&gt;
            // Загружаем файл с дополнительными ссылками&lt;br /&gt;
            require($addons_dir.'/'.$file); &lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Elmax</name></author>
	</entry>
	<entry>
		<id>https://mdminfo.ru/index.php?title=Modules/devices&amp;diff=2091</id>
		<title>Modules/devices</title>
		<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=Modules/devices&amp;diff=2091"/>
		<updated>2024-04-06T09:15:04Z</updated>

		<summary type="html">&lt;p&gt;Elmax: Описание Rooms_onActivity.php&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Modules/devices|/modules/devices]]&lt;br /&gt;
&lt;br /&gt;
[[Папки и файлы|ᐂ В корневой раздел]]  [[Modules|ᐃ на директорию выше]][https://github.com/sergejey/majordomo/tree/master/modules/devices | Перейти в директорию на github]&lt;br /&gt;
===== Папки директории '''/modules/devices''' =====&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/addons|'''addons''']] - пока папка не имеет описания&lt;br /&gt;
&lt;br /&gt;
===== Файлы директории '''/modules/devices''' =====&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/Rooms_onActivity_php | '''Rooms_onActivity.php''']] - вызывается методом onActivity, класса Rooms. Содерит функции для анализа данных об активности в помещениях и принятия соответствующих действий на основе этой информации.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/Rooms_onIdle_php | '''Rooms_onIdle.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/Rooms_updateActivityStatus_php | '''Rooms_updateActivityStatus.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SButtons_pressed_php | '''SButtons_pressed.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCameras_motionDetected_php | '''SCameras_motionDetected.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCameras_takeSeries_php | '''SCameras_takeSeries.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCameras_takeSnapshot_php | '''SCameras_takeSnapshot.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCameras_updatePreview_php | '''SCameras_updatePreview.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SControllers_switch_php | '''SControllers_switch.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SControllers_turnOff_php | '''SControllers_turnOff.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SControllers_turnOn_php | '''SControllers_turnOn.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCounters_pulseDetected_php | '''SCounters_pulseDetected.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCounters_refreshStats_php | '''SCounters_refreshStats.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCounters_valueUpdated_php | '''SCounters_valueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCounters_valueWorkUpdated_php | '''SCounters_valueWorkUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDevices_batteryLevelUpdated_php | '''SDevices_batteryLevelUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDevices_keepAlive_php | '''SDevices_keepAlive.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDevices_logicAction_php | '''SDevices_logicAction.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDevices_statusUpdated_php | '''SDevices_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_levelUpdated_php | '''SDimmers_levelUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_levelWorkUpdated_php | '''SDimmers_levelWorkUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_setLevel_php | '''SDimmers_setLevel.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_statusUpdated_php | '''SDimmers_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_turnOff_php | '''SDimmers_turnOff.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_turnOn_php | '''SDimmers_turnOn.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SGroups_statusUpdated_php | '''SGroups_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SGroups_switch_php | '''SGroups_switch.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SGroups_turnOff_php | '''SGroups_turnOff.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SGroups_turnOn_php | '''SGroups_turnOn.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLeak_alert_php | '''SLeak_alert.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLeak_blockSensor_php | '''SLeak_blockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLeak_statusUpdated_php | '''SLeak_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLeak_unblockSensor_php | '''SLeak_unblockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMotions_blockSensor_php | '''SMotions_blockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMotions_motionDetected_php | '''SMotions_motionDetected.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMotions_unblockSensor_php | '''SMotions_unblockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenClose_blockSensor_php | '''SOpenClose_blockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenClose_statusUpdated_php | '''SOpenClose_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenClose_unblockSensor_php | '''SOpenClose_unblockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_close_php | '''SOpenable_close.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_levelUpdated_php | '''SOpenable_levelUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_open_php | '''SOpenable_open.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_setLevel_php | '''SOpenable_setLevel.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_statusUpdated_php | '''SOpenable_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_switch_php | '''SOpenable_switch.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SPowerSensors_loadStatusChanged_php | '''SPowerSensors_loadStatusChanged.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SPowerSensors_valueUpdated_php | '''SPowerSensors_valueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SRGB_colorUpdated_php | '''SRGB_colorUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SRGB_setColor_php | '''SRGB_setColor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SRGB_turnOff_php | '''SRGB_turnOff.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SRGB_turnOn_php | '''SRGB_turnOn.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSensors_alert_php | '''SSensors_alert.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSensors_blockSensor_php | '''SSensors_blockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSensors_unblockSensor_php | '''SSensors_unblockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSensors_valueUpdated_php | '''SSensors_valueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSmoke_alert_php | '''SSmoke_alert.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSmoke_blockSensor_php | '''SSmoke_blockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSmoke_statusUpdated_php | '''SSmoke_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSmoke_unblockSensor_php | '''SSmoke_unblockSensor.php''']] -  &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_disable_php | '''SThermostats_disable.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_enable_php | '''SThermostats_enable.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_setTargetTemperature_php | '''SThermostats_setTargetTemperature.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_statusUpdated_php | '''SThermostats_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_switchEnable_php | '''SThermostats_switchEnable.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_tempDown_php | '''SThermostats_tempDown.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_tempUp_php | '''SThermostats_tempUp.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_turnOff_php | '''SThermostats_turnOff.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_turnOn_php | '''SThermostats_turnOn.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_valueUpdated_php | '''SThermostats_valueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_configUpdated_php | '''SAirConditioners_configUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_fanSpeedUpdated_php | '''SAirConditioners_fanSpeedUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_setFanSpeedMode_php | '''SAirConditioners_setFanSpeedMode.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_setTargetTemperature_php | '''SAirConditioners_setTargetTemperature.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_setThermostatMode_php | '''SAirConditioners_setThermostatMode.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_tempDown_php | '''SAirConditioners_tempDown.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_tempUp_php | '''SAirConditioners_tempUp.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_thermostatUpdated_php | '''SAirConditioners_thermostatUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLightSensors_periodMinValueUpdated_php | '''SLightSensors_periodMinValueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLightSensors_valueUpdated_php | '''SLightSensors_valueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMedias_pause_php | '''SMedias_pause.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMedias_setChannel_php | '''SMedias_setChannel.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMedias_setSource_php | '''SMedias_setSource.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMedias_setVolume_php | '''SMedias_setVolume.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/STVs_pause_php | '''STVs_pause.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/STVs_setChannel_php | '''STVs_setChannel.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/STVs_setSource_php | '''STVs_setSource.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/STVs_setVolume_php | '''STVs_setVolume.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SVacuums_pause_php | '''SVacuums_pause.php''']] - &lt;br /&gt;
&lt;br /&gt;
'''app''' -  пока файл не понятен, его назначение так-же&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/darknessmode_activate_php | '''darknessmode_activate.php''']] - для активации устройств, связанных с группой &amp;quot;groupSunset&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/darknessmode_deactivate_php | '''darknessmode_deactivate.php''']] - для деактивации устройств, связанных с группой &amp;quot;groupSunset&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_class_php | '''devices.class.php''']] - содержит набор функций для взаимодействия с устройствами в рамках проекта. Он обеспечивает взаимодействие между устройствами, базой данных, внешними API и другими частями системы, такими как управление группами устройств, связями между ними и действиями, которые могут быть выполнены над устройствами.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_edit_inc_php | '''devices_edit.inc.php''']] - содержит функции и код, связанный с редактированием устройств в проекте. Он включает в себя обработку форм, сохранение данных и другие операции, связанные с редактированием устройств.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_links_inc_php | '''devices_links.inc.php''']] - содержит функции для работы с связями между устройствами. Он включает в себя обработку создания, обновления и удаления связей, а также работу с деталями связей и другие операции, связанные с управлением связями устройств.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_links_actions_inc_php | '''devices_links_actions.inc.php''']] - содержит функции для обработки действий, связанных с устройствами. Он выполняет действия, такие как включение, выключение, установка цвета и передача значений объектов. Также файл подключает дополнительные скрипты для обработки действий из директории [[Modules/devices/addons|'''addons''']]&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_manage_groups_inc_php | '''devices_manage_groups.inc.php''']] - содержит функции для управления группами устройств. Он включает в себя операции по созданию, редактированию и удалению групп устройств, обновление объектов группы, очистку кэша значений, а также перенаправление на соответствующие страницы просмотра.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_manage_schedule_inc_php | '''devices_manage_schedule.inc.php''']] -  этот файл включает в себя операции по созданию, редактированию и удалению расписаний для устройств, а также операции по привязке устройств к определенным временным интервалам и управлению их работой в соответствии с расписанием.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_quick_edit_inc_php | '''devices_quick_edit.inc.php''']] - содержит код для сщздания/редактирования устройств. Он обеспечивает быстрый доступ к основным параметрам устройств, таким как имя, описание, состояние и другие атрибуты, позволяя пользователям внести изменения на странице редактирования.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_schedule_inc_php | '''devices_schedule.inc.php''']] - этот файл предоставляет функциональность для управления расписаниями устройств, включая создание, редактирование и удаление расписаний, а также привязку устройств к определенным временным интервалам и управление их работой в соответствии с расписанием.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_search_inc_php | '''devices_search.inc.php''']] -  содержит функции для поиска устройств в системе. Он предоставляет возможность осуществлять поиск устройств по различным критериям, таким как имя устройства, тип, статус и другие атрибуты. Кроме того, файл может включать функции для фильтрации результатов поиска и отображения найденной информации о устройствах.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_structure_inc_php | '''devices_structure.inc.php''']] - определяет структуру свойств и методов, которыми будут наделены устройства в системе. Он содержит описание основных характеристик устройств, таких как их тип, статус, параметры, возможные действия и другие атрибуты. Кроме того, данный файл определяет методы, которые позволяют взаимодействовать с устройствами, управлять ими и получать информацию о их состоянии.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_structure_links_inc_php | '''devices_structure_links.inc.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_widgets_js_php | '''devices_widgets.js.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/econommode_activate_php | '''econommode_activate.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/econommode_deactivate_php | '''econommode_deactivate.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/homebridgeSync_inc_php | '''homebridgeSync.inc.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/nightmode_activate_php | '''nightmode_activate.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/nobodyhomemode_activate_php | '''nobodyhomemode_activate.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/nobodyhomemode_deactivate_php | '''nobodyhomemode_deactivate.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/processCommand_inc_php | '''processCommand.inc.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/processHomebridgeMQTT_inc_php | '''processHomebridgeMQTT.inc.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/system_checkstate_php | '''system_checkstate.php''']] -&lt;/div&gt;</summary>
		<author><name>Elmax</name></author>
	</entry>
	<entry>
		<id>https://mdminfo.ru/index.php?title=Modules/devices/Rooms_onActivity_php&amp;diff=2090</id>
		<title>Modules/devices/Rooms onActivity php</title>
		<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=Modules/devices/Rooms_onActivity_php&amp;diff=2090"/>
		<updated>2024-04-06T08:26:03Z</updated>

		<summary type="html">&lt;p&gt;Elmax: + файл Rooms_onActivity.php&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Modules/devices/Rooms_onActivity_php | Rooms_onActivity.php]]&lt;br /&gt;
[[Папки и файлы|ᐂ В корневой раздел]]  [[Modules/devices|ᐃ В директорию расположения файла]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
// Если отключена функциональность простых устройств тогда прекращаем выполнение.&lt;br /&gt;
if (defined('DISABLE_SIMPLE_DEVICES') &amp;amp;&amp;amp; DISABLE_SIMPLE_DEVICES==1) return;&lt;br /&gt;
&lt;br /&gt;
// Получаем название объекта.&lt;br /&gt;
$ot = $this-&amp;gt;object_title;&lt;br /&gt;
&lt;br /&gt;
// Устанавливаем свойство LatestActivity в текущее время.&lt;br /&gt;
$this-&amp;gt;setProperty('LatestActivity', time());&lt;br /&gt;
// Устанавливаем свойство LatestActivityTime в текущее время в формате часов и минут.&lt;br /&gt;
$this-&amp;gt;setProperty('LatestActivityTime', date('H:i'));&lt;br /&gt;
&lt;br /&gt;
// Проверяем, кто в комнате. Если никого нет, устанавливаем свойство SomebodyHere в 1 и вызываем метод updateActivityStatus.&lt;br /&gt;
if (!$this-&amp;gt;getProperty('SomebodyHere')) {&lt;br /&gt;
    $this-&amp;gt;setProperty('SomebodyHere', 1);&lt;br /&gt;
    $this-&amp;gt;callMethodSafe('updateActivityStatus');&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Проверяем, установлено ли свойство IdleDelay. Если да, используем его значение, иначе используем значение по умолчанию 10 минут.&lt;br /&gt;
if ($this-&amp;gt;getProperty('IdleDelay')) {&lt;br /&gt;
    $activity_timeout = (int)$this-&amp;gt;getProperty('IdleDelay');&lt;br /&gt;
} else {&lt;br /&gt;
    $activity_timeout = 10*60;&lt;br /&gt;
}&lt;br /&gt;
// Устанавливаем таймер на имя объекта с суффиксом _activity_timeout, который вызовет метод onIdle через установленное время.&lt;br /&gt;
setTimeOut($ot . '_activity_timeout', &amp;quot;callMethod('&amp;quot; . $ot . &amp;quot;.onIdle');&amp;quot;, $activity_timeout);&lt;br /&gt;
&lt;br /&gt;
// Проверяем, активен ли режим &amp;quot;Никого дома&amp;quot;. Если да, деактивируем его, передавая параметры сенсора и комнаты.&lt;br /&gt;
if (getGlobal('NobodyHomeMode.active')) {&lt;br /&gt;
    callMethod('NobodyHomeMode.deactivate', array('sensor' =&amp;gt; $params['sensor'], 'room' =&amp;gt; $ot));&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Elmax</name></author>
	</entry>
	<entry>
		<id>https://mdminfo.ru/index.php?title=Modules/devices&amp;diff=2089</id>
		<title>Modules/devices</title>
		<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=Modules/devices&amp;diff=2089"/>
		<updated>2024-04-03T20:19:31Z</updated>

		<summary type="html">&lt;p&gt;Elmax: Описание devices_structure.inc.php&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Modules/devices|/modules/devices]]&lt;br /&gt;
&lt;br /&gt;
[[Папки и файлы|ᐂ В корневой раздел]]  [[Modules|ᐃ на директорию выше]][https://github.com/sergejey/majordomo/tree/master/modules/devices | Перейти в директорию на github]&lt;br /&gt;
===== Папки директории '''/modules/devices''' =====&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/addons|'''addons''']] - пока папка не имеет описания&lt;br /&gt;
&lt;br /&gt;
===== Файлы директории '''/modules/devices''' =====&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/Rooms_onActivity_php | '''Rooms_onActivity.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/Rooms_onIdle_php | '''Rooms_onIdle.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/Rooms_updateActivityStatus_php | '''Rooms_updateActivityStatus.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SButtons_pressed_php | '''SButtons_pressed.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCameras_motionDetected_php | '''SCameras_motionDetected.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCameras_takeSeries_php | '''SCameras_takeSeries.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCameras_takeSnapshot_php | '''SCameras_takeSnapshot.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCameras_updatePreview_php | '''SCameras_updatePreview.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SControllers_switch_php | '''SControllers_switch.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SControllers_turnOff_php | '''SControllers_turnOff.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SControllers_turnOn_php | '''SControllers_turnOn.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCounters_pulseDetected_php | '''SCounters_pulseDetected.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCounters_refreshStats_php | '''SCounters_refreshStats.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCounters_valueUpdated_php | '''SCounters_valueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCounters_valueWorkUpdated_php | '''SCounters_valueWorkUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDevices_batteryLevelUpdated_php | '''SDevices_batteryLevelUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDevices_keepAlive_php | '''SDevices_keepAlive.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDevices_logicAction_php | '''SDevices_logicAction.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDevices_statusUpdated_php | '''SDevices_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_levelUpdated_php | '''SDimmers_levelUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_levelWorkUpdated_php | '''SDimmers_levelWorkUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_setLevel_php | '''SDimmers_setLevel.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_statusUpdated_php | '''SDimmers_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_turnOff_php | '''SDimmers_turnOff.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_turnOn_php | '''SDimmers_turnOn.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SGroups_statusUpdated_php | '''SGroups_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SGroups_switch_php | '''SGroups_switch.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SGroups_turnOff_php | '''SGroups_turnOff.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SGroups_turnOn_php | '''SGroups_turnOn.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLeak_alert_php | '''SLeak_alert.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLeak_blockSensor_php | '''SLeak_blockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLeak_statusUpdated_php | '''SLeak_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLeak_unblockSensor_php | '''SLeak_unblockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMotions_blockSensor_php | '''SMotions_blockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMotions_motionDetected_php | '''SMotions_motionDetected.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMotions_unblockSensor_php | '''SMotions_unblockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenClose_blockSensor_php | '''SOpenClose_blockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenClose_statusUpdated_php | '''SOpenClose_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenClose_unblockSensor_php | '''SOpenClose_unblockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_close_php | '''SOpenable_close.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_levelUpdated_php | '''SOpenable_levelUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_open_php | '''SOpenable_open.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_setLevel_php | '''SOpenable_setLevel.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_statusUpdated_php | '''SOpenable_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_switch_php | '''SOpenable_switch.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SPowerSensors_loadStatusChanged_php | '''SPowerSensors_loadStatusChanged.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SPowerSensors_valueUpdated_php | '''SPowerSensors_valueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SRGB_colorUpdated_php | '''SRGB_colorUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SRGB_setColor_php | '''SRGB_setColor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SRGB_turnOff_php | '''SRGB_turnOff.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SRGB_turnOn_php | '''SRGB_turnOn.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSensors_alert_php | '''SSensors_alert.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSensors_blockSensor_php | '''SSensors_blockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSensors_unblockSensor_php | '''SSensors_unblockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSensors_valueUpdated_php | '''SSensors_valueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSmoke_alert_php | '''SSmoke_alert.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSmoke_blockSensor_php | '''SSmoke_blockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSmoke_statusUpdated_php | '''SSmoke_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSmoke_unblockSensor_php | '''SSmoke_unblockSensor.php''']] -  &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_disable_php | '''SThermostats_disable.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_enable_php | '''SThermostats_enable.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_setTargetTemperature_php | '''SThermostats_setTargetTemperature.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_statusUpdated_php | '''SThermostats_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_switchEnable_php | '''SThermostats_switchEnable.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_tempDown_php | '''SThermostats_tempDown.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_tempUp_php | '''SThermostats_tempUp.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_turnOff_php | '''SThermostats_turnOff.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_turnOn_php | '''SThermostats_turnOn.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_valueUpdated_php | '''SThermostats_valueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_configUpdated_php | '''SAirConditioners_configUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_fanSpeedUpdated_php | '''SAirConditioners_fanSpeedUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_setFanSpeedMode_php | '''SAirConditioners_setFanSpeedMode.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_setTargetTemperature_php | '''SAirConditioners_setTargetTemperature.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_setThermostatMode_php | '''SAirConditioners_setThermostatMode.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_tempDown_php | '''SAirConditioners_tempDown.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_tempUp_php | '''SAirConditioners_tempUp.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_thermostatUpdated_php | '''SAirConditioners_thermostatUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLightSensors_periodMinValueUpdated_php | '''SLightSensors_periodMinValueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLightSensors_valueUpdated_php | '''SLightSensors_valueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMedias_pause_php | '''SMedias_pause.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMedias_setChannel_php | '''SMedias_setChannel.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMedias_setSource_php | '''SMedias_setSource.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMedias_setVolume_php | '''SMedias_setVolume.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/STVs_pause_php | '''STVs_pause.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/STVs_setChannel_php | '''STVs_setChannel.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/STVs_setSource_php | '''STVs_setSource.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/STVs_setVolume_php | '''STVs_setVolume.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SVacuums_pause_php | '''SVacuums_pause.php''']] - &lt;br /&gt;
&lt;br /&gt;
'''app''' -  пока файл не понятен, его назначение так-же&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/darknessmode_activate_php | '''darknessmode_activate.php''']] - для активации устройств, связанных с группой &amp;quot;groupSunset&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/darknessmode_deactivate_php | '''darknessmode_deactivate.php''']] - для деактивации устройств, связанных с группой &amp;quot;groupSunset&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_class_php | '''devices.class.php''']] - содержит набор функций для взаимодействия с устройствами в рамках проекта. Он обеспечивает взаимодействие между устройствами, базой данных, внешними API и другими частями системы, такими как управление группами устройств, связями между ними и действиями, которые могут быть выполнены над устройствами.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_edit_inc_php | '''devices_edit.inc.php''']] - содержит функции и код, связанный с редактированием устройств в проекте. Он включает в себя обработку форм, сохранение данных и другие операции, связанные с редактированием устройств.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_links_inc_php | '''devices_links.inc.php''']] - содержит функции для работы с связями между устройствами. Он включает в себя обработку создания, обновления и удаления связей, а также работу с деталями связей и другие операции, связанные с управлением связями устройств.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_links_actions_inc_php | '''devices_links_actions.inc.php''']] - содержит функции для обработки действий, связанных с устройствами. Он выполняет действия, такие как включение, выключение, установка цвета и передача значений объектов. Также файл подключает дополнительные скрипты для обработки действий из директории [[Modules/devices/addons|'''addons''']]&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_manage_groups_inc_php | '''devices_manage_groups.inc.php''']] - содержит функции для управления группами устройств. Он включает в себя операции по созданию, редактированию и удалению групп устройств, обновление объектов группы, очистку кэша значений, а также перенаправление на соответствующие страницы просмотра.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_manage_schedule_inc_php | '''devices_manage_schedule.inc.php''']] -  этот файл включает в себя операции по созданию, редактированию и удалению расписаний для устройств, а также операции по привязке устройств к определенным временным интервалам и управлению их работой в соответствии с расписанием.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_quick_edit_inc_php | '''devices_quick_edit.inc.php''']] - содержит код для сщздания/редактирования устройств. Он обеспечивает быстрый доступ к основным параметрам устройств, таким как имя, описание, состояние и другие атрибуты, позволяя пользователям внести изменения на странице редактирования.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_schedule_inc_php | '''devices_schedule.inc.php''']] - этот файл предоставляет функциональность для управления расписаниями устройств, включая создание, редактирование и удаление расписаний, а также привязку устройств к определенным временным интервалам и управление их работой в соответствии с расписанием.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_search_inc_php | '''devices_search.inc.php''']] -  содержит функции для поиска устройств в системе. Он предоставляет возможность осуществлять поиск устройств по различным критериям, таким как имя устройства, тип, статус и другие атрибуты. Кроме того, файл может включать функции для фильтрации результатов поиска и отображения найденной информации о устройствах.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_structure_inc_php | '''devices_structure.inc.php''']] - определяет структуру свойств и методов, которыми будут наделены устройства в системе. Он содержит описание основных характеристик устройств, таких как их тип, статус, параметры, возможные действия и другие атрибуты. Кроме того, данный файл определяет методы, которые позволяют взаимодействовать с устройствами, управлять ими и получать информацию о их состоянии.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_structure_links_inc_php | '''devices_structure_links.inc.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_widgets_js_php | '''devices_widgets.js.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/econommode_activate_php | '''econommode_activate.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/econommode_deactivate_php | '''econommode_deactivate.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/homebridgeSync_inc_php | '''homebridgeSync.inc.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/nightmode_activate_php | '''nightmode_activate.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/nobodyhomemode_activate_php | '''nobodyhomemode_activate.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/nobodyhomemode_deactivate_php | '''nobodyhomemode_deactivate.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/processCommand_inc_php | '''processCommand.inc.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/processHomebridgeMQTT_inc_php | '''processHomebridgeMQTT.inc.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/system_checkstate_php | '''system_checkstate.php''']] -&lt;/div&gt;</summary>
		<author><name>Elmax</name></author>
	</entry>
	<entry>
		<id>https://mdminfo.ru/index.php?title=Modules/devices/devices_structure_inc_php&amp;diff=2088</id>
		<title>Modules/devices/devices structure inc php</title>
		<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=Modules/devices/devices_structure_inc_php&amp;diff=2088"/>
		<updated>2024-04-03T20:16:02Z</updated>

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

		<summary type="html">&lt;p&gt;Elmax: описание и линк на страницу с devices_search.inc.php&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Modules/devices|/modules/devices]]&lt;br /&gt;
&lt;br /&gt;
[[Папки и файлы|ᐂ В корневой раздел]]  [[Modules|ᐃ на директорию выше]][https://github.com/sergejey/majordomo/tree/master/modules/devices | Перейти в директорию на github]&lt;br /&gt;
===== Папки директории '''/modules/devices''' =====&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/addons|'''addons''']] - пока папка не имеет описания&lt;br /&gt;
&lt;br /&gt;
===== Файлы директории '''/modules/devices''' =====&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/Rooms_onActivity_php | '''Rooms_onActivity.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/Rooms_onIdle_php | '''Rooms_onIdle.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/Rooms_updateActivityStatus_php | '''Rooms_updateActivityStatus.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SButtons_pressed_php | '''SButtons_pressed.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCameras_motionDetected_php | '''SCameras_motionDetected.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCameras_takeSeries_php | '''SCameras_takeSeries.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCameras_takeSnapshot_php | '''SCameras_takeSnapshot.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCameras_updatePreview_php | '''SCameras_updatePreview.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SControllers_switch_php | '''SControllers_switch.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SControllers_turnOff_php | '''SControllers_turnOff.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SControllers_turnOn_php | '''SControllers_turnOn.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCounters_pulseDetected_php | '''SCounters_pulseDetected.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCounters_refreshStats_php | '''SCounters_refreshStats.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCounters_valueUpdated_php | '''SCounters_valueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCounters_valueWorkUpdated_php | '''SCounters_valueWorkUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDevices_batteryLevelUpdated_php | '''SDevices_batteryLevelUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDevices_keepAlive_php | '''SDevices_keepAlive.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDevices_logicAction_php | '''SDevices_logicAction.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDevices_statusUpdated_php | '''SDevices_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_levelUpdated_php | '''SDimmers_levelUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_levelWorkUpdated_php | '''SDimmers_levelWorkUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_setLevel_php | '''SDimmers_setLevel.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_statusUpdated_php | '''SDimmers_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_turnOff_php | '''SDimmers_turnOff.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_turnOn_php | '''SDimmers_turnOn.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SGroups_statusUpdated_php | '''SGroups_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SGroups_switch_php | '''SGroups_switch.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SGroups_turnOff_php | '''SGroups_turnOff.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SGroups_turnOn_php | '''SGroups_turnOn.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLeak_alert_php | '''SLeak_alert.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLeak_blockSensor_php | '''SLeak_blockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLeak_statusUpdated_php | '''SLeak_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLeak_unblockSensor_php | '''SLeak_unblockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMotions_blockSensor_php | '''SMotions_blockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMotions_motionDetected_php | '''SMotions_motionDetected.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMotions_unblockSensor_php | '''SMotions_unblockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenClose_blockSensor_php | '''SOpenClose_blockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenClose_statusUpdated_php | '''SOpenClose_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenClose_unblockSensor_php | '''SOpenClose_unblockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_close_php | '''SOpenable_close.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_levelUpdated_php | '''SOpenable_levelUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_open_php | '''SOpenable_open.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_setLevel_php | '''SOpenable_setLevel.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_statusUpdated_php | '''SOpenable_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_switch_php | '''SOpenable_switch.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SPowerSensors_loadStatusChanged_php | '''SPowerSensors_loadStatusChanged.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SPowerSensors_valueUpdated_php | '''SPowerSensors_valueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SRGB_colorUpdated_php | '''SRGB_colorUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SRGB_setColor_php | '''SRGB_setColor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SRGB_turnOff_php | '''SRGB_turnOff.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SRGB_turnOn_php | '''SRGB_turnOn.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSensors_alert_php | '''SSensors_alert.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSensors_blockSensor_php | '''SSensors_blockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSensors_unblockSensor_php | '''SSensors_unblockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSensors_valueUpdated_php | '''SSensors_valueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSmoke_alert_php | '''SSmoke_alert.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSmoke_blockSensor_php | '''SSmoke_blockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSmoke_statusUpdated_php | '''SSmoke_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSmoke_unblockSensor_php | '''SSmoke_unblockSensor.php''']] -  &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_disable_php | '''SThermostats_disable.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_enable_php | '''SThermostats_enable.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_setTargetTemperature_php | '''SThermostats_setTargetTemperature.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_statusUpdated_php | '''SThermostats_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_switchEnable_php | '''SThermostats_switchEnable.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_tempDown_php | '''SThermostats_tempDown.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_tempUp_php | '''SThermostats_tempUp.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_turnOff_php | '''SThermostats_turnOff.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_turnOn_php | '''SThermostats_turnOn.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_valueUpdated_php | '''SThermostats_valueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_configUpdated_php | '''SAirConditioners_configUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_fanSpeedUpdated_php | '''SAirConditioners_fanSpeedUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_setFanSpeedMode_php | '''SAirConditioners_setFanSpeedMode.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_setTargetTemperature_php | '''SAirConditioners_setTargetTemperature.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_setThermostatMode_php | '''SAirConditioners_setThermostatMode.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_tempDown_php | '''SAirConditioners_tempDown.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_tempUp_php | '''SAirConditioners_tempUp.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_thermostatUpdated_php | '''SAirConditioners_thermostatUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLightSensors_periodMinValueUpdated_php | '''SLightSensors_periodMinValueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLightSensors_valueUpdated_php | '''SLightSensors_valueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMedias_pause_php | '''SMedias_pause.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMedias_setChannel_php | '''SMedias_setChannel.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMedias_setSource_php | '''SMedias_setSource.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMedias_setVolume_php | '''SMedias_setVolume.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/STVs_pause_php | '''STVs_pause.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/STVs_setChannel_php | '''STVs_setChannel.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/STVs_setSource_php | '''STVs_setSource.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/STVs_setVolume_php | '''STVs_setVolume.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SVacuums_pause_php | '''SVacuums_pause.php''']] - &lt;br /&gt;
&lt;br /&gt;
'''app''' -  пока файл не понятен, его назначение так-же&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/darknessmode_activate_php | '''darknessmode_activate.php''']] - для активации устройств, связанных с группой &amp;quot;groupSunset&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/darknessmode_deactivate_php | '''darknessmode_deactivate.php''']] - для деактивации устройств, связанных с группой &amp;quot;groupSunset&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_class_php | '''devices.class.php''']] - содержит набор функций для взаимодействия с устройствами в рамках проекта. Он обеспечивает взаимодействие между устройствами, базой данных, внешними API и другими частями системы, такими как управление группами устройств, связями между ними и действиями, которые могут быть выполнены над устройствами.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_edit_inc_php | '''devices_edit.inc.php''']] - содержит функции и код, связанный с редактированием устройств в проекте. Он включает в себя обработку форм, сохранение данных и другие операции, связанные с редактированием устройств.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_links_inc_php | '''devices_links.inc.php''']] - содержит функции для работы с связями между устройствами. Он включает в себя обработку создания, обновления и удаления связей, а также работу с деталями связей и другие операции, связанные с управлением связями устройств.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_links_actions_inc_php | '''devices_links_actions.inc.php''']] - содержит функции для обработки действий, связанных с устройствами. Он выполняет действия, такие как включение, выключение, установка цвета и передача значений объектов. Также файл подключает дополнительные скрипты для обработки действий из директории [[Modules/devices/addons|'''addons''']]&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_manage_groups_inc_php | '''devices_manage_groups.inc.php''']] - содержит функции для управления группами устройств. Он включает в себя операции по созданию, редактированию и удалению групп устройств, обновление объектов группы, очистку кэша значений, а также перенаправление на соответствующие страницы просмотра.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_manage_schedule_inc_php | '''devices_manage_schedule.inc.php''']] -  этот файл включает в себя операции по созданию, редактированию и удалению расписаний для устройств, а также операции по привязке устройств к определенным временным интервалам и управлению их работой в соответствии с расписанием.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_quick_edit_inc_php | '''devices_quick_edit.inc.php''']] - содержит код для сщздания/редактирования устройств. Он обеспечивает быстрый доступ к основным параметрам устройств, таким как имя, описание, состояние и другие атрибуты, позволяя пользователям внести изменения на странице редактирования.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_schedule_inc_php | '''devices_schedule.inc.php''']] - этот файл предоставляет функциональность для управления расписаниями устройств, включая создание, редактирование и удаление расписаний, а также привязку устройств к определенным временным интервалам и управление их работой в соответствии с расписанием.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_search_inc_php | '''devices_search.inc.php''']] -  содержит функции для поиска устройств в системе. Он предоставляет возможность осуществлять поиск устройств по различным критериям, таким как имя устройства, тип, статус и другие атрибуты. Кроме того, файл может включать функции для фильтрации результатов поиска и отображения найденной информации о устройствах.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_structure_inc_php | '''devices_structure.inc.php''']] -&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_structure_links_inc_php | '''devices_structure_links.inc.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_widgets_js_php | '''devices_widgets.js.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/econommode_activate_php | '''econommode_activate.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/econommode_deactivate_php | '''econommode_deactivate.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/homebridgeSync_inc_php | '''homebridgeSync.inc.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/nightmode_activate_php | '''nightmode_activate.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/nobodyhomemode_activate_php | '''nobodyhomemode_activate.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/nobodyhomemode_deactivate_php | '''nobodyhomemode_deactivate.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/processCommand_inc_php | '''processCommand.inc.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/processHomebridgeMQTT_inc_php | '''processHomebridgeMQTT.inc.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/system_checkstate_php | '''system_checkstate.php''']] -&lt;/div&gt;</summary>
		<author><name>Elmax</name></author>
	</entry>
	<entry>
		<id>https://mdminfo.ru/index.php?title=Modules/devices/devices_search_inc_php&amp;diff=2086</id>
		<title>Modules/devices/devices search inc php</title>
		<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=Modules/devices/devices_search_inc_php&amp;diff=2086"/>
		<updated>2024-04-03T18:29:52Z</updated>

		<summary type="html">&lt;p&gt;Elmax: + file devices_search.inc.php&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Modules/devices/devices_search_inc_php | devices_search.inc.php]]&lt;br /&gt;
&lt;br /&gt;
[[Папки и файлы|ᐂ В корневой раздел]]  [[Modules/devices|ᐃ В директорию расположения файла]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
/*&lt;br /&gt;
* @version 0.1 (wizard)&lt;br /&gt;
*/&lt;br /&gt;
// Глобальная переменная $session используется для хранения данных сессии.&lt;br /&gt;
global $session;&lt;br /&gt;
&lt;br /&gt;
// Проверяем, является ли текущий объект панелью управления.&lt;br /&gt;
// Если это так, то устанавливаем флаг CONTROLPANEL в 1, что может быть использовано для определения,&lt;br /&gt;
// нужно ли отображать элементы управления панелью.&lt;br /&gt;
if ($this-&amp;gt;owner-&amp;gt;name == 'panel') {&lt;br /&gt;
    $out['CONTROLPANEL'] = 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Инициализируем запрос с условием, что все записи должны быть выбраны.&lt;br /&gt;
// Значение &amp;quot;1&amp;quot; в SQL означает, что условие всегда истинно, и запрос будет выбирать все записи.&lt;br /&gt;
$qry = &amp;quot;1&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// Фильтры поиска.&lt;br /&gt;
// Здесь предполагается, что будут добавлены дополнительные условия для фильтрации результатов поиска.&lt;br /&gt;
&lt;br /&gt;
// Получаем тип устройства из запроса.&lt;br /&gt;
// Функция gr('type') предположительно извлекает параметр 'type' из запроса.&lt;br /&gt;
$type = gr('type');&lt;br /&gt;
&lt;br /&gt;
// Если тип устройства указан, добавляем его в запрос.&lt;br /&gt;
// Это позволяет фильтровать результаты поиска по типу устройства.&lt;br /&gt;
if ($type != '') {&lt;br /&gt;
    // Добавляем условие в запрос, чтобы выбрать только устройства с указанным типом.&lt;br /&gt;
    // Функция DBSafe($type) предположительно очищает входные данные от потенциально вредоносного кода.&lt;br /&gt;
    $qry .= &amp;quot; AND devices.TYPE='&amp;quot; . DBSafe($type) . &amp;quot;'&amp;quot;;&lt;br /&gt;
    // Сохраняем тип устройства в массиве $out для дальнейшего использования.&lt;br /&gt;
    $out['TYPE'] = $type;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Получаем ID местоположения из запроса.&lt;br /&gt;
// Функция gr('location_id') предположительно извлекает параметр 'location_id' из запроса.&lt;br /&gt;
$location_id = gr('location_id');&lt;br /&gt;
&lt;br /&gt;
// Проверяем, указан ли параметр управления местоположениями.&lt;br /&gt;
// Если параметр равен 'manage_locations', перенаправляем пользователя на страницу управления местоположениями.&lt;br /&gt;
if ($location_id == 'manage_locations') {&lt;br /&gt;
    $this-&amp;gt;redirect(&amp;quot;?(panel:{action=locations})&amp;quot;);&lt;br /&gt;
} elseif ($location_id) {&lt;br /&gt;
    // Если указан ID местоположения, добавляем его в запрос.&lt;br /&gt;
    // Приведение к типу int гарантирует, что ID будет числом, что необходимо для корректного SQL-запроса.&lt;br /&gt;
    $out['LOCATION_ID'] = (int)$location_id;&lt;br /&gt;
    // Добавляем условие в запрос, чтобы выбрать только устройства с указанным ID местоположения.&lt;br /&gt;
    $qry .= &amp;quot; AND devices.LOCATION_ID=&amp;quot; . $out['LOCATION_ID'];&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Получаем имя группы устройств из запроса.&lt;br /&gt;
// Функция gr('group_name') предположительно извлекает параметр 'group_name' из запроса.&lt;br /&gt;
$group_name = gr('group_name');&lt;br /&gt;
&lt;br /&gt;
// Проверяем, указан ли параметр управления группами.&lt;br /&gt;
// Если параметр равен 'manage_groups', перенаправляем пользователя на страницу управления группами.&lt;br /&gt;
if ($group_name == 'manage_groups') {&lt;br /&gt;
    $this-&amp;gt;redirect(&amp;quot;?view_mode=manage_groups&amp;quot;);&lt;br /&gt;
} elseif ($group_name == 'is:archived') {&lt;br /&gt;
    // Если указан параметр архивированных устройств, добавляем его в запрос.&lt;br /&gt;
    // Это позволяет фильтровать результаты поиска, отображая только архивированные устройства.&lt;br /&gt;
    $qry .= &amp;quot; AND devices.ARCHIVED=1&amp;quot;;&lt;br /&gt;
} elseif ($group_name == 'is:system') {&lt;br /&gt;
    // Если указан параметр системных устройств, добавляем его в запрос.&lt;br /&gt;
    // Это позволяет фильтровать результаты поиска, отображая только системные устройства.&lt;br /&gt;
    $qry .= &amp;quot; AND devices.SYSTEM_DEVICE=1&amp;quot;;&lt;br /&gt;
} elseif ($group_name == 'is:inactive') {&lt;br /&gt;
    // Получаем имена объектов, которые не активны (например, устройства, не отвечающие на запросы).&lt;br /&gt;
    $object_names = getObjectsByProperty('alive');&lt;br /&gt;
    if (!is_array($object_names)) {&lt;br /&gt;
        $object_names = array(0);&lt;br /&gt;
    }&lt;br /&gt;
    $total = count($object_names);&lt;br /&gt;
    if ($total &amp;gt; 0) {&lt;br /&gt;
        for ($i = 0; $i &amp;lt; $total; $i++) {&lt;br /&gt;
            // Проверяем, является ли объект активным.&lt;br /&gt;
            $val = getGlobal($object_names[$i].'.alive');&lt;br /&gt;
            if (!$val) {&lt;br /&gt;
                // Если объект не активен, добавляем его в список для фильтрации.&lt;br /&gt;
                $res_object_names[] = &amp;quot;'&amp;quot; . $object_names[$i] . &amp;quot;'&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        // Добавляем условие в запрос для фильтрации по именам неактивных объектов.&lt;br /&gt;
        $qry .= &amp;quot; AND devices.LINKED_OBJECT IN (&amp;quot; . implode(',', $res_object_names) . &amp;quot;)&amp;quot;;&lt;br /&gt;
    } else {&lt;br /&gt;
        // Если список объектов пуст, добавляем условие, которое не позволит выбрать ни одного устройства.&lt;br /&gt;
        $qry .= &amp;quot; AND 0&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
} elseif ($group_name == 'is:battery') {&lt;br /&gt;
    // Получаем имена объектов, работающих от батареи.&lt;br /&gt;
    // Функция getObjectsByProperty('batteryOperated', 1) предположительно возвращает список объектов,&lt;br /&gt;
    // которые работают от батареи.&lt;br /&gt;
    $object_names = getObjectsByProperty('batteryOperated', 1);&lt;br /&gt;
    if (!is_array($object_names)) {&lt;br /&gt;
        $object_names = array(0);&lt;br /&gt;
    }&lt;br /&gt;
    $total = count($object_names);&lt;br /&gt;
    if ($total &amp;gt; 0) {&lt;br /&gt;
        for ($i = 0; $i &amp;lt; $total; $i++) {&lt;br /&gt;
            $object_names[$i] = &amp;quot;'&amp;quot; . $object_names[$i] . &amp;quot;'&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
        // Добавляем имена объектов в запрос, чтобы фильтровать результаты поиска по объектам,&lt;br /&gt;
        // работающим от батареи.&lt;br /&gt;
        $qry .= &amp;quot; AND devices.LINKED_OBJECT IN (&amp;quot; . implode(',', $object_names) . &amp;quot;)&amp;quot;;&lt;br /&gt;
    } else {&lt;br /&gt;
        // Если список объектов пуст, добавляем условие, которое не позволит выбрать ни одного устройства.&lt;br /&gt;
        $qry .= &amp;quot; AND 0&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
} elseif ($group_name == 'is:battery_low') {&lt;br /&gt;
    // Получаем имена объектов с низким уровнем заряда батареи.&lt;br /&gt;
    // Функция getObjectsByProperty('batteryWarning', 1) предположительно возвращает список объектов,&lt;br /&gt;
    // у которых уровень заряда батареи низкий.&lt;br /&gt;
    $object_names = getObjectsByProperty('batteryWarning', 1);&lt;br /&gt;
    if (!is_array($object_names)) {&lt;br /&gt;
        $object_names = array(0);&lt;br /&gt;
    }&lt;br /&gt;
    $total = count($object_names);&lt;br /&gt;
    if ($total &amp;gt; 0) {&lt;br /&gt;
        for ($i = 0; $i &amp;lt; $total; $i++) {&lt;br /&gt;
            $object_names[$i] = &amp;quot;'&amp;quot; . $object_names[$i] . &amp;quot;'&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
        // Добавляем имена объектов в запрос, чтобы фильтровать результаты поиска по объектам,&lt;br /&gt;
        // у которых уровень заряда батареи низкий.&lt;br /&gt;
        $qry .= &amp;quot; AND devices.LINKED_OBJECT IN (&amp;quot; . implode(',', $object_names) . &amp;quot;)&amp;quot;;&lt;br /&gt;
    } else {&lt;br /&gt;
        $qry .= &amp;quot; AND 0&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
} elseif ($group_name) {&lt;br /&gt;
    // Получаем имена объектов по имени группы.&lt;br /&gt;
    // Функция getObjectsByProperty('group' . $group_name, 1) предположительно возвращает список объектов,&lt;br /&gt;
    // соответствующих указанному имени группы.&lt;br /&gt;
    $object_names = getObjectsByProperty('group' . $group_name, 1);&lt;br /&gt;
    if (!is_array($object_names)) {&lt;br /&gt;
        $object_names = array(0);&lt;br /&gt;
    }&lt;br /&gt;
    $total = count($object_names);&lt;br /&gt;
    if ($total &amp;gt; 0) {&lt;br /&gt;
        for ($i = 0; $i &amp;lt; $total; $i++) {&lt;br /&gt;
            $object_names[$i] = &amp;quot;'&amp;quot; . $object_names[$i] . &amp;quot;'&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
        // Добавляем имена объектов в запрос, чтобы фильтровать результаты поиска по объектам,&lt;br /&gt;
        // соответствующим указанному имени группы.&lt;br /&gt;
        $qry .= &amp;quot; AND devices.LINKED_OBJECT IN (&amp;quot; . implode(',', $object_names) . &amp;quot;)&amp;quot;;&lt;br /&gt;
    } else {&lt;br /&gt;
        $qry .= &amp;quot; AND 0&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
// Сохраняем имя группы устройств в массиве $out для дальнейшего использования.&lt;br /&gt;
$out['GROUP_NAME'] = $group_name;&lt;br /&gt;
&lt;br /&gt;
// Если не указан параметр архивированных устройств, добавляем условие выбора неархивированных устройств.&lt;br /&gt;
// Это условие гарантирует, что в результатах поиска будут отображаться только устройства, которые не были помечены как архивированные.&lt;br /&gt;
if ($group_name != 'is:archived') {&lt;br /&gt;
    $qry .= &amp;quot; AND devices.ARCHIVED=0&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// QUERY READY//Запрос к базе данных готов к выполнению&lt;br /&gt;
// Глобальная переменная $save_qry используется для определения, следует ли сохранять текущий запрос или использовать сохраненный.&lt;br /&gt;
global $save_qry;&lt;br /&gt;
&lt;br /&gt;
// Если установлено сохранение запроса, используем сохраненный запрос.&lt;br /&gt;
// Это может быть полезно для сохранения состояния фильтрации между различными запросами.&lt;br /&gt;
if ($save_qry) {&lt;br /&gt;
    $qry = $session-&amp;gt;data['devices_qry'];&lt;br /&gt;
} else {&lt;br /&gt;
    // Иначе сохраняем текущий запрос в сессии для возможного использования в будущем.&lt;br /&gt;
    $session-&amp;gt;data['devices_qry'] = $qry;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Если запрос пуст, устанавливаем его как &amp;quot;1&amp;quot; для выбора всех записей.&lt;br /&gt;
// Это обеспечивает, что в любом случае будет выполнен запрос, даже если не было указано никаких фильтров.&lt;br /&gt;
if (!$qry) $qry = &amp;quot;1&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// Получаем общее количество устройств, не архивированных.&lt;br /&gt;
// Это делается для отображения общего количества доступных устройств в пользовательском интерфейсе.&lt;br /&gt;
$tmp = SQLSelectOne(&amp;quot;SELECT COUNT(*) AS TOTAL FROM devices WHERE devices.ARCHIVED!=1&amp;quot;);&lt;br /&gt;
$out['TOTAL'] = (int)$tmp['TOTAL'];&lt;br /&gt;
&lt;br /&gt;
$loc_title = '';&lt;br /&gt;
// Сортировка результатов по приоритету местоположения, названию местоположения, ID местоположения, типу устройства и названию устройства&lt;br /&gt;
$sortby_devices = &amp;quot;locations.PRIORITY DESC, locations.TITLE, devices.LOCATION_ID, devices.TYPE, devices.TITLE&amp;quot;;&lt;br /&gt;
$out['SORTBY'] = $sortby_devices;&lt;br /&gt;
// РЕЗУЛЬТАТЫ ПОИСКА&lt;br /&gt;
// Выполняем SQL-запрос для получения результатов поиска устройств, включая информацию о местоположении каждого устройства.&lt;br /&gt;
// Запрос сортируется по заданным критериям сортировки.&lt;br /&gt;
$res = SQLSelect(&amp;quot;SELECT devices.*, locations.TITLE as LOCATION_TITLE FROM devices LEFT JOIN locations ON devices.LOCATION_ID=locations.ID WHERE $qry ORDER BY &amp;quot; . $sortby_devices);&lt;br /&gt;
&lt;br /&gt;
// Проверяем, есть ли результаты поиска.&lt;br /&gt;
if (isset($res[0])) {&lt;br /&gt;
    //paging($res, 100, $out); // search result paging&lt;br /&gt;
    // Подсчитываем общее количество найденных устройств.&lt;br /&gt;
    $total = count($res);&lt;br /&gt;
    $out['TOTAL_FOUND'] = $total;&lt;br /&gt;
    // Обрабатываем каждый результат поиска.&lt;br /&gt;
    for ($i = 0; $i &amp;lt; $total; $i++) {&lt;br /&gt;
        // Если название местоположения изменилось, устанавливаем флаг NEW_LOCATION.&lt;br /&gt;
        if ($res[$i]['LOCATION_TITLE'] != $loc_title) {&lt;br /&gt;
            $res[$i]['NEW_LOCATION'] = 1;&lt;br /&gt;
            $loc_title = $res[$i]['LOCATION_TITLE'];&lt;br /&gt;
        }&lt;br /&gt;
        // Если у устройства есть связанный объект, обрабатываем его.&lt;br /&gt;
        if ($res[$i]['LINKED_OBJECT']) {&lt;br /&gt;
            // Обработка устройства в зависимости от его типа.&lt;br /&gt;
            if ($res[$i]['TYPE'] == 'camera' || $res[$i]['TYPE'] == 'mark') {&lt;br /&gt;
                $processed = $this-&amp;gt;processDevice($res[$i]['ID'], 'list');&lt;br /&gt;
            } else {&lt;br /&gt;
                $processed = $this-&amp;gt;processDevice($res[$i]['ID']);&lt;br /&gt;
            }&lt;br /&gt;
            // Добавляем HTML-представление устройства.&lt;br /&gt;
            $res[$i]['HTML'] = $processed['HTML'];&lt;br /&gt;
            // Получаем свойства связанного объекта.&lt;br /&gt;
            $object_rec = SQLSelectOne(&amp;quot;SELECT ID FROM objects WHERE TITLE='&amp;quot; . $res[$i]['LINKED_OBJECT'] . &amp;quot;'&amp;quot;);&lt;br /&gt;
            if ($object_rec['ID']) {&lt;br /&gt;
                $properties = SQLSelect(&amp;quot;SELECT pvalues.*, properties.TITLE as PROPERTY FROM pvalues LEFT JOIN properties ON properties.ID=pvalues.PROPERTY_ID WHERE pvalues.OBJECT_ID=&amp;quot; . $object_rec['ID'] . &amp;quot; AND pvalues.LINKED_MODULES!='' ORDER BY UPDATED&amp;quot;);&lt;br /&gt;
                $totalp = count($properties);&lt;br /&gt;
                if ($totalp &amp;gt; 0) {&lt;br /&gt;
                    // Обрабатываем свойства, связанные с модулями.&lt;br /&gt;
                    $linked_modules = array();&lt;br /&gt;
                    for ($ip = 0; $ip &amp;lt; $totalp; $ip++) {&lt;br /&gt;
                        $tmp = explode(',', $properties[$ip]['LINKED_MODULES']);&lt;br /&gt;
                        $tmp = array_map('trim', $tmp);&lt;br /&gt;
                        foreach ($tmp as $linked_module) {&lt;br /&gt;
                            $linked_modules[$linked_module] = array('OBJECT' =&amp;gt; $res[$i]['LINKED_OBJECT'], 'PROPERTY' =&amp;gt; $properties[$ip]['PROPERTY']);&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                    foreach ($linked_modules as $k =&amp;gt; $v) {&lt;br /&gt;
                        $v['MODULE'] = $k;&lt;br /&gt;
                        $res[$i]['LINKED_MODULES'][] = $v;&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        // Добавляем название типа устройства.&lt;br /&gt;
        $res[$i]['TYPE_TITLE'] = $this-&amp;gt;device_types[$res[$i]['TYPE']]['TITLE'];&lt;br /&gt;
        // Получаем количество связанных устройств.&lt;br /&gt;
        $linked = SQLSelectOne(&amp;quot;SELECT COUNT(*) AS TOTAL FROM devices_linked WHERE (DEVICE1_ID=&amp;quot; . $res[$i]['ID'] . &amp;quot; OR DEVICE2_ID=&amp;quot; . $res[$i]['ID'] . &amp;quot;)&amp;quot;);&lt;br /&gt;
        if ($linked['TOTAL']) {&lt;br /&gt;
            $res[$i]['LINKED'] = $linked['TOTAL'];&lt;br /&gt;
        }&lt;br /&gt;
        // Получаем количество методов устройства.&lt;br /&gt;
        $methods = SQLSelectOne(&amp;quot;SELECT COUNT(*) AS TOTAL FROM methods WHERE CODE!='' AND OBJECT_ID=&amp;quot;.(int)$object_rec['ID']);&lt;br /&gt;
        if ($methods['TOTAL']) {&lt;br /&gt;
            $res[$i]['METHODS'] = $methods['TOTAL'];&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    // Сохраняем результаты поиска в массиве $out.&lt;br /&gt;
    $out['RESULT'] = $res;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Подготовка к формированию списка типов устройств.&lt;br /&gt;
$types = array();&lt;br /&gt;
&lt;br /&gt;
// Формирование списка типов устройств&lt;br /&gt;
// Проходим по всем типам устройств, определенным в $this-&amp;gt;device_types.&lt;br /&gt;
foreach ($this-&amp;gt;device_types as $k =&amp;gt; $v) {&lt;br /&gt;
    // Проверяем, установлено ли название для типа устройства.&lt;br /&gt;
    if (isset($v['TITLE'])) {&lt;br /&gt;
        // Создаем запись для типа устройства с его названием и именем.&lt;br /&gt;
        $type_rec = array('NAME' =&amp;gt; $k, 'TITLE' =&amp;gt; $v['TITLE']);&lt;br /&gt;
        // Выполняем запрос к базе данных для подсчета количества устройств данного типа, которые не архивированы.&lt;br /&gt;
        $tmp = SQLSelectOne(&amp;quot;SELECT COUNT(*) AS TOTAL FROM devices WHERE TYPE='&amp;quot; . $k . &amp;quot;' AND ARCHIVED!=1&amp;quot;);&lt;br /&gt;
        // Сохраняем количество устройств в записи типа устройства.&lt;br /&gt;
        $type_rec['TOTAL'] = (int)$tmp['TOTAL'];&lt;br /&gt;
        // Если количество устройств больше нуля, добавляем запись типа устройства в список.&lt;br /&gt;
        if ($type_rec['TOTAL'] &amp;gt; 0) {&lt;br /&gt;
            $types[] = $type_rec;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
// Сортируем список типов устройств по названию.&lt;br /&gt;
usort($types, function ($a, $b) {&lt;br /&gt;
    return strcmp($a[&amp;quot;TITLE&amp;quot;], $b[&amp;quot;TITLE&amp;quot;]);&lt;br /&gt;
});&lt;br /&gt;
// Сохраняем отсортированный список типов устройств в массиве $out.&lt;br /&gt;
$out['TYPES'] = $types;&lt;br /&gt;
&lt;br /&gt;
// Получение списка местоположений&lt;br /&gt;
// Выполняем запрос к базе данных для получения списка местоположений.&lt;br /&gt;
$locations = SQLSelect(&amp;quot;SELECT ID, TITLE FROM locations ORDER BY TITLE+0&amp;quot;);&lt;br /&gt;
$total = count($locations);&lt;br /&gt;
// Получение количества устройств для каждого местоположения&lt;br /&gt;
// Проходим по всем местоположениям и выполняем запрос к базе данных для подсчета количества устройств в каждом местоположении.&lt;br /&gt;
for ($i = 0; $i &amp;lt; $total; $i++) {&lt;br /&gt;
    $tmp = SQLSelectOne(&amp;quot;SELECT COUNT(*) AS TOTAL FROM devices WHERE LOCATION_ID='&amp;quot; . $locations[$i]['ID'] . &amp;quot;'&amp;quot;);&lt;br /&gt;
    // Сохраняем количество устройств в записи местоположения.&lt;br /&gt;
    $locations[$i]['TOTAL'] = (int)$tmp['TOTAL'];&lt;br /&gt;
}&lt;br /&gt;
// Сохраняем список местоположений с количеством устройств в массиве $out.&lt;br /&gt;
$out['LOCATIONS'] = $locations;&lt;br /&gt;
&lt;br /&gt;
// Получение списка групп устройств&lt;br /&gt;
// Выполняем запрос к базе данных для получения списка групп устройств.&lt;br /&gt;
$groups = SQLSelect(&amp;quot;SELECT * FROM devices_groups ORDER BY TITLE&amp;quot;);&lt;br /&gt;
// Добавляем системные группы в список групп.&lt;br /&gt;
$groups[] = array('SYS_NAME' =&amp;gt; 'Eco', 'TITLE' =&amp;gt; LANG_DEVICES_GROUP_ECO);&lt;br /&gt;
$groups[] = array('SYS_NAME' =&amp;gt; 'EcoOn', 'TITLE' =&amp;gt; LANG_DEVICES_GROUP_ECO_ON);&lt;br /&gt;
$groups[] = array('SYS_NAME' =&amp;gt; 'Sunrise', 'TITLE' =&amp;gt; LANG_DEVICES_GROUP_SUNRISE);&lt;br /&gt;
$groups[] = array('SYS_NAME' =&amp;gt; 'Sunset', 'TITLE' =&amp;gt; LANG_DEVICES_GROUP_SUNSET);&lt;br /&gt;
$groups[] = array('SYS_NAME' =&amp;gt; 'Night', 'TITLE' =&amp;gt; LANG_DEVICES_GROUP_NIGHT);&lt;br /&gt;
// Сохраняем список групп устройств в массиве $out.&lt;br /&gt;
$out['GROUPS'] = $groups;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Elmax</name></author>
	</entry>
	<entry>
		<id>https://mdminfo.ru/index.php?title=Modules/devices&amp;diff=2085</id>
		<title>Modules/devices</title>
		<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=Modules/devices&amp;diff=2085"/>
		<updated>2024-04-02T09:35:50Z</updated>

		<summary type="html">&lt;p&gt;Elmax: Поправил линки на переименованные страницы&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Modules/devices|/modules/devices]]&lt;br /&gt;
&lt;br /&gt;
[[Папки и файлы|ᐂ В корневой раздел]]  [[Modules|ᐃ на директорию выше]][https://github.com/sergejey/majordomo/tree/master/modules/devices | Перейти в директорию на github]&lt;br /&gt;
===== Папки директории '''/modules/devices''' =====&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/addons|'''addons''']] - пока папка не имеет описания&lt;br /&gt;
&lt;br /&gt;
===== Файлы директории '''/modules/devices''' =====&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/Rooms_onActivity_php | '''Rooms_onActivity.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/Rooms_onIdle_php | '''Rooms_onIdle.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/Rooms_updateActivityStatus_php | '''Rooms_updateActivityStatus.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SButtons_pressed_php | '''SButtons_pressed.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCameras_motionDetected_php | '''SCameras_motionDetected.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCameras_takeSeries_php | '''SCameras_takeSeries.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCameras_takeSnapshot_php | '''SCameras_takeSnapshot.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCameras_updatePreview_php | '''SCameras_updatePreview.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SControllers_switch_php | '''SControllers_switch.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SControllers_turnOff_php | '''SControllers_turnOff.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SControllers_turnOn_php | '''SControllers_turnOn.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCounters_pulseDetected_php | '''SCounters_pulseDetected.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCounters_refreshStats_php | '''SCounters_refreshStats.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCounters_valueUpdated_php | '''SCounters_valueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCounters_valueWorkUpdated_php | '''SCounters_valueWorkUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDevices_batteryLevelUpdated_php | '''SDevices_batteryLevelUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDevices_keepAlive_php | '''SDevices_keepAlive.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDevices_logicAction_php | '''SDevices_logicAction.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDevices_statusUpdated_php | '''SDevices_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_levelUpdated_php | '''SDimmers_levelUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_levelWorkUpdated_php | '''SDimmers_levelWorkUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_setLevel_php | '''SDimmers_setLevel.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_statusUpdated_php | '''SDimmers_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_turnOff_php | '''SDimmers_turnOff.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_turnOn_php | '''SDimmers_turnOn.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SGroups_statusUpdated_php | '''SGroups_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SGroups_switch_php | '''SGroups_switch.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SGroups_turnOff_php | '''SGroups_turnOff.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SGroups_turnOn_php | '''SGroups_turnOn.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLeak_alert_php | '''SLeak_alert.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLeak_blockSensor_php | '''SLeak_blockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLeak_statusUpdated_php | '''SLeak_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLeak_unblockSensor_php | '''SLeak_unblockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMotions_blockSensor_php | '''SMotions_blockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMotions_motionDetected_php | '''SMotions_motionDetected.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMotions_unblockSensor_php | '''SMotions_unblockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenClose_blockSensor_php | '''SOpenClose_blockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenClose_statusUpdated_php | '''SOpenClose_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenClose_unblockSensor_php | '''SOpenClose_unblockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_close_php | '''SOpenable_close.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_levelUpdated_php | '''SOpenable_levelUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_open_php | '''SOpenable_open.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_setLevel_php | '''SOpenable_setLevel.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_statusUpdated_php | '''SOpenable_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_switch_php | '''SOpenable_switch.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SPowerSensors_loadStatusChanged_php | '''SPowerSensors_loadStatusChanged.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SPowerSensors_valueUpdated_php | '''SPowerSensors_valueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SRGB_colorUpdated_php | '''SRGB_colorUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SRGB_setColor_php | '''SRGB_setColor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SRGB_turnOff_php | '''SRGB_turnOff.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SRGB_turnOn_php | '''SRGB_turnOn.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSensors_alert_php | '''SSensors_alert.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSensors_blockSensor_php | '''SSensors_blockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSensors_unblockSensor_php | '''SSensors_unblockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSensors_valueUpdated_php | '''SSensors_valueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSmoke_alert_php | '''SSmoke_alert.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSmoke_blockSensor_php | '''SSmoke_blockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSmoke_statusUpdated_php | '''SSmoke_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSmoke_unblockSensor_php | '''SSmoke_unblockSensor.php''']] -  &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_disable_php | '''SThermostats_disable.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_enable_php | '''SThermostats_enable.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_setTargetTemperature_php | '''SThermostats_setTargetTemperature.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_statusUpdated_php | '''SThermostats_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_switchEnable_php | '''SThermostats_switchEnable.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_tempDown_php | '''SThermostats_tempDown.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_tempUp_php | '''SThermostats_tempUp.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_turnOff_php | '''SThermostats_turnOff.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_turnOn_php | '''SThermostats_turnOn.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_valueUpdated_php | '''SThermostats_valueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_configUpdated_php | '''SAirConditioners_configUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_fanSpeedUpdated_php | '''SAirConditioners_fanSpeedUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_setFanSpeedMode_php | '''SAirConditioners_setFanSpeedMode.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_setTargetTemperature_php | '''SAirConditioners_setTargetTemperature.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_setThermostatMode_php | '''SAirConditioners_setThermostatMode.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_tempDown_php | '''SAirConditioners_tempDown.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_tempUp_php | '''SAirConditioners_tempUp.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_thermostatUpdated_php | '''SAirConditioners_thermostatUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLightSensors_periodMinValueUpdated_php | '''SLightSensors_periodMinValueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLightSensors_valueUpdated_php | '''SLightSensors_valueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMedias_pause_php | '''SMedias_pause.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMedias_setChannel_php | '''SMedias_setChannel.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMedias_setSource_php | '''SMedias_setSource.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMedias_setVolume_php | '''SMedias_setVolume.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/STVs_pause_php | '''STVs_pause.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/STVs_setChannel_php | '''STVs_setChannel.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/STVs_setSource_php | '''STVs_setSource.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/STVs_setVolume_php | '''STVs_setVolume.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SVacuums_pause_php | '''SVacuums_pause.php''']] - &lt;br /&gt;
&lt;br /&gt;
'''app''' -  пока файл не понятен, его назначение так-же&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/darknessmode_activate_php | '''darknessmode_activate.php''']] - для активации устройств, связанных с группой &amp;quot;groupSunset&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/darknessmode_deactivate_php | '''darknessmode_deactivate.php''']] - для деактивации устройств, связанных с группой &amp;quot;groupSunset&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_class_php | '''devices.class.php''']] - содержит набор функций для взаимодействия с устройствами в рамках проекта. Он обеспечивает взаимодействие между устройствами, базой данных, внешними API и другими частями системы, такими как управление группами устройств, связями между ними и действиями, которые могут быть выполнены над устройствами.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_edit_inc_php | '''devices_edit.inc.php''']] - содержит функции и код, связанный с редактированием устройств в проекте. Он включает в себя обработку форм, сохранение данных и другие операции, связанные с редактированием устройств.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_links_inc_php | '''devices_links.inc.php''']] - содержит функции для работы с связями между устройствами. Он включает в себя обработку создания, обновления и удаления связей, а также работу с деталями связей и другие операции, связанные с управлением связями устройств.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_links_actions_inc_php | '''devices_links_actions.inc.php''']] - содержит функции для обработки действий, связанных с устройствами. Он выполняет действия, такие как включение, выключение, установка цвета и передача значений объектов. Также файл подключает дополнительные скрипты для обработки действий из директории [[Modules/devices/addons|'''addons''']]&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_manage_groups_inc_php | '''devices_manage_groups.inc.php''']] - содержит функции для управления группами устройств. Он включает в себя операции по созданию, редактированию и удалению групп устройств, обновление объектов группы, очистку кэша значений, а также перенаправление на соответствующие страницы просмотра.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_manage_schedule_inc_php | '''devices_manage_schedule.inc.php''']] -  этот файл включает в себя операции по созданию, редактированию и удалению расписаний для устройств, а также операции по привязке устройств к определенным временным интервалам и управлению их работой в соответствии с расписанием.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_quick_edit_inc_php | '''devices_quick_edit.inc.php''']] - содержит код для сщздания/редактирования устройств. Он обеспечивает быстрый доступ к основным параметрам устройств, таким как имя, описание, состояние и другие атрибуты, позволяя пользователям внести изменения на странице редактирования.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_schedule_inc_php | '''devices_schedule.inc.php''']] - этот файл предоставляет функциональность для управления расписаниями устройств, включая создание, редактирование и удаление расписаний, а также привязку устройств к определенным временным интервалам и управление их работой в соответствии с расписанием.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_search_inc_php | '''devices_search.inc.php''']] -&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_structure_inc_php | '''devices_structure.inc.php''']] -&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_structure_links_inc_php | '''devices_structure_links.inc.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_widgets_js_php | '''devices_widgets.js.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/econommode_activate_php | '''econommode_activate.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/econommode_deactivate_php | '''econommode_deactivate.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/homebridgeSync_inc_php | '''homebridgeSync.inc.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/nightmode_activate_php | '''nightmode_activate.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/nobodyhomemode_activate_php | '''nobodyhomemode_activate.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/nobodyhomemode_deactivate_php | '''nobodyhomemode_deactivate.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/processCommand_inc_php | '''processCommand.inc.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/processHomebridgeMQTT_inc_php | '''processHomebridgeMQTT.inc.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/system_checkstate_php | '''system_checkstate.php''']] -&lt;/div&gt;</summary>
		<author><name>Elmax</name></author>
	</entry>
	<entry>
		<id>https://mdminfo.ru/index.php?title=Devices_quick_edit_inc_php&amp;diff=2084</id>
		<title>Devices quick edit inc php</title>
		<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=Devices_quick_edit_inc_php&amp;diff=2084"/>
		<updated>2024-04-02T09:33:18Z</updated>

		<summary type="html">&lt;p&gt;Elmax: Elmax переименовал страницу Devices quick edit inc php в Modules/devices/devices quick edit inc php: Так же пропустил путь Modules/devices/&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#перенаправление [[Modules/devices/devices quick edit inc php]]&lt;/div&gt;</summary>
		<author><name>Elmax</name></author>
	</entry>
	<entry>
		<id>https://mdminfo.ru/index.php?title=Modules/devices/devices_quick_edit_inc_php&amp;diff=2083</id>
		<title>Modules/devices/devices quick edit inc php</title>
		<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=Modules/devices/devices_quick_edit_inc_php&amp;diff=2083"/>
		<updated>2024-04-02T09:33:18Z</updated>

		<summary type="html">&lt;p&gt;Elmax: Elmax переименовал страницу Devices quick edit inc php в Modules/devices/devices quick edit inc php: Так же пропустил путь Modules/devices/&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Modules/devices/devices_quick_edit_inc_php | devices_quick_edit.inc.php]]&lt;br /&gt;
&lt;br /&gt;
[[Папки и файлы|ᐂ В корневой раздел]]  [[Modules/devices|ᐃ В директорию расположения файла]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
// Если текущий режим обновления&lt;br /&gt;
if ($this-&amp;gt;mode=='update') {&lt;br /&gt;
    //dprint($_REQUEST);&lt;br /&gt;
    $location_ids=array();&lt;br /&gt;
    // Проходим по всем запросам&lt;br /&gt;
    foreach($_REQUEST as $k=&amp;gt;$v) {&lt;br /&gt;
        // Если ключ соответствует шаблону location с числом&lt;br /&gt;
        if (preg_match('/location(\d+)/',$k,$m)) {&lt;br /&gt;
            // Получаем запись о локации по ID&lt;br /&gt;
            $location_rec=SQLSelectOne(&amp;quot;SELECT * FROM locations WHERE ID=&amp;quot;.$m[1]);&lt;br /&gt;
            // Если запись найдена&lt;br /&gt;
            if ($location_rec['ID']) {&lt;br /&gt;
                // Обновляем название локации&lt;br /&gt;
                $location_rec['TITLE']=gr($k);&lt;br /&gt;
                // Обновляем запись в базе данных&lt;br /&gt;
                SQLUpdate('locations',$location_rec);&lt;br /&gt;
            } else {&lt;br /&gt;
                // Создаем новую запись о локации&lt;br /&gt;
                $location_rec=array();&lt;br /&gt;
                $location_rec['TITLE']=gr($k);&lt;br /&gt;
                $location_rec['ID']=SQLInsert('locations',$location_rec);&lt;br /&gt;
            }&lt;br /&gt;
            // Добавляем ID локация в массив&lt;br /&gt;
            $location_ids[$m[1]]=$location_rec['ID'];&lt;br /&gt;
        }&lt;br /&gt;
        // Если ключ соответствует шаблону device с числом&lt;br /&gt;
        if (preg_match('/device(\d+)/',$k,$m)) {&lt;br /&gt;
            // Получаем запись о устройстве по ID&lt;br /&gt;
            $device=SQLSelectOne(&amp;quot;SELECT * FROM devices WHERE ID=&amp;quot;.$m[1]);&lt;br /&gt;
            // Если запись найдена и название устройства изменилось&lt;br /&gt;
            if ($device['ID'] &amp;amp;&amp;amp; $device['TITLE']!=gr($k)) {&lt;br /&gt;
                // Обновляем название устройства&lt;br /&gt;
                $device['TITLE']=gr($k);&lt;br /&gt;
                // Обновляем запись в базе данных&lt;br /&gt;
                SQLUpdate('devices',$device);&lt;br /&gt;
                // Получаем запись о связанном объекте&lt;br /&gt;
                $object_rec = SQLSelectOne(&amp;quot;SELECT * FROM objects WHERE TITLE='&amp;quot; . DBSafe($device['LINKED_OBJECT']).&amp;quot;'&amp;quot;);&lt;br /&gt;
                // Если запись о связанном объекте найдена&lt;br /&gt;
                if ($object_rec['ID']) {&lt;br /&gt;
                    // Обновляем описание связанного объекта&lt;br /&gt;
                    $object_rec['DESCRIPTION'] = $device['TITLE'];&lt;br /&gt;
                    // Обновляем запись в базе данных&lt;br /&gt;
                    SQLUpdate('objects',$object_rec);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    //dprint($_REQUEST);&lt;br /&gt;
    $devices_added=0;&lt;br /&gt;
    // Проходим по всем запросам еще раз&lt;br /&gt;
    foreach($_REQUEST as $k=&amp;gt;$v) {&lt;br /&gt;
        // Если ключ соответствует шаблону newdevice с числами&lt;br /&gt;
        if (preg_match('/newdevice(\d+)_l(\d+)/',$k,$m)) {&lt;br /&gt;
            // Получаем название нового устройства и его тип&lt;br /&gt;
            $device_title = gr('newdevice'.$m[1].'_l'.$m[2]);&lt;br /&gt;
            $device_type= gr('newtype'.$m[1].'_l'.$m[2]);&lt;br /&gt;
            // Получаем ID локация&lt;br /&gt;
            $location_id=$location_ids[$m[2]];&lt;br /&gt;
            // Если все данные предоставлены&lt;br /&gt;
            if ($device_title &amp;amp;&amp;amp; $device_type &amp;amp;&amp;amp; $location_id) {&lt;br /&gt;
                // Создаем новую запись о устройстве&lt;br /&gt;
                $rec=array();&lt;br /&gt;
                $rec['TITLE']=$device_title;&lt;br /&gt;
                $rec['LOCATION_ID']=$location_id;&lt;br /&gt;
                $rec['TYPE']=$device_type;&lt;br /&gt;
                $rec['ID']=SQLInsert('devices',$rec);&lt;br /&gt;
&lt;br /&gt;
                // Получаем название комнаты по ID локации&lt;br /&gt;
                $location_title = getRoomObjectByLocation($rec['LOCATION_ID'], 1);&lt;br /&gt;
&lt;br /&gt;
                // Получаем детали типа устройства&lt;br /&gt;
                $type_details = $this-&amp;gt;getTypeDetails($rec['TYPE']);&lt;br /&gt;
                // Формируем префикс для нового объекта&lt;br /&gt;
                $prefix = ucfirst($rec['TYPE']);&lt;br /&gt;
                // Получаем новое название объекта&lt;br /&gt;
                $new_object_title = $prefix . $this-&amp;gt;getNewObjectIndex($type_details['CLASS'], $prefix);&lt;br /&gt;
                // Добавляем новый объект&lt;br /&gt;
                $object_id = addClassObject($type_details['CLASS'], $new_object_title, 'sdevice' . $rec['ID']);&lt;br /&gt;
                // Обновляем связанный объект устройства&lt;br /&gt;
                $rec['LINKED_OBJECT'] = $new_object_title;&lt;br /&gt;
                SQLUpdate('devices', $rec);&lt;br /&gt;
&lt;br /&gt;
                // Добавляем новый объект еще раз (похоже, дублирование кода)&lt;br /&gt;
                $object_id = addClassObject($type_details['CLASS'], $rec['LINKED_OBJECT'], 'sdevice' . $rec['ID']);&lt;br /&gt;
                // Получаем ID класса&lt;br /&gt;
                $class_id = current(SQLSelectOne(&amp;quot;SELECT ID FROM classes WHERE TITLE LIKE '&amp;quot; . DBSafe($type_details['CLASS']) . &amp;quot;'&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
                // Получаем запись о новом объекте&lt;br /&gt;
                $object_rec = SQLSelectOne(&amp;quot;SELECT * FROM objects WHERE ID=&amp;quot; . $object_id);&lt;br /&gt;
                // Обновляем описание и локацие объекта&lt;br /&gt;
                $object_rec['DESCRIPTION'] = $rec['TITLE'];&lt;br /&gt;
                $object_rec['LOCATION_ID'] = $rec['LOCATION_ID'];&lt;br /&gt;
                SQLUpdate('objects', $object_rec);&lt;br /&gt;
&lt;br /&gt;
                // Если название комнаты предоставлено&lt;br /&gt;
                if ($location_title) {&lt;br /&gt;
                    // Устанавливаем глобальную переменную для связи объекта с комнатой&lt;br /&gt;
                    setGlobal($object_rec['TITLE'] . '.linkedRoom', $location_title);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                // Устанавливаем минимальное и максимальное значения для датчиков температуры&lt;br /&gt;
                if ($rec['TYPE'] == 'sensor_temp') {&lt;br /&gt;
                    setGlobal($object_rec['TITLE'] . '.minValue', 16);&lt;br /&gt;
                    setGlobal($object_rec['TITLE'] . '.maxValue', 25);&lt;br /&gt;
                }&lt;br /&gt;
                // Устанавливаем минимальное и максимальное значения для датчиков влажности&lt;br /&gt;
                if ($rec['TYPE'] == 'sensor_humidity') {&lt;br /&gt;
                    setGlobal($object_rec['TITLE'] . '.minValue', 30);&lt;br /&gt;
                    setGlobal($object_rec['TITLE'] . '.maxValue', 60);&lt;br /&gt;
                }&lt;br /&gt;
                // Увеличиваем счетчик добавленных устройств&lt;br /&gt;
                $devices_added++;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // Добавляем задачу в очередь синхронизации устройств&lt;br /&gt;
    addToOperationsQueue('connect_sync_devices', 'required');&lt;br /&gt;
    // Выполняем синхронизацию с Homebridge&lt;br /&gt;
    $this-&amp;gt;homebridgeSync();&lt;br /&gt;
&lt;br /&gt;
    // Перенаправляем пользователя на главную страницу&lt;br /&gt;
    $this-&amp;gt;redirect(&amp;quot;?&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Получаем список всех локаций&lt;br /&gt;
$locations = SQLSelect(&amp;quot;SELECT * FROM locations ORDER BY TITLE&amp;quot;);&lt;br /&gt;
$total = count($locations);&lt;br /&gt;
// Проходим по всем локациям&lt;br /&gt;
for($i=0;$i&amp;lt;$total;$i++) {&lt;br /&gt;
    // Получаем список устройств для каждой комнаты&lt;br /&gt;
    $devices=SQLSelect(&amp;quot;SELECT * FROM devices WHERE LOCATION_ID=&amp;quot;.$locations[$i]['ID'].&amp;quot; ORDER BY TITLE&amp;quot;);&lt;br /&gt;
    // Добавляем список устройств в массив локаций&lt;br /&gt;
    $locations[$i]['DEVICES']=$devices;&lt;br /&gt;
}&lt;br /&gt;
$out['LOCATIONS'] = $locations;&lt;br /&gt;
&lt;br /&gt;
// Получаем список всех типов устройств&lt;br /&gt;
$types = array();&lt;br /&gt;
foreach ($this-&amp;gt;device_types as $k =&amp;gt; $v) {&lt;br /&gt;
    // Если тип устройства имеет название&lt;br /&gt;
    if ($v['TITLE']) {&lt;br /&gt;
        // Добавляем тип устройства в массив&lt;br /&gt;
        $types[] = array('NAME' =&amp;gt; $k, 'TITLE' =&amp;gt; $v['TITLE']);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Сортируем типы устройств по названию&lt;br /&gt;
usort($types, function ($a, $b) {&lt;br /&gt;
    return strcmp($a['TITLE'], $b['TITLE']);&lt;br /&gt;
});&lt;br /&gt;
$out['TYPES'] = $types;&lt;br /&gt;
&lt;br /&gt;
// Формируем HTML-код для выпадающего списка типов устройств&lt;br /&gt;
$types_options='&amp;lt;option value=&amp;quot;&amp;quot;&amp;gt;'.LANG_TYPE;&lt;br /&gt;
foreach($out['TYPES'] as $type) {&lt;br /&gt;
    $types_options.='&amp;lt;option value=&amp;quot;'.$type['NAME'].'&amp;quot;&amp;gt;'.$type['TITLE'];&lt;br /&gt;
}&lt;br /&gt;
$out['TYPES_OPTIONS']=$types_options;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Elmax</name></author>
	</entry>
	<entry>
		<id>https://mdminfo.ru/index.php?title=Devices_edit_inc_php&amp;diff=2082</id>
		<title>Devices edit inc php</title>
		<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=Devices_edit_inc_php&amp;diff=2082"/>
		<updated>2024-04-02T09:31:36Z</updated>

		<summary type="html">&lt;p&gt;Elmax: Elmax переименовал страницу Devices edit inc php в Modules/devices/devices edit inc php: Пропустил при создании путь Modules/devices/&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#перенаправление [[Modules/devices/devices edit inc php]]&lt;/div&gt;</summary>
		<author><name>Elmax</name></author>
	</entry>
	<entry>
		<id>https://mdminfo.ru/index.php?title=Modules/devices/devices_edit_inc_php&amp;diff=2081</id>
		<title>Modules/devices/devices edit inc php</title>
		<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=Modules/devices/devices_edit_inc_php&amp;diff=2081"/>
		<updated>2024-04-02T09:31:36Z</updated>

		<summary type="html">&lt;p&gt;Elmax: Elmax переименовал страницу Devices edit inc php в Modules/devices/devices edit inc php: Пропустил при создании путь Modules/devices/&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Modules/devices/devices_edit_inc_php | devices_edit.inc.php]]&lt;br /&gt;
&lt;br /&gt;
[[Папки и файлы|ᐂ В корневой раздел]]  [[Modules/devices|ᐃ В директорию расположения файла]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * @version 0.1 (wizard)&lt;br /&gt;
 */&lt;br /&gt;
// Проверяет, является ли текущий владелец панелью, и устанавливает флаг панели управления.&lt;br /&gt;
if ($this-&amp;gt;owner-&amp;gt;name == 'panel') {&lt;br /&gt;
    $out['CONTROLPANEL'] = 1;&lt;br /&gt;
}&lt;br /&gt;
// Определяет имя таблицы для устройств и получает запись устройства по ID или по связанному объекту.&lt;br /&gt;
$table_name = 'devices';&lt;br /&gt;
$rec = SQLSelectOne(&amp;quot;SELECT * FROM $table_name WHERE ID='$id'&amp;quot;);&lt;br /&gt;
if (!$id &amp;amp;&amp;amp; gr('linked_object')) {&lt;br /&gt;
    $rec = SQLSelectOne(&amp;quot;SELECT * FROM $table_name WHERE LINKED_OBJECT='&amp;quot; . DBSafe(gr('linked_object')) . &amp;quot;'&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
// Устанавливает флаг отсутствия навигации, если владелец имеет флаг печати.&lt;br /&gt;
if ($this-&amp;gt;owner-&amp;gt;print == 1) {&lt;br /&gt;
    $out['NO_NAV'] = 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Выполняет дополнительные действия, если связанный объект устройства не пуст.&lt;br /&gt;
if (isset($rec['LINKED_OBJECT']) &amp;amp;&amp;amp; $rec['LINKED_OBJECT'] != '') {&lt;br /&gt;
    // Получаем запись объекта по названию связанного объекта&lt;br /&gt;
    $object_rec = SQLSelectOne(&amp;quot;SELECT ID FROM objects WHERE TITLE='&amp;quot; . $rec['LINKED_OBJECT'] . &amp;quot;'&amp;quot;);&lt;br /&gt;
    // Если ID объекта существует, выполняем дополнительные действия&lt;br /&gt;
    if ($object_rec['ID']) {&lt;br /&gt;
        // Получаем свойства объекта, связанные с модулями&lt;br /&gt;
        $properties = SQLSelect(&amp;quot;SELECT pvalues.*, properties.TITLE as PROPERTY FROM pvalues LEFT JOIN properties ON properties.ID=pvalues.PROPERTY_ID WHERE pvalues.OBJECT_ID=&amp;quot; . $object_rec['ID'] . &amp;quot; AND pvalues.LINKED_MODULES!='' ORDER BY UPDATED DESC&amp;quot;);&lt;br /&gt;
        // Если свойства найдены, выполняем дополнительные действия&lt;br /&gt;
        $total = count($properties);&lt;br /&gt;
        if ($total &amp;gt; 0) {&lt;br /&gt;
            for ($i = 0; $i &amp;lt; $total; $i++) {&lt;br /&gt;
                // Разделяем связанные модули по запятым&lt;br /&gt;
                $linked_modules = explode(',', $properties[$i]['LINKED_MODULES']);&lt;br /&gt;
                // Экранируем специальные символы в значении свойства&lt;br /&gt;
                $properties[$i]['VALUE'] = htmlspecialchars($properties[$i]['VALUE']);&lt;br /&gt;
                // Создаем массив связанных модулей&lt;br /&gt;
                $properties[$i]['LINKED_MODULES'] = array();&lt;br /&gt;
                foreach ($linked_modules as $module) {&lt;br /&gt;
                    // Добавляем каждый модуль в массив связанных модулей&lt;br /&gt;
                    $properties[$i]['LINKED_MODULES'][] = array('MODULE' =&amp;gt; $module, 'PROPERTY' =&amp;gt; $properties[$i]['PROPERTY'], 'OBJECT' =&amp;gt; $rec['LINKED_OBJECT']);&lt;br /&gt;
                }&lt;br /&gt;
                // Добавляем свойства в выходной массив&lt;br /&gt;
                $out['LINKED_PROPERTIES'] = $properties;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Инициализирует массив для отображения методов и получает все методы для указанного типа устройства.&lt;br /&gt;
$show_methods = array();&lt;br /&gt;
if ($rec['TYPE'] != '') {&lt;br /&gt;
    $methods = $this-&amp;gt;getAllMethods($rec['TYPE']);&lt;br /&gt;
    // Если методы представлены в виде массива, выполняем дополнительные действия&lt;br /&gt;
    if (is_array($methods)) {&lt;br /&gt;
        foreach ($methods as $k =&amp;gt; $v) {&lt;br /&gt;
            // Если метод должен быть показан в конфигурации, добавляем его в массив для отображения&lt;br /&gt;
            if (isset($v['_CONFIG_SHOW']) &amp;amp;&amp;amp; $v['_CONFIG_SHOW']) {&lt;br /&gt;
                $v['NAME'] = $k;&lt;br /&gt;
                $show_methods[] = $v;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
// Если есть методы для отображения, сортирует их и добавляет в выходной массив.&lt;br /&gt;
if (isset($show_methods[0])) {&lt;br /&gt;
    usort($show_methods, function ($a, $b) {&lt;br /&gt;
        if ($a['_CONFIG_SHOW'] == $b['_CONFIG_SHOW']) {&lt;br /&gt;
            return 0;&lt;br /&gt;
        }&lt;br /&gt;
        return ($a['_CONFIG_SHOW'] &amp;gt; $b['_CONFIG_SHOW']) ? -1 : 1;&lt;br /&gt;
    });&lt;br /&gt;
    $out['SHOW_METHODS'] = $show_methods;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Добавляет сообщения об успехе или ошибке в выходной массив.&lt;br /&gt;
if (gr('ok_msg')) {&lt;br /&gt;
    $out['OK_MSG'] = gr('ok_msg');&lt;br /&gt;
}&lt;br /&gt;
if (gr('err_msg')) {&lt;br /&gt;
    $out['ERR_MSG'] = gr('err_msg');&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Выполняет дополнительные действия, если текущая вкладка - 'logic'.&lt;br /&gt;
if ($this-&amp;gt;tab == 'logic') {&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    // Получаем имя метода из запроса или устанавливаем его как 'logicAction', если не указано&lt;br /&gt;
    $method_name = gr('method');&lt;br /&gt;
&lt;br /&gt;
    // Получаем объект по связанному объекту устройства&lt;br /&gt;
    $object = getObject($rec['LINKED_OBJECT']);&lt;br /&gt;
&lt;br /&gt;
    // Получаем все методы родительского класса объекта&lt;br /&gt;
    $methods = $object-&amp;gt;getParentMethods($object-&amp;gt;class_id, '', 1);&lt;br /&gt;
    // Если есть методы, выполняем дополнительные действия&lt;br /&gt;
    $total = count($methods);&lt;br /&gt;
    for ($i = 0; $i &amp;lt; $total; $i++) {&lt;br /&gt;
        // Если есть описание метода, добавляем его к названию метода&lt;br /&gt;
        if ($methods[$i]['DESCRIPTION'] != '') {&lt;br /&gt;
            $methods[$i]['DESCRIPTION'] = $methods[$i]['TITLE'] . ' - ' . $methods[$i]['DESCRIPTION'];&lt;br /&gt;
        } else {&lt;br /&gt;
            $methods[$i]['DESCRIPTION'] = $methods[$i]['TITLE'];&lt;br /&gt;
        }&lt;br /&gt;
        // Если связанный объект устройства существует, выполняем дополнительные действия&lt;br /&gt;
        if (isset($object_rec['ID'])) {&lt;br /&gt;
            // Получаем метод объекта по названию метода и ID объекта&lt;br /&gt;
            $object_method = SQLSelectOne(&amp;quot;SELECT * FROM methods WHERE TITLE='&amp;quot; . $methods[$i]['TITLE'] . &amp;quot;' AND OBJECT_ID=&amp;quot; . $object_rec['ID'] . &amp;quot; ORDER BY TITLE&amp;quot;);&lt;br /&gt;
            // Если метод объекта существует, выполняем дополнительные действия&lt;br /&gt;
            if (isset($object_method['ID'])) {&lt;br /&gt;
                // Добавляем символ '(*)' к описанию метода&lt;br /&gt;
                $methods[$i]['DESCRIPTION'] .= ' (*)';&lt;br /&gt;
                // Если имя метода не установлено, устанавливаем его как название метода объекта&lt;br /&gt;
                if (!$method_name) {&lt;br /&gt;
                    $method_name = $object_method['TITLE'];&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Если имя метода не установлено, устанавливаем его как 'logicAction'&lt;br /&gt;
    if (!$method_name) {&lt;br /&gt;
        $method_name = 'logicAction';&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    $out['METHOD'] = $method_name;&lt;br /&gt;
    // Добавляем методы в выходной массив&lt;br /&gt;
    $out['METHODS'] = $methods;&lt;br /&gt;
&lt;br /&gt;
    // Получаем ID метода по имени метода, ID класса объекта и ID объекта&lt;br /&gt;
    $method_id = $object-&amp;gt;getMethodByName($method_name, $object-&amp;gt;class_id, $object-&amp;gt;id);&lt;br /&gt;
&lt;br /&gt;
    // Получаем запись метода по ID&lt;br /&gt;
    $method_rec = SQLSelectOne(&amp;quot;SELECT * FROM methods WHERE ID=&amp;quot; . (int)$method_id);&lt;br /&gt;
&lt;br /&gt;
    // Если ID объекта метода не совпадает с ID объекта устройства, создаем новую запись метода&lt;br /&gt;
    if ($method_rec['OBJECT_ID'] != $object-&amp;gt;id) {&lt;br /&gt;
        $method_rec['CODE'] = '';&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Если определены настройки редактора кода, добавляем их в выходной массив&lt;br /&gt;
    if (defined('SETTINGS_CODEEDITOR_TURNONSETTINGS')) {&lt;br /&gt;
        $out['SETTINGS_CODEEDITOR_TURNONSETTINGS'] = SETTINGS_CODEEDITOR_TURNONSETTINGS;&lt;br /&gt;
        $out['SETTINGS_CODEEDITOR_UPTOLINE'] = SETTINGS_CODEEDITOR_UPTOLINE;&lt;br /&gt;
        $out['SETTINGS_CODEEDITOR_SHOWERROR'] = SETTINGS_CODEEDITOR_SHOWERROR;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Если режим работы - 'update', выполняем дополнительные действия&lt;br /&gt;
    if ($this-&amp;gt;mode == 'update') {&lt;br /&gt;
&lt;br /&gt;
        if ($method_rec['OBJECT_ID'] != $object-&amp;gt;id) {&lt;br /&gt;
            $method_rec = array();&lt;br /&gt;
            $method_rec['OBJECT_ID'] = $object-&amp;gt;id;&lt;br /&gt;
            $method_rec['TITLE'] = $method_name;&lt;br /&gt;
            $method_rec['CALL_PARENT'] = 1;&lt;br /&gt;
            $method_rec['ID'] = SQLInsert('methods', $method_rec);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        $code = gr('code');&lt;br /&gt;
&lt;br /&gt;
        // Сохраняем старый код метода&lt;br /&gt;
        $old_code = $method_rec['CODE'];&lt;br /&gt;
        // Обновляем код метода новым значением&lt;br /&gt;
        $method_rec['CODE'] = $code;&lt;br /&gt;
&lt;br /&gt;
        $ok = 1;&lt;br /&gt;
        // Если код метода не пуст, проверяем его на наличие ошибок&lt;br /&gt;
        if ($method_rec['CODE'] != '') {&lt;br /&gt;
            $errors = php_syntax_error($method_rec['CODE']);&lt;br /&gt;
&lt;br /&gt;
            // Если есть ошибки, обрабатываем их и устанавливаем флаг ошибки&lt;br /&gt;
            if ($errors) {&lt;br /&gt;
                $out['ERR_LINE'] = preg_replace('/[^0-9]/', '', substr(stristr($errors, 'php on line '), 0, 18)) - 2;&lt;br /&gt;
                $out['ERR_CODE'] = 1;&lt;br /&gt;
                $errorStr = explode('Parse error: ', htmlspecialchars(strip_tags(nl2br($errors))));&lt;br /&gt;
                $errorStr = explode('Errors parsing', $errorStr[1]);&lt;br /&gt;
                $errorStr = explode(' in ', $errorStr[0]);&lt;br /&gt;
                //var_dump($errorStr);&lt;br /&gt;
                $out['ERRORS'] = $errorStr[0];&lt;br /&gt;
                $out['ERR_FULL'] = $errorStr[0] . ' ' . $errorStr[1];&lt;br /&gt;
                $out['ERR_OLD_CODE'] = $old_code;&lt;br /&gt;
                $ok = 0;&lt;br /&gt;
            }&lt;br /&gt;
        } else {&lt;br /&gt;
            if ($method_rec['ID']) {&lt;br /&gt;
                SQLExec(&amp;quot;DELETE FROM methods WHERE ID=&amp;quot; . $method_rec['ID']);&lt;br /&gt;
            }&lt;br /&gt;
            $this-&amp;gt;redirect(&amp;quot;?id=&amp;quot; . $rec['ID'] . &amp;quot;&amp;amp;view_mode=&amp;quot; . $this-&amp;gt;view_mode . &amp;quot;&amp;amp;tab=&amp;quot; . $this-&amp;gt;tab . &amp;quot;&amp;amp;method=&amp;quot; . urlencode($method_rec['TITLE']));&lt;br /&gt;
        }&lt;br /&gt;
        // Если нет ошибок, обновляем запись метода в базе данных&lt;br /&gt;
        if ($ok) {&lt;br /&gt;
            SQLUpdate('methods', $method_rec);&lt;br /&gt;
            $out['OK'] = 1;&lt;br /&gt;
        } else {&lt;br /&gt;
            $out['ERR'] = 1;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    // Добавляем код метода в выходной массив&lt;br /&gt;
    if (isset($method_rec['CODE'])) {&lt;br /&gt;
        $out['CODE'] = htmlspecialchars($method_rec['CODE']);&lt;br /&gt;
    }&lt;br /&gt;
    // Добавляем ID объекта в выходной массив&lt;br /&gt;
    $out['OBJECT_ID'] = $method_rec['OBJECT_ID'];&lt;br /&gt;
&lt;br /&gt;
    // Получаем ID родительского метода по имени метода, ID класса объекта и ID объекта&lt;br /&gt;
    $parent_method_id = $object-&amp;gt;getMethodByName($method_name, $object-&amp;gt;class_id, 0);&lt;br /&gt;
    // Если есть ID родительского метода, добавляем его в выходной массив&lt;br /&gt;
    if ($parent_method_id) {&lt;br /&gt;
        $out['METHOD_ID'] = $parent_method_id;&lt;br /&gt;
    } else {&lt;br /&gt;
        // Иначе добавляем ID текущего метода в выходной массив&lt;br /&gt;
        $out['METHOD_ID'] = $method_rec['ID'];&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Если текущая вкладка - 'settings', выполняем дополнительные действия&lt;br /&gt;
if ($this-&amp;gt;tab == 'settings') {&lt;br /&gt;
    // Получаем все свойства для типа устройства&lt;br /&gt;
    $properties = $this-&amp;gt;getAllProperties($rec['TYPE']);&lt;br /&gt;
    //print_r($properties);exit; //debug&lt;br /&gt;
    // Если связанный объект устройства существует и свойства представлены в виде массива, выполняем дополнительные действия&lt;br /&gt;
    if ($rec['LINKED_OBJECT'] &amp;amp;&amp;amp; is_array($properties)) {&lt;br /&gt;
        $res_properties = array();&lt;br /&gt;
        $onchanges = array();&lt;br /&gt;
        $apply_others = gr('apply_others');&lt;br /&gt;
        foreach ($properties as $k =&amp;gt; $v) {&lt;br /&gt;
            // Если тип конфигурации свойства не пуст, выполняем дополнительные действия&lt;br /&gt;
            if (isset($v['_CONFIG_TYPE'])) {&lt;br /&gt;
                // Если режим работы - 'update', выполняем дополнительные действия&lt;br /&gt;
                if ($this-&amp;gt;mode == 'update') {&lt;br /&gt;
                    global ${$k . '_value'};&lt;br /&gt;
                    // Если значение свойства установлено, выполняем дополнительные действия&lt;br /&gt;
                    if (isset(${$k . '_value'})) {&lt;br /&gt;
                        // Если значение свойства - массив, преобразуем его в строку&lt;br /&gt;
                        if (is_array(${$k . '_value'})) {&lt;br /&gt;
                            $value = implode(',', ${$k . '_value'});&lt;br /&gt;
                        } else {&lt;br /&gt;
                            // Иначе очищаем пробелы в начале и конце строки&lt;br /&gt;
                            $value = trim(${$k . '_value'});&lt;br /&gt;
                        }&lt;br /&gt;
                        // Устанавливаем глобальное значение свойства&lt;br /&gt;
                        setGlobal($rec['LINKED_OBJECT'] . '.' . $k, $value);&lt;br /&gt;
                        // Если есть другие устройства для применения, выполняем дополнительные действия&lt;br /&gt;
                        if (is_array($apply_others)) {&lt;br /&gt;
                            foreach ($apply_others as $other_dev) {&lt;br /&gt;
                                // Устанавливаем глобальное значение свойства для других устройств&lt;br /&gt;
                                setGlobal($other_dev . '.' . $k, $value);&lt;br /&gt;
                                // Если есть ограничения доступа для свойства, выполняем дополнительные действия&lt;br /&gt;
                                if ($v['_CONFIG_RESTRICTIONS'] &amp;amp;&amp;amp; checkAccessDefined('prop_' . $k, $rec['ID'])) {&lt;br /&gt;
                                    $other_obj = getObject($other_dev);&lt;br /&gt;
                                    // Если объект существует и имеет ID устройства, копируем права доступа&lt;br /&gt;
                                    if (is_object($other_obj) &amp;amp;&amp;amp; $other_obj-&amp;gt;device_id) {&lt;br /&gt;
                                        checkAccessCopy('prop_' . $k, $rec['ID'], $other_obj-&amp;gt;device_id);&lt;br /&gt;
                                    }&lt;br /&gt;
                                }&lt;br /&gt;
                            }&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                    // Устанавливаем флаг успешного обновления&lt;br /&gt;
                    $out['OK'] = 1;&lt;br /&gt;
                    // Если есть метод, который должен быть вызван при изменении свойства, добавляем его в массив&lt;br /&gt;
                    if (isset($v['ONCHANGE']) &amp;amp;&amp;amp; $v['ONCHANGE'] != '') {&lt;br /&gt;
                        $onchanges[$v['ONCHANGE']] = 1;&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
                // Добавляем имя свойства в массив свойств&lt;br /&gt;
                $v['NAME'] = $k;&lt;br /&gt;
                // Если есть справочная информация для свойства, добавляем ее в массив свойств&lt;br /&gt;
                if (isset($v['_CONFIG_HELP'])) $v['CONFIG_HELP'] = $v['_CONFIG_HELP'];&lt;br /&gt;
                // Добавляем тип конфигурации в массив свойств&lt;br /&gt;
                $v['CONFIG_TYPE'] = $v['_CONFIG_TYPE'];&lt;br /&gt;
                // Получаем глобальное значение свойства&lt;br /&gt;
                $v['VALUE'] = getGlobal($rec['LINKED_OBJECT'] . '.' . $k);&lt;br /&gt;
                // Если тип конфигурации - 'select' или 'multi_select', выполняем дополнительные действия&lt;br /&gt;
                if ($v['CONFIG_TYPE'] == 'select' || $v['CONFIG_TYPE'] == 'multi_select') {&lt;br /&gt;
                    // Получаем выбранные опции из глобального значения свойства&lt;br /&gt;
                    $selected_options = explode(',', gg($rec['LINKED_OBJECT'] . '.' . $k));&lt;br /&gt;
                    // Разделяем опции по запятым&lt;br /&gt;
                    $tmp = explode(',', $v['_CONFIG_OPTIONS']);&lt;br /&gt;
                    $total = count($tmp);&lt;br /&gt;
                    for ($i = 0; $i &amp;lt; $total; $i++) {&lt;br /&gt;
                        // Разделяем каждую опцию на значение и название&lt;br /&gt;
                        $data_s = explode('=', trim($tmp[$i]));&lt;br /&gt;
                        $value = $data_s[0];&lt;br /&gt;
                        if (isset($data_s[1])) {&lt;br /&gt;
                            $title = $data_s[1];&lt;br /&gt;
                        } else {&lt;br /&gt;
                            $title = $value;&lt;br /&gt;
                        }&lt;br /&gt;
                        // Создаем массив опции&lt;br /&gt;
                        $option = array('VALUE' =&amp;gt; $value, 'TITLE' =&amp;gt; $title);&lt;br /&gt;
                        // Если значение опции выбрано, устанавливаем флаг выбранной опции&lt;br /&gt;
                        if (in_array($value, $selected_options)) $option['SELECTED'] = 1;&lt;br /&gt;
                        // Добавляем опцию в массив свойств&lt;br /&gt;
                        $v['OPTIONS'][] = $option;&lt;br /&gt;
                    }&lt;br /&gt;
                } elseif ($v['CONFIG_TYPE'] == 'style_image') {&lt;br /&gt;
                    // Если тип конфигурации - 'style_image', выполняем дополнительные действия&lt;br /&gt;
                    include_once(DIR_MODULES . 'scenes/scenes.class.php');&lt;br /&gt;
                    $scene_class = new scenes();&lt;br /&gt;
                    // Получаем все типы сцен&lt;br /&gt;
                    $styles = $scene_class-&amp;gt;getAllTypes();&lt;br /&gt;
                    // Добавляем типы сцен в массив свойств&lt;br /&gt;
                    $v['FOLDERS'] = $styles;&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                // Если есть ограничения доступа для свойства и они определены, устанавливаем флаг установленных ограничений&lt;br /&gt;
                if (isset($v['_CONFIG_RESTRICTIONS']) &amp;amp;&amp;amp; $v['_CONFIG_RESTRICTIONS'] &amp;amp;&amp;amp; checkAccessDefined('prop_' . $v['NAME'], $rec['ID'])) {&lt;br /&gt;
                    $v['_CONFIG_RESTRICTIONS_SET'] = 1;&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                // Добавляем свойство в массив результатов&lt;br /&gt;
                $res_properties[] = $v;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        // Если режим работы - 'update', выполняем дополнительные действия&lt;br /&gt;
        if ($this-&amp;gt;mode == 'update') {&lt;br /&gt;
            // Вызываем методы, которые должны быть вызваны при изменении свойства&lt;br /&gt;
            foreach ($onchanges as $k =&amp;gt; $v) {&lt;br /&gt;
                callMethod($rec['LINKED_OBJECT'] . '.' . $k);&lt;br /&gt;
            }&lt;br /&gt;
            // Синхронизируем устройство с Homebridge&lt;br /&gt;
            $this-&amp;gt;homebridgeSync($rec['ID'], 1);&lt;br /&gt;
        }&lt;br /&gt;
        //print_r($res_properties);exit; // debug&lt;br /&gt;
        // Добавляем свойства в выходной массив&lt;br /&gt;
        $out['PROPERTIES'] = $res_properties;&lt;br /&gt;
    }&lt;br /&gt;
    //print_r($res_properties);exit; // debug&lt;br /&gt;
    // Получаем все группы для типа устройства&lt;br /&gt;
    $groups = $this-&amp;gt;getAllGroups($rec['TYPE']);&lt;br /&gt;
&lt;br /&gt;
    // Инициализируем глобальную переменную для применения групп&lt;br /&gt;
    global $apply_groups;&lt;br /&gt;
    // Если режим работы - 'update', устанавливаем массив применения групп&lt;br /&gt;
    if ($this-&amp;gt;mode == 'update') {&lt;br /&gt;
        if (!is_array($apply_groups)) {&lt;br /&gt;
            $apply_groups = array();&lt;br /&gt;
        }&lt;br /&gt;
    } else {&lt;br /&gt;
        $apply_groups = array();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Получаем ID объекта&lt;br /&gt;
    $total = count($groups);&lt;br /&gt;
&lt;br /&gt;
    $object_id = gg($rec['LINKED_OBJECT'] . '.object_id');&lt;br /&gt;
&lt;br /&gt;
    // Если есть группы, выполняем дополнительные действия&lt;br /&gt;
    if ($total &amp;gt; 0) {&lt;br /&gt;
        for ($i = 0; $i &amp;lt; $total; $i++) {&lt;br /&gt;
            // Формируем название свойства группы&lt;br /&gt;
            $property_title = 'group' . $groups[$i]['SYS_NAME'];&lt;br /&gt;
            // Если режим работы - 'update', выполняем дополнительные действия&lt;br /&gt;
            if ($this-&amp;gt;mode == 'update') {&lt;br /&gt;
                // Если группа выбрана, устанавливаем значение свойства группы&lt;br /&gt;
                if (in_array($groups[$i]['SYS_NAME'], $apply_groups)) {&lt;br /&gt;
                    sg($rec['LINKED_OBJECT'] . '.' . $property_title, 1);&lt;br /&gt;
                } elseif (gg($rec['LINKED_OBJECT'] . '.' . $property_title)) {&lt;br /&gt;
                    // Если группа не выбрана, сбрасываем значение свойства группы&lt;br /&gt;
                    sg($rec['LINKED_OBJECT'] . '.' . $property_title, 0);&lt;br /&gt;
                    // Получаем ID свойства группы&lt;br /&gt;
                    $property_id = current(SQLSelectOne(&amp;quot;SELECT ID FROM properties WHERE OBJECT_ID=&amp;quot; . (int)$object_id . &amp;quot; AND TITLE='&amp;quot; . DBSafe($property_title) . &amp;quot;'&amp;quot;));&lt;br /&gt;
                    // Если ID свойства группы существует, удаляем свойство группы&lt;br /&gt;
                    if ($property_id) {&lt;br /&gt;
                        SQLExec(&amp;quot;DELETE FROM pvalues WHERE PROPERTY_ID=&amp;quot; . $property_id . &amp;quot; AND OBJECT_ID=&amp;quot; . $object_id);&lt;br /&gt;
                        SQLExec(&amp;quot;DELETE FROM properties WHERE ID=&amp;quot; . $property_id);&lt;br /&gt;
                    }&lt;br /&gt;
                    //echo $property_id;exit;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            // Если значение свойства группы установлено, устанавливаем флаг выбранной группы&lt;br /&gt;
            if (gg($rec['LINKED_OBJECT'] . '.' . $property_title)) {&lt;br /&gt;
                $groups[$i]['SELECTED'] = 1;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        // Добавляем группы в выходной массив&lt;br /&gt;
        $out['GROUPS'] = $groups;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Если текущая вкладка - 'interface', выполняем дополнительные действия&lt;br /&gt;
if ($this-&amp;gt;tab == 'interface') {&lt;br /&gt;
    // Если режим работы - 'update', выполняем дополнительные действия&lt;br /&gt;
    if ($this-&amp;gt;mode == 'update') {&lt;br /&gt;
        global $add_menu;&lt;br /&gt;
        global $add_menu_id;&lt;br /&gt;
&lt;br /&gt;
        global $add_scene;&lt;br /&gt;
        global $add_scene_id;&lt;br /&gt;
&lt;br /&gt;
        // Если не указана сцена, устанавливаем ID сцены в 0&lt;br /&gt;
        if (!$add_scene) {&lt;br /&gt;
            $add_scene_id = 0;&lt;br /&gt;
        }&lt;br /&gt;
        // Если не указан ID сцены, устанавливаем сцену в 0&lt;br /&gt;
        if (!$add_scene_id) {&lt;br /&gt;
            $add_scene = 0;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // Добавляем значения в выходной массив&lt;br /&gt;
        $out['ADD_MENU'] = $add_menu;&lt;br /&gt;
        $out['ADD_MENU_ID'] = $add_menu_id;&lt;br /&gt;
        $out['ADD_SCENE'] = $add_scene;&lt;br /&gt;
        $out['ADD_SCENE_ID'] = $add_scene_id;&lt;br /&gt;
&lt;br /&gt;
        // Если указано добавление в меню, добавляем устройство в меню&lt;br /&gt;
        if ($out['ADD_MENU']) {&lt;br /&gt;
            $this-&amp;gt;addDeviceToMenu($rec['ID'], $add_menu_id);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // Если указано добавление в сцену и ID сцены указан, добавляем устройство в сцену&lt;br /&gt;
        if ($out['ADD_SCENE'] &amp;amp;&amp;amp; $out['ADD_SCENE_ID']) {&lt;br /&gt;
            $this-&amp;gt;addDeviceToScene($rec['ID'], $add_scene_id);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // Устанавливаем флаг успешного обновления&lt;br /&gt;
        $out['OK'] = 1;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Получаем все сцены&lt;br /&gt;
    $out['SCENES'] = SQLSelect(&amp;quot;SELECT ID,TITLE FROM scenes ORDER BY TITLE&amp;quot;);&lt;br /&gt;
    // Получаем все элементы меню&lt;br /&gt;
    $menu_items = SQLSelect(&amp;quot;SELECT ID, TITLE FROM commands ORDER BY PARENT_ID,TITLE&amp;quot;);&lt;br /&gt;
    // Инициализируем массив для элементов меню&lt;br /&gt;
    $res_items = array();&lt;br /&gt;
    // Получаем количество элементов меню&lt;br /&gt;
    $total = count($menu_items);&lt;br /&gt;
    for ($i = 0; $i &amp;lt; $total; $i++) {&lt;br /&gt;
        // Если у элемента меню есть подэлементы, добавляем его в массив&lt;br /&gt;
        $sub = SQLSelectOne(&amp;quot;SELECT ID FROM commands WHERE PARENT_ID=&amp;quot; . $menu_items[$i]['ID']);&lt;br /&gt;
        if (isset($sub['ID'])) {&lt;br /&gt;
            $res_items[] = $menu_items[$i];&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    // Добавляем элементы меню в выходной массив&lt;br /&gt;
    $out['MENU'] = $res_items;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Если текущая вкладка пуста, выполняем дополнительные действия&lt;br /&gt;
if ($this-&amp;gt;tab == '') {&lt;br /&gt;
&lt;br /&gt;
    // Инициализируем массив для приоритетов&lt;br /&gt;
    for ($i = 1; $i &amp;lt; 100; $i++) {&lt;br /&gt;
        $out['PRIORITIES'][] = array('VALUE' =&amp;gt; $i);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Получаем переменные&lt;br /&gt;
    $prefix = gr('prefix');&lt;br /&gt;
    $out['PREFIX'] = $prefix;&lt;br /&gt;
&lt;br /&gt;
    $source_table = gr('source_table');&lt;br /&gt;
    $out['SOURCE_TABLE'] = $source_table;&lt;br /&gt;
&lt;br /&gt;
    $source_table_id = gr('source_table_id');&lt;br /&gt;
    $out['SOURCE_TABLE_ID'] = $source_table_id;&lt;br /&gt;
&lt;br /&gt;
    $type = gr('type');&lt;br /&gt;
    $out['TYPE'] = $type;&lt;br /&gt;
&lt;br /&gt;
    $linked_object = gr('linked_object');&lt;br /&gt;
    // Если связанный объект не пуст, выполняем дополнительные действия&lt;br /&gt;
    if ($linked_object != '') {&lt;br /&gt;
        // Если объект не существует, очищаем связанный объект&lt;br /&gt;
        if (!getObject($linked_object)) {&lt;br /&gt;
            $linked_object = '';&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    // Добавляем связанный объект в выходной массив&lt;br /&gt;
    $out['LINKED_OBJECT'] = trim($linked_object);&lt;br /&gt;
    // Если связанный объект существует и ID устройства не установлен, выполняем дополнительные действия&lt;br /&gt;
    if ($out['LINKED_OBJECT'] &amp;amp;&amp;amp; !$rec['ID']) {&lt;br /&gt;
        // Получаем запись устройства по связанному объекту&lt;br /&gt;
        $old_rec = SQLSelectOne(&amp;quot;SELECT * FROM devices WHERE LINKED_OBJECT LIKE '&amp;quot; . DBSafe($out['LINKED_OBJECT']) . &amp;quot;'&amp;quot;);&lt;br /&gt;
        // Если запись устройства существует, обновляем текущую запись устройства&lt;br /&gt;
        if ($old_rec['ID']) {&lt;br /&gt;
            $rec = $old_rec;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    // Получаем глобальную переменную для добавления заголовка&lt;br /&gt;
    global $add_title;&lt;br /&gt;
    // Если заголовок указан, добавляем его в выходной массив&lt;br /&gt;
    if ($add_title) {&lt;br /&gt;
        $out['TITLE'] = $add_title;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    // Если указана таблица источника и ID устройства не установлен, выполняем дополнительные действия&lt;br /&gt;
    if ($out['SOURCE_TABLE'] &amp;amp;&amp;amp; !$rec['ID']) {&lt;br /&gt;
        // Формируем запрос для выбора устройства        &lt;br /&gt;
        $qry_devices = 1;&lt;br /&gt;
        // Если тип устройства установлен, добавляем условие выборки по типу устройства&lt;br /&gt;
        if ($out['TYPE']) {&lt;br /&gt;
            $qry_devices .= &amp;quot; AND devices.TYPE='&amp;quot; . DBSafe($out['TYPE']) . &amp;quot;'&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
        // Выполняем запрос к базе данных для получения списка существующих устройств&lt;br /&gt;
        $existing_devices = SQLSelect(&amp;quot;SELECT ID, TITLE FROM devices WHERE $qry_devices ORDER BY TITLE&amp;quot;);&lt;br /&gt;
        // Если в результате запроса найдено хотя бы одно устройство, выполняем дополнительные действия&lt;br /&gt;
        if ($existing_devices[0]['ID']) {&lt;br /&gt;
            // Устанавливаем флаг наличия существующих устройств&lt;br /&gt;
            $out['SELECT_EXISTING'] = 1;&lt;br /&gt;
            // Добавляем список существующих устройств в выходной массив&lt;br /&gt;
            $out['EXISTING_DEVICES'] = $existing_devices;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Если текущая вкладка - 'links', выполняем дополнительные действия&lt;br /&gt;
if ($this-&amp;gt;tab == 'links') {&lt;br /&gt;
    // Включаем файл с логикой работы с ссылками устройств&lt;br /&gt;
    include_once(dirname(__FILE__) . '/devices_links.inc.php');&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Если текущая вкладка - 'schedule', выполняем дополнительные действия&lt;br /&gt;
if ($this-&amp;gt;tab == 'schedule') {&lt;br /&gt;
    // Включаем файл с логикой работы с расписанием устройств&lt;br /&gt;
    include_once(dirname(__FILE__) . '/devices_schedule.inc.php');&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Если режим работы - 'update' и текущая вкладка пуста, выполняем дополнительные действия&lt;br /&gt;
if ($this-&amp;gt;mode == 'update' &amp;amp;&amp;amp; $this-&amp;gt;tab == '') {&lt;br /&gt;
    $added = 0;&lt;br /&gt;
    $ok = 1;&lt;br /&gt;
    // Получаем название устройства из запроса и удаляем пробелы в начале и конце строки&lt;br /&gt;
    $rec['TITLE'] = gr('title', 'trim');&lt;br /&gt;
    // Если название устройства пустое, устанавливаем флаг ошибки&lt;br /&gt;
    if ($rec['TITLE'] == '') {&lt;br /&gt;
        $out['ERR_TITLE'] = 1;&lt;br /&gt;
        $ok = 0;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Получаем альтернативные названия устройства из запроса и удаляем пробелы в начале и конце строки&lt;br /&gt;
    $rec['ALT_TITLES'] = gr('alt_titles', 'trim');&lt;br /&gt;
&lt;br /&gt;
    // Получаем тип устройства из глобальной переменной&lt;br /&gt;
    $rec['TYPE'] = $type;&lt;br /&gt;
    // Если тип устройства пустой, устанавливаем флаг ошибки&lt;br /&gt;
    if ($rec['TYPE'] == '') {&lt;br /&gt;
        $out['ERR_TYPE'] = 1;&lt;br /&gt;
        $ok = 0;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Получаем ID локации из глобальной переменной&lt;br /&gt;
    global $location_id;&lt;br /&gt;
    $rec['LOCATION_ID'] = (int)$location_id;&lt;br /&gt;
&lt;br /&gt;
    // Если устройство отмечено как избранное, устанавливаем приоритет избранного&lt;br /&gt;
    if (gr('favorite', 'int')) {&lt;br /&gt;
        $rec['FAVORITE'] = gr('favorite_priority', 'int');&lt;br /&gt;
    } else {&lt;br /&gt;
        $rec['FAVORITE'] = 0;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Устанавливаем флаг системного устройства&lt;br /&gt;
    $rec['SYSTEM_DEVICE'] = gr('system_device', 'int');&lt;br /&gt;
    // Устанавливаем флаг архивированного устройства&lt;br /&gt;
    $rec['ARCHIVED'] = gr('archived', 'int');&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    // Получаем связанный объект устройства из глобальной переменной&lt;br /&gt;
    $rec['LINKED_OBJECT'] = $linked_object;&lt;br /&gt;
    // Если связанный объект устройства не пуст и ID устройства не установлен, выполняем дополнительные действия&lt;br /&gt;
    if ($rec['LINKED_OBJECT'] &amp;amp;&amp;amp; !$rec['ID']) {&lt;br /&gt;
        // Проверяем, существует ли уже устройство с таким связанным объектом&lt;br /&gt;
        $other_device = SQLSelectOne(&amp;quot;SELECT ID FROM devices WHERE LINKED_OBJECT LIKE '&amp;quot; . DBSafe($rec['LINKED_OBJECT']) . &amp;quot;'&amp;quot;);&lt;br /&gt;
        // Если устройство с таким связанным объектом уже существует, устанавливаем флаг ошибки&lt;br /&gt;
        if ($other_device['ID']) {&lt;br /&gt;
            $out['ERR_LINKED_OBJECT'] = 1;&lt;br /&gt;
            $ok = 0;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Получаем флаг добавления нового объекта из глобальной переменной&lt;br /&gt;
    global $add_object;&lt;br /&gt;
    $out['ADD_OBJECT'] = $add_object;&lt;br /&gt;
    // Если флаг добавления нового объекта установлен, очищаем связанный объект устройства&lt;br /&gt;
    if ($add_object) {&lt;br /&gt;
        $rec['LINKED_OBJECT'] = '';&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Обновляем структуру устройств&lt;br /&gt;
    if ($ok) {&lt;br /&gt;
&lt;br /&gt;
        $this-&amp;gt;renderStructure();&lt;br /&gt;
&lt;br /&gt;
        // Если устройство уже существует, обновляем его запись&lt;br /&gt;
        if ($rec['ID']) {&lt;br /&gt;
            SQLUpdate($table_name, $rec); // update&lt;br /&gt;
        } else {&lt;br /&gt;
            $new_rec = 1;&lt;br /&gt;
            // Если устройство добавляется, создаем новую запись устройства&lt;br /&gt;
            $rec['ID'] = SQLInsert($table_name, $rec); // adding new record&lt;br /&gt;
            $added = 1;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // Если устройство связано с локацией, выполняем дополнительные действия&lt;br /&gt;
        if ($rec['LOCATION_ID']) {&lt;br /&gt;
            // Получаем название объекта локации&lt;br /&gt;
            $location_title = getRoomObjectByLocation($rec['LOCATION_ID'], 1);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // Устанавливаем флаг успешного обновления&lt;br /&gt;
        $out['OK'] = 1;&lt;br /&gt;
&lt;br /&gt;
        // Если тип устройства не пуст, выполняем дополнительные действия&lt;br /&gt;
        // Получаем детали типа устройства&lt;br /&gt;
        $type_details = $this-&amp;gt;getTypeDetails($rec['TYPE']);&lt;br /&gt;
        // Если связанный объект устройства не пуст и флаг добавления нового объекта установлен, выполняем дополнительные действия&lt;br /&gt;
        if (!$rec['LINKED_OBJECT'] &amp;amp;&amp;amp; $out['ADD_OBJECT']) {&lt;br /&gt;
            // Формируем новое название связанного объекта&lt;br /&gt;
            $prefix = $out['PREFIX'] . ucfirst($rec['TYPE']);&lt;br /&gt;
            $new_object_title = $prefix . $this-&amp;gt;getNewObjectIndex($type_details['CLASS'], $prefix);&lt;br /&gt;
            // Добавляем новый объект с новым названием&lt;br /&gt;
            $object_id = addClassObject($type_details['CLASS'], $new_object_title, 'sdevice' . $rec['ID']);&lt;br /&gt;
            // Устанавливаем новое название связанного объекта устройства&lt;br /&gt;
            $rec['LINKED_OBJECT'] = $new_object_title;&lt;br /&gt;
            // Обновляем запись устройства с новым названием связанного объекта&lt;br /&gt;
            SQLUpdate('devices', $rec);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // Добавляем объект устройства с текущим названием&lt;br /&gt;
        $object_id = addClassObject($type_details['CLASS'], $rec['LINKED_OBJECT'], 'sdevice' . $rec['ID']);&lt;br /&gt;
        // Получаем ID класса объекта&lt;br /&gt;
        $class_id = current(SQLSelectOne(&amp;quot;SELECT ID FROM classes WHERE TITLE LIKE '&amp;quot; . DBSafe($type_details['CLASS']) . &amp;quot;'&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        // Если класс объекта изменился, выполняем дополнительные действия&lt;br /&gt;
        $object_rec = SQLSelectOne(&amp;quot;SELECT * FROM objects WHERE ID=&amp;quot; . $object_id);&lt;br /&gt;
        // Устанавливаем описание объекта&lt;br /&gt;
        $object_rec['DESCRIPTION'] = $rec['TITLE'];&lt;br /&gt;
        // Устанавливаем ID локации объекта&lt;br /&gt;
        $object_rec['LOCATION_ID'] = $rec['LOCATION_ID'];&lt;br /&gt;
        $class_changed = 0;&lt;br /&gt;
&lt;br /&gt;
        $class_2b_changed = 1;&lt;br /&gt;
        $tmp_class_id = $object_rec['CLASS_ID'];&lt;br /&gt;
        // Проверяем, изменился ли класс объекта&lt;br /&gt;
        while (isset($tmp_class_id)) {&lt;br /&gt;
            if ($tmp_class_id == $class_id) {&lt;br /&gt;
                $class_2b_changed = 0;&lt;br /&gt;
                break;&lt;br /&gt;
            }&lt;br /&gt;
            $tmp = SQLSelectOne(&amp;quot;SELECT PARENT_ID FROM classes WHERE ID=&amp;quot; . (int)$tmp_class_id);&lt;br /&gt;
            $tmp_class_id = (int)$tmp['PARENT_ID'];&lt;br /&gt;
        }&lt;br /&gt;
        if ($class_2b_changed) {&lt;br /&gt;
            // Если класс объекта изменился, обновляем ID класса объекта&lt;br /&gt;
            $object_rec['CLASS_ID'] = $class_id;&lt;br /&gt;
            $class_changed = 1;&lt;br /&gt;
        }&lt;br /&gt;
        // Обновляем запись объекта в базе данных&lt;br /&gt;
        SQLUpdate('objects', $object_rec);&lt;br /&gt;
        // Если класс объекта изменился, вызываем функцию для обработки изменения класса&lt;br /&gt;
        if ($class_changed) {&lt;br /&gt;
            objectClassChanged($object_rec['ID']);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // Если устройство связано с локацией, выполняем дополнительные действия&lt;br /&gt;
        if ($location_title) {&lt;br /&gt;
            // Устанавливаем глобальное значение для связи устройства с локацией&lt;br /&gt;
            setGlobal($object_rec['TITLE'] . '.linkedRoom', $location_title);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // Если устройство добавлено и имеет свойства, устанавливаем значения свойств по умолчанию&lt;br /&gt;
        if ($added &amp;amp;&amp;amp; is_array($type_details['PROPERTIES'])) {&lt;br /&gt;
            foreach ($type_details['PROPERTIES'] as $property =&amp;gt; $details) {&lt;br /&gt;
                // Если для свойства определено значение по умолчанию, устанавливаем его&lt;br /&gt;
                if (isset($details['_CONFIG_DEFAULT'])) {&lt;br /&gt;
                    setGlobal($object_rec['TITLE'] . '.' . $property, $details['_CONFIG_DEFAULT']);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // Если устройство добавлено и имеет тип 'sensor_temp', устанавливаем значения свойств по умолчанию&lt;br /&gt;
        if ($added &amp;amp;&amp;amp; $rec['TYPE'] == 'sensor_temp') {&lt;br /&gt;
            setGlobal($object_rec['TITLE'] . '.minValue', 16);&lt;br /&gt;
            setGlobal($object_rec['TITLE'] . '.maxValue', 25);&lt;br /&gt;
        }&lt;br /&gt;
        // Если устройство добавлено и имеет тип 'sensor_humidity', устанавливаем значения свойств по умолчанию&lt;br /&gt;
        if ($added &amp;amp;&amp;amp; $rec['TYPE'] == 'sensor_humidity') {&lt;br /&gt;
            setGlobal($object_rec['TITLE'] . '.minValue', 30);&lt;br /&gt;
            setGlobal($object_rec['TITLE'] . '.maxValue', 60);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // Очищаем кэш данных&lt;br /&gt;
        clearCacheData();&lt;br /&gt;
        // Добавляем задачу в очередь для синхронизации устройств&lt;br /&gt;
        addToOperationsQueue('connect_sync_devices', 'required');&lt;br /&gt;
&lt;br /&gt;
        // Если устройство связано с таблицей источника, выполняем дополнительные действия&lt;br /&gt;
        if ($out['SOURCE_TABLE'] &amp;amp;&amp;amp; $out['SOURCE_TABLE_ID']) {&lt;br /&gt;
            // Добавляем устройство в таблицу источника&lt;br /&gt;
            $this-&amp;gt;addDeviceToSourceTable($out['SOURCE_TABLE'], $out['SOURCE_TABLE_ID'], $rec['ID']);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // Синхронизируем устройство с Homebridge&lt;br /&gt;
        $this-&amp;gt;homebridgeSync($rec['ID'], 1);&lt;br /&gt;
&lt;br /&gt;
        // Если устройство добавлено, перенаправляем на вкладку настроек устройства&lt;br /&gt;
        if ($added) {&lt;br /&gt;
            $this-&amp;gt;redirect(&amp;quot;?view_mode=edit_devices&amp;amp;id=&amp;quot; . $rec['ID'] . &amp;quot;&amp;amp;tab=settings&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    } else {&lt;br /&gt;
        $out['ERR'] = 1;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
if (is_array($rec)) {&lt;br /&gt;
    foreach ($rec as $k =&amp;gt; $v) {&lt;br /&gt;
        // Проверяем, что значение не является массивом и не пустое&lt;br /&gt;
        if ($v &amp;amp;&amp;amp; !is_array($v)) {&lt;br /&gt;
            // Экранируем специальные символы в значении свойства для предотвращения XSS атак&lt;br /&gt;
            $rec[$k] = htmlspecialchars($v);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
if (!isset($rec['LOCATION_ID'])) {&lt;br /&gt;
    // Получаем ID локации из глобальной переменной&lt;br /&gt;
    $rec['LOCATION_ID'] = gr('location_id', 'int');&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Выполняем функцию для обработки хэша&lt;br /&gt;
outHash($rec, $out);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Инициализируем массив для типов устройств&lt;br /&gt;
$types = array();&lt;br /&gt;
// Проходим по всем типам устройств&lt;br /&gt;
foreach ($this-&amp;gt;device_types as $k =&amp;gt; $v) {&lt;br /&gt;
    // Если у типа устройства есть название, добавляем его в массив типов&lt;br /&gt;
    if (isset($v['TITLE'])) {&lt;br /&gt;
        $types[] = array('NAME' =&amp;gt; $k, 'TITLE' =&amp;gt; $v['TITLE']);&lt;br /&gt;
    }&lt;br /&gt;
    // Если текущий тип устройства совпадает с типом устройства в записи и тип устройства не пуст, устанавливаем название типа устройства в выходной массив&lt;br /&gt;
    if (isset($rec['TYPE']) &amp;amp;&amp;amp; $k == $rec['TYPE'] &amp;amp;&amp;amp; $rec['TYPE'] != '') {&lt;br /&gt;
        $out['TYPE_TITLE'] = $v['TITLE'];&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if ($rec['LINKED_OBJECT']) {&lt;br /&gt;
    $processed = $this-&amp;gt;processDevice($rec['ID']);&lt;br /&gt;
    $out['HTML'] = $processed['HTML'];&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Сортируем типы устройств по алфавиту&lt;br /&gt;
usort($types, function ($a, $b) {&lt;br /&gt;
    return strcmp($a['TITLE'], $b['TITLE']);&lt;br /&gt;
});&lt;br /&gt;
// Добавляем отсортированные типы устройств в выходной массив&lt;br /&gt;
$out['TYPES'] = $types;&lt;br /&gt;
&lt;br /&gt;
// Получаем все локации&lt;br /&gt;
$out['LOCATIONS'] = SQLSelect(&amp;quot;SELECT ID, TITLE FROM locations ORDER BY TITLE+0&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Если устройство связано с локацией, выполняем дополнительные действия&lt;br /&gt;
if ($rec['LOCATION_ID']) {&lt;br /&gt;
    // Получаем запись локации по ID&lt;br /&gt;
    $location_rec = SQLSelectOne(&amp;quot;SELECT ID,TITLE FROM locations WHERE ID=&amp;quot; . $rec['LOCATION_ID']);&lt;br /&gt;
    // Обрабатываем название локации и добавляем его в выходной массив&lt;br /&gt;
    $out['LOCATION_TITLE'] = processTitle($location_rec['TITLE']);&lt;br /&gt;
    // Получаем все устройства, связанные с текущей локацией&lt;br /&gt;
    $other_devices = SQLSelect(&amp;quot;SELECT ID, TITLE, ARCHIVED FROM devices WHERE LOCATION_ID=&amp;quot; . (int)$rec['LOCATION_ID'] . &amp;quot; ORDER BY TITLE&amp;quot;);&lt;br /&gt;
    // Добавляем список устройств в выходной массив&lt;br /&gt;
    $out['OTHER_DEVICES'] = $other_devices;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Если тип устройства не пуст, выполняем дополнительные действия&lt;br /&gt;
if ($rec['TYPE']) {&lt;br /&gt;
    // Получаем все устройства, связанные с текущим типом устройства&lt;br /&gt;
    $other_devices_type = SQLSelect(&amp;quot;SELECT ID, TITLE, ARCHIVED, LINKED_OBJECT FROM devices WHERE TYPE='&amp;quot; . $rec['TYPE'] . &amp;quot;' ORDER BY TITLE&amp;quot;);&lt;br /&gt;
    // Добавляем список устройств в выходной массив&lt;br /&gt;
    $out['OTHER_DEVICES_TYPE'] = $other_devices_type;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Elmax</name></author>
	</entry>
	<entry>
		<id>https://mdminfo.ru/index.php?title=Modules/devices&amp;diff=2080</id>
		<title>Modules/devices</title>
		<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=Modules/devices&amp;diff=2080"/>
		<updated>2024-03-31T22:34:41Z</updated>

		<summary type="html">&lt;p&gt;Elmax: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Modules/devices|/modules/devices]]&lt;br /&gt;
&lt;br /&gt;
[[Папки и файлы|ᐂ В корневой раздел]]  [[Modules|ᐃ на директорию выше]][https://github.com/sergejey/majordomo/tree/master/modules/devices | Перейти в директорию на github]&lt;br /&gt;
===== Папки директории '''/modules/devices''' =====&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/addons|'''addons''']] - пока папка не имеет описания&lt;br /&gt;
&lt;br /&gt;
===== Файлы директории '''/modules/devices''' =====&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/Rooms_onActivity_php | '''Rooms_onActivity.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/Rooms_onIdle_php | '''Rooms_onIdle.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/Rooms_updateActivityStatus_php | '''Rooms_updateActivityStatus.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SButtons_pressed_php | '''SButtons_pressed.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCameras_motionDetected_php | '''SCameras_motionDetected.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCameras_takeSeries_php | '''SCameras_takeSeries.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCameras_takeSnapshot_php | '''SCameras_takeSnapshot.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCameras_updatePreview_php | '''SCameras_updatePreview.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SControllers_switch_php | '''SControllers_switch.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SControllers_turnOff_php | '''SControllers_turnOff.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SControllers_turnOn_php | '''SControllers_turnOn.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCounters_pulseDetected_php | '''SCounters_pulseDetected.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCounters_refreshStats_php | '''SCounters_refreshStats.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCounters_valueUpdated_php | '''SCounters_valueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SCounters_valueWorkUpdated_php | '''SCounters_valueWorkUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDevices_batteryLevelUpdated_php | '''SDevices_batteryLevelUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDevices_keepAlive_php | '''SDevices_keepAlive.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDevices_logicAction_php | '''SDevices_logicAction.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDevices_statusUpdated_php | '''SDevices_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_levelUpdated_php | '''SDimmers_levelUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_levelWorkUpdated_php | '''SDimmers_levelWorkUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_setLevel_php | '''SDimmers_setLevel.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_statusUpdated_php | '''SDimmers_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_turnOff_php | '''SDimmers_turnOff.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SDimmers_turnOn_php | '''SDimmers_turnOn.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SGroups_statusUpdated_php | '''SGroups_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SGroups_switch_php | '''SGroups_switch.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SGroups_turnOff_php | '''SGroups_turnOff.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SGroups_turnOn_php | '''SGroups_turnOn.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLeak_alert_php | '''SLeak_alert.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLeak_blockSensor_php | '''SLeak_blockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLeak_statusUpdated_php | '''SLeak_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLeak_unblockSensor_php | '''SLeak_unblockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMotions_blockSensor_php | '''SMotions_blockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMotions_motionDetected_php | '''SMotions_motionDetected.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMotions_unblockSensor_php | '''SMotions_unblockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenClose_blockSensor_php | '''SOpenClose_blockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenClose_statusUpdated_php | '''SOpenClose_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenClose_unblockSensor_php | '''SOpenClose_unblockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_close_php | '''SOpenable_close.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_levelUpdated_php | '''SOpenable_levelUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_open_php | '''SOpenable_open.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_setLevel_php | '''SOpenable_setLevel.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_statusUpdated_php | '''SOpenable_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SOpenable_switch_php | '''SOpenable_switch.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SPowerSensors_loadStatusChanged_php | '''SPowerSensors_loadStatusChanged.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SPowerSensors_valueUpdated_php | '''SPowerSensors_valueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SRGB_colorUpdated_php | '''SRGB_colorUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SRGB_setColor_php | '''SRGB_setColor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SRGB_turnOff_php | '''SRGB_turnOff.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SRGB_turnOn_php | '''SRGB_turnOn.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSensors_alert_php | '''SSensors_alert.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSensors_blockSensor_php | '''SSensors_blockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSensors_unblockSensor_php | '''SSensors_unblockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSensors_valueUpdated_php | '''SSensors_valueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSmoke_alert_php | '''SSmoke_alert.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSmoke_blockSensor_php | '''SSmoke_blockSensor.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSmoke_statusUpdated_php | '''SSmoke_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SSmoke_unblockSensor_php | '''SSmoke_unblockSensor.php''']] -  &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_disable_php | '''SThermostats_disable.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_enable_php | '''SThermostats_enable.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_setTargetTemperature_php | '''SThermostats_setTargetTemperature.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_statusUpdated_php | '''SThermostats_statusUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_switchEnable_php | '''SThermostats_switchEnable.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_tempDown_php | '''SThermostats_tempDown.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_tempUp_php | '''SThermostats_tempUp.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_turnOff_php | '''SThermostats_turnOff.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_turnOn_php | '''SThermostats_turnOn.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SThermostats_valueUpdated_php | '''SThermostats_valueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_configUpdated_php | '''SAirConditioners_configUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_fanSpeedUpdated_php | '''SAirConditioners_fanSpeedUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_setFanSpeedMode_php | '''SAirConditioners_setFanSpeedMode.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_setTargetTemperature_php | '''SAirConditioners_setTargetTemperature.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_setThermostatMode_php | '''SAirConditioners_setThermostatMode.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_tempDown_php | '''SAirConditioners_tempDown.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_tempUp_php | '''SAirConditioners_tempUp.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SAirConditioners_thermostatUpdated_php | '''SAirConditioners_thermostatUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLightSensors_periodMinValueUpdated_php | '''SLightSensors_periodMinValueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SLightSensors_valueUpdated_php | '''SLightSensors_valueUpdated.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMedias_pause_php | '''SMedias_pause.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMedias_setChannel_php | '''SMedias_setChannel.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMedias_setSource_php | '''SMedias_setSource.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SMedias_setVolume_php | '''SMedias_setVolume.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/STVs_pause_php | '''STVs_pause.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/STVs_setChannel_php | '''STVs_setChannel.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/STVs_setSource_php | '''STVs_setSource.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/STVs_setVolume_php | '''STVs_setVolume.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/SVacuums_pause_php | '''SVacuums_pause.php''']] - &lt;br /&gt;
&lt;br /&gt;
'''app''' -  пока файл не понятен, его назначение так-же&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/darknessmode_activate_php | '''darknessmode_activate.php''']] - для активации устройств, связанных с группой &amp;quot;groupSunset&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/darknessmode_deactivate_php | '''darknessmode_deactivate.php''']] - для деактивации устройств, связанных с группой &amp;quot;groupSunset&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_class_php | '''devices.class.php''']] - содержит набор функций для взаимодействия с устройствами в рамках проекта. Он обеспечивает взаимодействие между устройствами, базой данных, внешними API и другими частями системы, такими как управление группами устройств, связями между ними и действиями, которые могут быть выполнены над устройствами.&lt;br /&gt;
&lt;br /&gt;
[[devices_edit_inc_php | '''devices_edit.inc.php''']] - содержит функции и код, связанный с редактированием устройств в проекте. Он включает в себя обработку форм, сохранение данных и другие операции, связанные с редактированием устройств.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_links_inc_php | '''devices_links.inc.php''']] - содержит функции для работы с связями между устройствами. Он включает в себя обработку создания, обновления и удаления связей, а также работу с деталями связей и другие операции, связанные с управлением связями устройств.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_links_actions_inc_php | '''devices_links_actions.inc.php''']] - содержит функции для обработки действий, связанных с устройствами. Он выполняет действия, такие как включение, выключение, установка цвета и передача значений объектов. Также файл подключает дополнительные скрипты для обработки действий из директории [[Modules/devices/addons|'''addons''']]&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_manage_groups_inc_php | '''devices_manage_groups.inc.php''']] - содержит функции для управления группами устройств. Он включает в себя операции по созданию, редактированию и удалению групп устройств, обновление объектов группы, очистку кэша значений, а также перенаправление на соответствующие страницы просмотра.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_manage_schedule_inc_php | '''devices_manage_schedule.inc.php''']] -  этот файл включает в себя операции по созданию, редактированию и удалению расписаний для устройств, а также операции по привязке устройств к определенным временным интервалам и управлению их работой в соответствии с расписанием.&lt;br /&gt;
&lt;br /&gt;
[[devices_quick_edit_inc_php | '''devices_quick_edit.inc.php''']] - содержит код для сщздания/редактирования устройств. Он обеспечивает быстрый доступ к основным параметрам устройств, таким как имя, описание, состояние и другие атрибуты, позволяя пользователям внести изменения на странице редактирования.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_schedule_inc_php | '''devices_schedule.inc.php''']] - этот файл предоставляет функциональность для управления расписаниями устройств, включая создание, редактирование и удаление расписаний, а также привязку устройств к определенным временным интервалам и управление их работой в соответствии с расписанием.&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_search_inc_php | '''devices_search.inc.php''']] -&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_structure_inc_php | '''devices_structure.inc.php''']] -&lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_structure_links_inc_php | '''devices_structure_links.inc.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/devices_widgets_js_php | '''devices_widgets.js.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/econommode_activate_php | '''econommode_activate.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/econommode_deactivate_php | '''econommode_deactivate.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/homebridgeSync_inc_php | '''homebridgeSync.inc.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/nightmode_activate_php | '''nightmode_activate.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/nobodyhomemode_activate_php | '''nobodyhomemode_activate.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/nobodyhomemode_deactivate_php | '''nobodyhomemode_deactivate.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/processCommand_inc_php | '''processCommand.inc.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/processHomebridgeMQTT_inc_php | '''processHomebridgeMQTT.inc.php''']] - &lt;br /&gt;
&lt;br /&gt;
[[Modules/devices/system_checkstate_php | '''system_checkstate.php''']] -&lt;/div&gt;</summary>
		<author><name>Elmax</name></author>
	</entry>
	<entry>
		<id>https://mdminfo.ru/index.php?title=Modules/devices/system_checkstate_php&amp;diff=2079</id>
		<title>Modules/devices/system checkstate php</title>
		<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=Modules/devices/system_checkstate_php&amp;diff=2079"/>
		<updated>2024-03-31T21:25:08Z</updated>

		<summary type="html">&lt;p&gt;Elmax: Заготовка&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Modules/devices/system_checkstate_php | system_checkstate.php]]&lt;br /&gt;
[[Папки и файлы|ᐂ В корневой раздел]]  [[Modules/devices|ᐃ В директорию расположения файла]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Заготовка&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Elmax</name></author>
	</entry>
	<entry>
		<id>https://mdminfo.ru/index.php?title=Modules/devices/SVacuums_pause_php&amp;diff=2078</id>
		<title>Modules/devices/SVacuums pause php</title>
		<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=Modules/devices/SVacuums_pause_php&amp;diff=2078"/>
		<updated>2024-03-31T21:24:36Z</updated>

		<summary type="html">&lt;p&gt;Elmax: Заготовка&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Modules/devices/SVacuums_pause_php | SVacuums_pause.php]]&lt;br /&gt;
[[Папки и файлы|ᐂ В корневой раздел]]  [[Modules/devices|ᐃ В директорию расположения файла]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Заготовка&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Elmax</name></author>
	</entry>
	<entry>
		<id>https://mdminfo.ru/index.php?title=Modules/devices/STVs_setVolume_php&amp;diff=2077</id>
		<title>Modules/devices/STVs setVolume php</title>
		<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=Modules/devices/STVs_setVolume_php&amp;diff=2077"/>
		<updated>2024-03-31T21:24:06Z</updated>

		<summary type="html">&lt;p&gt;Elmax: Заготовка&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Modules/devices/STVs_setVolume_php | STVs_setVolume.php]]&lt;br /&gt;
[[Папки и файлы|ᐂ В корневой раздел]]  [[Modules/devices|ᐃ В директорию расположения файла]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Заготовка&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Elmax</name></author>
	</entry>
	<entry>
		<id>https://mdminfo.ru/index.php?title=Modules/devices/STVs_setSource_php&amp;diff=2076</id>
		<title>Modules/devices/STVs setSource php</title>
		<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=Modules/devices/STVs_setSource_php&amp;diff=2076"/>
		<updated>2024-03-31T21:23:40Z</updated>

		<summary type="html">&lt;p&gt;Elmax: Заготовка&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Modules/devices/STVs_setSource_php | STVs_setSource.php]]&lt;br /&gt;
[[Папки и файлы|ᐂ В корневой раздел]]  [[Modules/devices|ᐃ В директорию расположения файла]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Заготовка&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Elmax</name></author>
	</entry>
	<entry>
		<id>https://mdminfo.ru/index.php?title=Modules/devices/STVs_setChannel_php&amp;diff=2075</id>
		<title>Modules/devices/STVs setChannel php</title>
		<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=Modules/devices/STVs_setChannel_php&amp;diff=2075"/>
		<updated>2024-03-31T21:23:12Z</updated>

		<summary type="html">&lt;p&gt;Elmax: Заготовка&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Modules/devices/STVs_setChannel_php | STVs_setChannel.php]]&lt;br /&gt;
[[Папки и файлы|ᐂ В корневой раздел]]  [[Modules/devices|ᐃ В директорию расположения файла]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Заготовка&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Elmax</name></author>
	</entry>
	<entry>
		<id>https://mdminfo.ru/index.php?title=Modules/devices/STVs_pause_php&amp;diff=2074</id>
		<title>Modules/devices/STVs pause php</title>
		<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=Modules/devices/STVs_pause_php&amp;diff=2074"/>
		<updated>2024-03-31T21:22:40Z</updated>

		<summary type="html">&lt;p&gt;Elmax: Заготовка&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Modules/devices/STVs_pause_php | STVs_pause.php]]&lt;br /&gt;
[[Папки и файлы|ᐂ В корневой раздел]]  [[Modules/devices|ᐃ В директорию расположения файла]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Заготовка&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Elmax</name></author>
	</entry>
	<entry>
		<id>https://mdminfo.ru/index.php?title=Modules/devices/SThermostats_valueUpdated_php&amp;diff=2073</id>
		<title>Modules/devices/SThermostats valueUpdated php</title>
		<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=Modules/devices/SThermostats_valueUpdated_php&amp;diff=2073"/>
		<updated>2024-03-31T21:22:15Z</updated>

		<summary type="html">&lt;p&gt;Elmax: Заготовка&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Modules/devices/SThermostats_valueUpdated_php | SThermostats_valueUpdated.php]]&lt;br /&gt;
[[Папки и файлы|ᐂ В корневой раздел]]  [[Modules/devices|ᐃ В директорию расположения файла]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Заготовка&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Elmax</name></author>
	</entry>
	<entry>
		<id>https://mdminfo.ru/index.php?title=Modules/devices/SThermostats_turnOn_php&amp;diff=2072</id>
		<title>Modules/devices/SThermostats turnOn php</title>
		<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=Modules/devices/SThermostats_turnOn_php&amp;diff=2072"/>
		<updated>2024-03-31T21:21:37Z</updated>

		<summary type="html">&lt;p&gt;Elmax: Заготовка&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Modules/devices/SThermostats_turnOn_php | SThermostats_turnOn.php]]&lt;br /&gt;
[[Папки и файлы|ᐂ В корневой раздел]]  [[Modules/devices|ᐃ В директорию расположения файла]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Заготовка&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Elmax</name></author>
	</entry>
	<entry>
		<id>https://mdminfo.ru/index.php?title=Modules/devices/SThermostats_turnOff_php&amp;diff=2071</id>
		<title>Modules/devices/SThermostats turnOff php</title>
		<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=Modules/devices/SThermostats_turnOff_php&amp;diff=2071"/>
		<updated>2024-03-31T21:21:09Z</updated>

		<summary type="html">&lt;p&gt;Elmax: Заготовка&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Modules/devices/SThermostats_turnOff_php | SThermostats_turnOff.php]]&lt;br /&gt;
[[Папки и файлы|ᐂ В корневой раздел]]  [[Modules/devices|ᐃ В директорию расположения файла]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Заготовка&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Elmax</name></author>
	</entry>
	<entry>
		<id>https://mdminfo.ru/index.php?title=Modules/devices/SThermostats_tempUp_php&amp;diff=2070</id>
		<title>Modules/devices/SThermostats tempUp php</title>
		<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=Modules/devices/SThermostats_tempUp_php&amp;diff=2070"/>
		<updated>2024-03-31T21:20:42Z</updated>

		<summary type="html">&lt;p&gt;Elmax: Заготовка&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Modules/devices/SThermostats_tempUp_php | SThermostats_tempUp.php]]&lt;br /&gt;
[[Папки и файлы|ᐂ В корневой раздел]]  [[Modules/devices|ᐃ В директорию расположения файла]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Заготовка&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Elmax</name></author>
	</entry>
	<entry>
		<id>https://mdminfo.ru/index.php?title=Modules/devices/SThermostats_tempDown_php&amp;diff=2069</id>
		<title>Modules/devices/SThermostats tempDown php</title>
		<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=Modules/devices/SThermostats_tempDown_php&amp;diff=2069"/>
		<updated>2024-03-31T21:20:12Z</updated>

		<summary type="html">&lt;p&gt;Elmax: Заготовка&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Modules/devices/SThermostats_tempDown_php | SThermostats_tempDown.php]]&lt;br /&gt;
[[Папки и файлы|ᐂ В корневой раздел]]  [[Modules/devices|ᐃ В директорию расположения файла]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Заготовка&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Elmax</name></author>
	</entry>
	<entry>
		<id>https://mdminfo.ru/index.php?title=Modules/devices/SThermostats_switchEnable_php&amp;diff=2068</id>
		<title>Modules/devices/SThermostats switchEnable php</title>
		<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=Modules/devices/SThermostats_switchEnable_php&amp;diff=2068"/>
		<updated>2024-03-31T21:19:33Z</updated>

		<summary type="html">&lt;p&gt;Elmax: Заготовка&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Modules/devices/SThermostats_switchEnable_php | SThermostats_switchEnable.php]]&lt;br /&gt;
[[Папки и файлы|ᐂ В корневой раздел]]  [[Modules/devices|ᐃ В директорию расположения файла]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Заготовка&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Elmax</name></author>
	</entry>
	<entry>
		<id>https://mdminfo.ru/index.php?title=Modules/devices/SThermostats_statusUpdated_php&amp;diff=2067</id>
		<title>Modules/devices/SThermostats statusUpdated php</title>
		<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=Modules/devices/SThermostats_statusUpdated_php&amp;diff=2067"/>
		<updated>2024-03-31T21:19:07Z</updated>

		<summary type="html">&lt;p&gt;Elmax: Заготовка&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Modules/devices/SThermostats_statusUpdated_php | SThermostats_statusUpdated.php]]&lt;br /&gt;
[[Папки и файлы|ᐂ В корневой раздел]]  [[Modules/devices|ᐃ В директорию расположения файла]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Заготовка&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Elmax</name></author>
	</entry>
	<entry>
		<id>https://mdminfo.ru/index.php?title=Modules/devices/SThermostats_setTargetTemperature_php&amp;diff=2066</id>
		<title>Modules/devices/SThermostats setTargetTemperature php</title>
		<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=Modules/devices/SThermostats_setTargetTemperature_php&amp;diff=2066"/>
		<updated>2024-03-31T21:18:40Z</updated>

		<summary type="html">&lt;p&gt;Elmax: Заготовка&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Modules/devices/SThermostats_setTargetTemperature_php | SThermostats_setTargetTemperature.php]]&lt;br /&gt;
[[Папки и файлы|ᐂ В корневой раздел]]  [[Modules/devices|ᐃ В директорию расположения файла]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Заготовка&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Elmax</name></author>
	</entry>
	<entry>
		<id>https://mdminfo.ru/index.php?title=Modules/devices/SThermostats_enable_php&amp;diff=2065</id>
		<title>Modules/devices/SThermostats enable php</title>
		<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=Modules/devices/SThermostats_enable_php&amp;diff=2065"/>
		<updated>2024-03-31T21:18:00Z</updated>

		<summary type="html">&lt;p&gt;Elmax: Заготовка&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Modules/devices/SThermostats_enable_php | SThermostats_enable.php]]&lt;br /&gt;
[[Папки и файлы|ᐂ В корневой раздел]]  [[Modules/devices|ᐃ В директорию расположения файла]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Заготовка&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Elmax</name></author>
	</entry>
	<entry>
		<id>https://mdminfo.ru/index.php?title=Modules/devices/SThermostats_disable_php&amp;diff=2064</id>
		<title>Modules/devices/SThermostats disable php</title>
		<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=Modules/devices/SThermostats_disable_php&amp;diff=2064"/>
		<updated>2024-03-31T21:17:32Z</updated>

		<summary type="html">&lt;p&gt;Elmax: Заготовка&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Modules/devices/SThermostats_disable_php | SThermostats_disable.php]]&lt;br /&gt;
[[Папки и файлы|ᐂ В корневой раздел]]  [[Modules/devices|ᐃ В директорию расположения файла]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Заготовка&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Elmax</name></author>
	</entry>
	<entry>
		<id>https://mdminfo.ru/index.php?title=Modules/devices/SSmoke_unblockSensor_php&amp;diff=2063</id>
		<title>Modules/devices/SSmoke unblockSensor php</title>
		<link rel="alternate" type="text/html" href="https://mdminfo.ru/index.php?title=Modules/devices/SSmoke_unblockSensor_php&amp;diff=2063"/>
		<updated>2024-03-31T21:17:08Z</updated>

		<summary type="html">&lt;p&gt;Elmax: Заготовка&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Modules/devices/SSmoke_unblockSensor_php | SSmoke_unblockSensor.php]]&lt;br /&gt;
[[Папки и файлы|ᐂ В корневой раздел]]  [[Modules/devices|ᐃ В директорию расположения файла]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Заготовка&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Elmax</name></author>
	</entry>
</feed>