Как стать автором
Обновить

Управление светом через браузер

Время на прочтение 4 мин
Количество просмотров 9.8K
Мы написали веб-приложение для управления освещением при помощи системы NooLite.

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

Демо (вместо включения/выключения света в демо-режиме выдается текстовое сообщение о выполнении действий).

Мы использовали ASP.NET MVC на стороне сервера, JQuery Mobile на клиенте (собственно, в первую очередь интересно было управлять освещением именно с телефона). СУБД не требуется (настройки хранятся в конфигурационном файле). Для отправки команд с компьютера на управляющие блоки используется USB-адаптер PC118.

Скачать приложение можно здесь. Там же можно отдельно скачать .NET библиотеку, реализующую API для управления системой NooLite. Исходный код всего этого на Google Code.

Под катом находится инструкция по установке и настройке «с нуля».

Устанавливаем необходимые компоненты



Настраиваем web-сервер (IIS Express)


1. Скачиваем архив с веб-приложением отсюда и распаковываем, например, в папку «C:\noolite».
2. Запускаем IIS Express (файл C:\Program Files\IIS Express\iisexpress.exe), чтобы он создал конфиги по умолчанию.
3. Создаем в настройках IIS запись о новом сайте. Для этого в командной строке набираем
cd C:\Program Files\IIS 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 и другие подобные проекты развивались и входили в нашу жизнь. Именно поэтому я потратил выходные на управление светом через броузер. И я готов еще потратить свое время на реализацию подобных задач.

Спасибо за внимание!
Теги:
Хабы:
+18
Комментарии 22
Комментарии Комментарии 22

Публикации

Истории

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн
PG Bootcamp 2024
Дата 16 апреля
Время 09:30 – 21:00
Место
Минск Онлайн
EvaConf 2024
Дата 16 апреля
Время 11:00 – 16:00
Место
Москва Онлайн