Страница 1 из 1

Недостатки модулей «Устройства Online» и «Веб-переменные»

Добавлено: Сб дек 15, 2012 12:23 pm
Alex
Модули «Устройства Online» и «Веб-переменные» имеют два существенных недостатока.

Первый. Они отслеживают факт изменения параметра, но, если параметр не изменялся, то нет и реакции модуля. Невозможно отследить сам факт обновления.

Второй недостаток состоит в том, что модули не предоставляют доступа к текущему состоянию параметра. А это совсем не хорошо.

Поясню на примере.

Запускаем MajorDoMo (а в это время в сети полно устройств, многие из которых работают постоянно). Нам надо установит глобальную переменную object.online. В Устройствах Online есть пункт «Действие при переходе в Online».

--------------
Так вот: события «переход в Online» мы не дождёмся! Устройство уже (и постоянно) в online. Следовательно мы не сможем установить глобальную переменную object.online _никогда_. И взять внутреннюю переменную модуля мы не можем, потому, что модуль нам такого сервиса не предоставляет! Всё, приехали. Сидим с серым (или вообще неправильным индикатором состояния устройства).
--------------

Для решения этой проблемы пришлось изобрести скрипт (initDevicesOnline), который при запуске принудительно копирует текущие переменные модуля в свойства online нужных объектов. Но это неправильный подход и вообще костыль. Модуль должен предоставлять доступ к текущим значениям переменных и позволять устанавливать свойства объектов и запускать скрипты по факту обновления, а не только по факту изменения значения.

Кстати, initDevicesOnline нужно запускать при старте системы. Есть ли в MajorDoMo некий аналог. autoexec.bat? А ещё лучше отсроченный на 2 минуты после старта autoexec.bat.

Re: Недостатки модулей «Устройства Online» и «Веб-переменные

Добавлено: Пн дек 17, 2012 10:38 am
sergejey
По поводу этого недостатка надо подумать, как лучше логически это решить... Может быть сделать привязку к свойствам объекта, как в тех же 1-wire, а не только вызов сценария.

По поводу auto_exec -- есть способ например такой: создать в папке /scripts/ скрипт cycle_startup.php и он будет запущен с запуском системы. Т.е. там запускаются все файлы вида cycle_*.php -- изначально предполагается, что это какой-то цикл, но совсем не обязательно. Он может просто произвести какие-то действия один раз и потом закрыться.

Re: Недостатки модулей «Устройства Online» и «Веб-переменные

Добавлено: Вт янв 08, 2013 8:47 pm
sergejey
По поводу этого недостатка надо подумать, как лучше логически это решить... Может быть сделать привязку к свойствам объекта, как в тех же 1-wire, а не только вызов сценария.
Сейчас я сделал, чтобы в модулях веб-переменный и устройства online была возможность задать привязку к объекту.свойству -- вот из него можно постоянно получать актуальное состояние.