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

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

Ответить
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

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

Сообщение Alex » Сб дек 15, 2012 12:23 pm

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

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

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

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

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

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

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

Кстати, initDevicesOnline нужно запускать при старте системы. Есть ли в MajorDoMo некий аналог. autoexec.bat? А ещё лучше отсроченный на 2 минуты после старта autoexec.bat.
Аватара пользователя
sergejey
Site Admin
Сообщения: 4286
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 76 раз
Поблагодарили: 1559 раз
Контактная информация:

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

Сообщение sergejey » Пн дек 17, 2012 10:38 am

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

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

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Аватара пользователя
sergejey
Site Admin
Сообщения: 4286
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 76 раз
Поблагодарили: 1559 раз
Контактная информация:

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

Сообщение sergejey » Вт янв 08, 2013 8:47 pm

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

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Ответить