Main

Управление сценами

Обсуждение здесь: http://smartliving.ru/forum/viewtopic.php?f=5&t=35

Суть модуля в создании так называемых "сцен", на которые можно навешивать элементы интерфейса. Элементы могут быть либо информационными либо интерактивными, т.е. на них можно нажимать и инициировать какие-то действия.

Первоначально в модуле нужно задать размеры области показа сцен:

(сами сцены могут быть других размеров, но не больше)

Добавляем сцену, указывая путь к фоновой картинке:

(названия элементов сцены сразу на ней показываются, если они были добавлены на сцену -- сделано для удобства ориентирования)

После того как у нас есть сцена, мы можем на неё добавлять элементы:

При добавлении элемента надо указать как он будет называться, его координаты (TOP, LEFT -- отступ сверху и слево), и тип (image/html).

Немного о типах. Тип Image обозначает, что элемент будет картинкой, а HTML значит, что он будет блоком HTML-кода (или просто текста). В последнем случае нужно будет задать ещё ширину и высоту блока (для картинки используется ширина/высота картинки).

После добавления элемента появляется возможность добавить его "состояния". На самом деле, на экране как раз будут показываться различные состояния элмента в заданных координатах.

Вот пример настройки состояния "On" для картинки:

Основные опции настройки состояния:

Название -- ни на что не влияет и нигде не отображается, просто для удобства

Image -- картинка состояния. Если элемент типа HTML, то здесь может быть текст или код. Кстати, в текст можно вставлять служебные обозначения к примеру , которые при выводе будут заменены на значение свойства объекта. Можно сделать вывод времени или температуры.

Run script on click -- если выбран сценарий, то он будет запущен при клике на элемент

Display condition -- (самое интересно) это условие отображения состояния. Может быть n/a -- т.е. всегда активно. Полезно для кнопок или отображения какой-то меняющейся информации (температура и прочее). Условие может быть simple -- простое и, наверное, наиболее часто используемое. При выборе такого типа условия нужно будет задать объект/свойство и критерий сравнения. Если условие будет верно, то состояние будет активно и отображаться, если нет, то нет.

Пример simple условия:

При температуре котла больше 40 градусов на сцене будет отображен элемент в данном состоянии. Это может быть, например, большая красная лампочка. Даже мигающая, если в качестве картинки использовать gif-анимацию.

Последним типом условия является advanced, при котором можно ввести собственный php-код со сколь угодно сложными условиями. Главное, чтобы этот код устанавливал значение переменной $display в 0 или 1.

Пример advanced условия:

В приведённом выше примере реализовано случайное включение/выключение состояния.

Если выбран тип условия simple или advanced, то появляется ещё одна опция: switch scene when activated . Если эта галочка выбрана, то в случае активации состояния, будет автоматически активирована соответствующая сцена. Это может быть очень удобно, когда сцен несколько (этажи здания) и происходит важное событие на сцене, которая в данный момент не выбрана, тогда система сама переключится из текущей сцены в ту, где произошло событие.

Вот как выглядит интерфейс сцен со стороны пользователя:

Сцена 1 (два элемента -- лампочка и сообщение)

Сцена 2 (один элемент -- большая красная кнопка)

Элементы дизайна сцен (картинки) находятся в папке /cms/scenes/backgrounds и /cms/scenes/elements -- туда можно копировать свои и они будут доступны для выбора. Со временем хотелось бы набрать какую-то базу часто-используемых элементов (выключатели, лампочки, кнопки и т.п.).

Модуль этот использовать можно очень широко, например как альтернативу меню управления и совсем не обязательно, чтобы фоновой картинкой был план комнат -- можно использовать в качестве фона картинку деревянного стола и на нём разложить иконки запуска различных действий. В общем, всё только в рамках вашей фантазии!

Несколько скриншотов с вариантами использования:

MajorDomo

Project

Partners

edit SideBar

 

Blix theme adapted by David Gilbert, powered by PmWiki