Мы написали веб-приложение для управления освещением при помощи системы NooLite.
В настройках приложения можно определить список его страниц. На каждую из них можно добавить элементы управления (слайдеры и кнопки), выполняющие нужный набор действий (включение/выключение света, регулировка яркости в нескольких каналах).
Демо (вместо включения/выключения света в демо-режиме выдается текстовое сообщение о выполнении действий).
Мы использовали ASP.NET MVC на стороне сервера, JQuery Mobile на клиенте (собственно, в первую очередь интересно было управлять освещением именно с телефона). СУБД не требуется (настройки хранятся в конфигурационном файле). Для отправки команд с компьютера на управляющие блоки используется USB-адаптер PC118.
Скачать приложение можно здесь. Там же можно отдельно скачать .NET библиотеку, реализующую API для управления системой NooLite. Исходный код всего этого на Google Code.
Под катом находится инструкция по установке и настройке «с нуля».
Устанавливаем необходимые компоненты
- Скачиваем и устанавливаем .NET Framework 4.0: www.microsoft.com/en-us/download/details.aspx?id=17718
- Устанавливаем ASP.NET MVC3: www.asp.net/mvc/mvc3
- Устанавдиваем IIS Express: www.microsoft.com/en-us/download/details.aspx?id=34679
Настраиваем web-сервер (IIS Express)
1. Скачиваем архив с веб-приложением отсюда и распаковываем, например, в папку «C:noolite».
2. Запускаем IIS Express (файл C:Program FilesIIS Expressiisexpress.exe), чтобы он создал конфиги по умолчанию.
3. Создаем в настройках IIS запись о новом сайте. Для этого в командной строке набираем
cd C:Program FilesIIS Express
appcmd add site /name:noolite.web /bindings:"http://%COMPUTERNAME%:19777,http://localhost:19777" /physicalPath:C:noolite
4. Устанавливаем ApplicationPool для сайта
appcmd set app "noolite.web/" /applicationPool:Clr4IntegratedAppPool
5. Запускаем IIS Express
iisexpress /site:noolite.web
Теперь если набрать в браузере «localhost:19777», должна открыться примерно такая страничка:
Настраиваем управление светом
Настройки приложения, имеющие отношение к управлению электроприборами, находятся в файле NooLite.config в корневой папке сайта. По умолчанию этот файл содержит тестовые данные:
<?xml version="1.0" encoding="utf-8"?>
<nooLiteConfiguration debug="false">
<page id="bedroom" title="Спальня" description="Общий свет и настенные светильники в спальне">
<control id="main" displayText="Общий свет" type="Switcher" level="155">
<channel id="0" />
</control>
<control id="night-light" displayText="Ночник" type="Slider">
<channel id="0" level="0" />
<channel id="1" />
</control>
<control id="all-off" displayText="Выключить все" level="0">
<channel id="0" />
<channel id="1" />
</control>
</page>
<page id="hallway" title="Коридор">
<control id="main" displayText="Возле выхода" type="Switcher">
<channel id="2" />
</control>
<control id="small" displayText="Возле кухни" type="Switcher">
<channel id="3" />
</control>
<control id="all-off" displayText="Весь коридор" type="Switcher">
<channel id="2" />
<channel id="3" />
</control>
</page>
</nooLiteConfiguration>
USB-адаптер PC118 имеет 8 каналов, каждый из которых можно связать с группой светильников (или других электроприборов).
Внутри корневого элемента nooLiteConfiguration
содержится коллекция элементов page
. Каждый из них описывает отдельную страницу приложения. Элемент page
имеет параметры id
(идентификатор страницы, используется при формировании ее адреса), title
(заголовок страницы) и description
(описание, отображается на странице сверху).
Внутри каждого элемента page
находится несколько элементов control
. Они задают набор элементов управления на странице. Элемент control имеет параметры id
(идентификатор элемента управления), displayText
(текстовая метка), type
(тип элемента управления) и level
(уровень яркости, который будет устанавливаться для светильников при использовании данного элемента управления, например, при нажатии на кнопку).
Параметр type
может принимать одно из следующих значений:
- Button — кнопка, которая устанавливает светильникам уровень яркости, заданный в параметре
level
; - Switcher — группа из двух кнопок: «ON» и «OFF». Кнопка «ON» работает аналогично элементу «Button», кнопка «OFF» выключает свет во всех связанных каналах;
- Slider — слайдер и кнопка «SET», которая устанавливает в указанной группе каналов уровень яркости, выбранный при помощи слайдера.
Внутри каждого элемента control
можно указать набор каналов (элемент channel
) в которые нужно отправлять команды при использовании данного элемента управления. Канал имеет параметры id
(номер канала — число от 0 до 7) и level
(уровень яркости для канала — имеет приоритет над значением параметра level
у элемента управления).
Ниже приведен пример отображения элементов управления для страницы «bedroom» из набора тестовых данных.
Вместо заключения
Я очень давно мечтал автоматизировать управление электроприборами. Не управлять светом через пульт, а именно иметь возможность писать программы, управляющие светом по нужным алгоритмам без участия человека. Долгое время не было доступного «железа», обладающего нужными возможностями. Я даже собрал собственное устройство (на Arduino+XBee) но получившийся пучок микросхем и проводов трудно было приспособить для использования в реальной жизни.
Когда я в первый раз узнал о «белорусской компании, которая разрабатывает радиоуправляемые выключатели», мне вспомнилась история про мониторы «ИНТЕГРАЛ», посмеялся и забыл об этом. Но после обзора системы NooLite на хабре я заказал себе пару таких выключателей и это оказалось очень клево. Я думаю, подобные вещи и люди, которые их создают, делают наш мир лучше. Они показывают нам, что будущее, о котором мы могли только мечтать в детстве, уже очень близко — намного ближе, чем мы думаем.
Я очень хотел бы, чтобы система NooLite и другие подобные проекты развивались и входили в нашу жизнь. Именно поэтому я потратил выходные на управление светом через броузер. И я готов еще потратить свое время на реализацию подобных задач.
Спасибо за внимание!
Автор: dima117