Модули «Устройства Online» и «Веб-переменные» имеют два существенных недостатока.
Первый. Они отслеживают факт изменения параметра, но, если параметр не изменялся, то нет и реакции модуля. Невозможно отследить сам факт обновления.
Второй недостаток состоит в том, что модули не предоставляют доступа к текущему состоянию параметра. А это совсем не хорошо.
Поясню на примере.
Запускаем MajorDoMo (а в это время в сети полно устройств, многие из которых работают постоянно). Нам надо установит глобальную переменную object.online. В Устройствах Online есть пункт «Действие при переходе в Online».
--------------
Так вот: события «переход в Online» мы не дождёмся! Устройство уже (и постоянно) в online. Следовательно мы не сможем установить глобальную переменную object.online _никогда_. И взять внутреннюю переменную модуля мы не можем, потому, что модуль нам такого сервиса не предоставляет! Всё, приехали. Сидим с серым (или вообще неправильным индикатором состояния устройства).
--------------
Для решения этой проблемы пришлось изобрести скрипт (initDevicesOnline), который при запуске принудительно копирует текущие переменные модуля в свойства online нужных объектов. Но это неправильный подход и вообще костыль. Модуль должен предоставлять доступ к текущим значениям переменных и позволять устанавливать свойства объектов и запускать скрипты по факту обновления, а не только по факту изменения значения.
Кстати, initDevicesOnline нужно запускать при старте системы. Есть ли в MajorDoMo некий аналог. autoexec.bat? А ещё лучше отсроченный на 2 минуты после старта autoexec.bat.
Недостатки модулей «Устройства Online» и «Веб-переменные»
Модератор: immortal
- sergejey
- Site Admin
- Сообщения: 4286
- Зарегистрирован: Пн сен 05, 2011 6:48 pm
- Откуда: Минск, Беларусь
- Благодарил (а): 76 раз
- Поблагодарили: 1559 раз
- Контактная информация:
Re: Недостатки модулей «Устройства Online» и «Веб-переменные
По поводу этого недостатка надо подумать, как лучше логически это решить... Может быть сделать привязку к свойствам объекта, как в тех же 1-wire, а не только вызов сценария.
По поводу auto_exec -- есть способ например такой: создать в папке /scripts/ скрипт cycle_startup.php и он будет запущен с запуском системы. Т.е. там запускаются все файлы вида cycle_*.php -- изначально предполагается, что это какой-то цикл, но совсем не обязательно. Он может просто произвести какие-то действия один раз и потом закрыться.
По поводу auto_exec -- есть способ например такой: создать в папке /scripts/ скрипт cycle_startup.php и он будет запущен с запуском системы. Т.е. там запускаются все файлы вида cycle_*.php -- изначально предполагается, что это какой-то цикл, но совсем не обязательно. Он может просто произвести какие-то действия один раз и потом закрыться.
Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
- sergejey
- Site Admin
- Сообщения: 4286
- Зарегистрирован: Пн сен 05, 2011 6:48 pm
- Откуда: Минск, Беларусь
- Благодарил (а): 76 раз
- Поблагодарили: 1559 раз
- Контактная информация:
Re: Недостатки модулей «Устройства Online» и «Веб-переменные
Сейчас я сделал, чтобы в модулях веб-переменный и устройства online была возможность задать привязку к объекту.свойству -- вот из него можно постоянно получать актуальное состояние.По поводу этого недостатка надо подумать, как лучше логически это решить... Может быть сделать привязку к свойствам объекта, как в тех же 1-wire, а не только вызов сценария.
Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги