Наши партнеры

UnixForum






Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

На главную -> MyLDP -> Тематический каталог -> Программное обеспечение для Linux

Домотика с GNU/Linux, или как послать e-mail лампочке. Часть 1

Оригинал: Home automation in GNU/Linux
Автор: Steven Goodwin
Дата: 3 июля 2008
Перевод: Александр Тарасов aka oioki
Дата перевода: 9 августа 2008

Домотика - это совокупность автоматизированных устройств в доме, призванных сделать домашнюю жизнь более приятной и продуктивной (Примечание редактора: большую статью о домотике можно почитать здесь ). В область домотики входят многие области - дистанционное управление, управление освещением и электрическими приборами по расписанию, информационные службы и связь. За последние 10 лет многие производители аппаратного обеспечения предоставили свои собственные проприетарные разработки для решения этих задач. В отличие от них группа разработчиков по всему миру создает подобные им, однако свободные, решения.

В этой статье я вкратце опишу проекты, которые уже сейчас можно задействовать в обустройстве дома.

Управление бытовой техникой

Одной из самых впечатляющих возможностей умного дома является способность компьютера управлять освещением или питанием в розетке, в которую, к примеру, включен чайник. Естественно, для этого требуется специальная аппаратура, и самый яркий ее пример - это X10, неплохой компромисс между ценой, долговечностью и гибкостью.

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

Для генерирования таких X10-сигналов на линиях питания требуется специальное оборудование, например CM12U (см. рисунок 1), в комплект которого входит шнур для подключения к компьютеру (RS232 либо USB). Для приема таких сигналов можно воспользоваться следующими модулями:

  • Модуль, управляющий питанием в розетке. Вы просто монтируете модуль в стену и подключаете к нему свое устройство. Это устройство (например, чайник) теперь может управляться удаленным сигналом X10. Подобный модуль изображен на рисунке 2.
  • Модуль подключения лампочки - см. рисунок 3. Он устанавливается последовательно в обычный патрон лампочки, и работает как элемент "логическое И". Его можно включать и выключать путем подачи сигналов X10.
  • Как вариант - использовать специальный переключатель (см. рисунок 4) вместо обычного - он будет управлять подсоединенным к нему источником света. Этот модуль может как сам управлять освещением, так и принимать сигналы X10. Еще он может плавно изменять силу света.


Рисунок 1: Модуль CM12U, передающий сигналы X10 между вашим компьютером и цепью питания


Рисунок 2: Модуль, ожидающий сигналов X10 и управляющий подключенным к нему устройством


Рисунок 3: Вставляется в обычный патрон лампочки, это самый простой способ управлять освещением


Рисунок 4: Замена выключателя освещения, самый эффективный способ управления освещением

Каждому из этих устройств назначается адрес, состоящий из кода дома (буквы A-F) и кода модуля (1-16). Присутствие кода дома обусловлено тем, что питание в дом соседа может заводиться из того же источника, что и у вас - что означало бы, что ваши устройства смогли бы реагировать на соседские сигналы X10, и наоборот - чего, конечно же, не хочется. Можно приобрести подавитель сигналов (который бы не давал сигналам X10 выходить из дома), однако зачем - 16 кодов домов пока хватает. Или будет хватать до тех пор, пока не поселитесь в многоквартирном доме, населенном компьютерщиками и хакерами (даже это сложно вообразить в ближайшем будущем).

К вопросу о странах

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

Создание определенных сигналов X10 (через модуль CM12) требует специальных программ, на данный момент одним из лучших вариантов является heyu. На самом деле это не в полной мере open-source, однако для наших целей сойдет. Это консольная программа, ее настройки хранятся в файле /etc/heyu/x10.conf. Программа дает возможность управлять освещением, отдавая примерно такие команды:

heyu turn bedroom_light on

и

heyu dim studio_light 2

Эти команды можно вызывать с веб-сайта, скрипта, по расписанию crontab или попросту из командной строки. Как альтернатива cron, можно загрузить программу, содержащую последовательность сигналов "включить/выключить" прямо в модуль CM12 - так можно будет выполнять действия по расписанию даже когда компьютер выключен.

CM12 дает больший контроль освещения, нежели традиционные таймерные переключатели - можно создавать куда более реалистичные сценарии. К примеру, можно запрограммировать следующую последовательность: модуль включает свет внизу лестницы, ожидает минуту, выключает его и включает наверху. Это производит впечатление, что кто-то гуляет по лестницам, по пути включая и выключая свет. Запросто можно подумать, что в доме кто-то есть.

Все эти команды можно поместить в bash-скрипт, таким образом можно написать простенькую программу make_a_cuppa, включающую модуль, подсоединенный к чайнику (в моем доме это E5), ожидает пока вода вскипит (для 1,5 л воды по моим подсчетам 3 минуты 35 секунд), затем объявляет (через голосовой синтезатор Festival), что чайник готов, и выключает чайник. Видеозапись этого замечательного представления можно найти на сайте zdNet, в разделе Homebrew competition. Все, что нужно запомнить - это наполнять чайник свежей водой :)

С помощью X10 можно контролировать и другое: занавески, сенсоры движения и краны с водой.

Беспроводное управление Cosmic

Помимо приемников сигналов, есть еще и другие X10-устройства, которые рассылают их, например HR10e (см. рисунок 5). Это передатчик из RF в X10 посылает сообщения "включить", "выключить" и "изменить яркость" RF-приемнику (на рисунке 6), помещающему соответствующий сигнал на цепь питания. Обычно эти сообщения идут напрямую соответствующему устройству X10, однако обладая компьютером с GNU/Linux и CM12 мы можем принимать эти сигналы и делать что-то свое.


Рисунок 5: RF-передатчик

Программа heyu, описанная ранее, способна прослушивать сообщения X10 в цепи электропитания, и выполнять соответствующие им команды. К примеру, добавив следующие строки в конфигурационный файл

SCRIPT e1 on :: /usr/local/minerva/bin/mixer default dec master 10
SCRIPT e1 off :: /usr/local/minerva/bin/mixer default inc master 10

можно будет регулировать уровень громкости.


Рисунок 6: Приемник TM13UAH ловит RF-сигналы, и генерирует команду X10 в цепи питания

Я пользуюсь стандартным X10 RF передатчиком (см. рисунок 5) для отправки сигналов этому приемнику. Я разделил кнопки управления на три основные группы:

  1. Обычные функции. Изменение громкости, выключение звука и пауза используются настолько часто, что стоит оставить их во всех режимах.
  2. Функции, зависящие от режима. Центральные 8 кнопок.
  3. Изменение режима. Меняют режим и сообщают общий статус системы.

У этого передатчика нет какого-либо индикатора. Поэтому подтверждение должно быть звуковым, чтобы пользователь понял, что действие будет выполнено и больше кнопки нажимать не надо. У себя дома я пользуюсь звуком колокольчика и звуковым синтезатором Festival. Таким образом можно прослушивать текст. Полезно оформить в речь такие вещи, как будильники, прогнозы погоды и информацию об отправлениях поездов.

Я пользуюсь программой, входящей в комплект Minerva home automation suite, эта программа называется Cosmic. Ее режимы по умолчанию:

  • Multimedia: Воспроизведение CD, управление громкостью проигрывателя MP3;
  • Timer: Запускаете таймер на 5 минут и по прошествии этих 5 минут голос напомнит вам, что время пришло;
  • News: Базовая статусная информация: погода, новости и календарные события.
Во второй части будет рассказано об организации хранения музыкальных файлов и способах их проигрывания по всему дому, а также средствах связи.



Средняя оценка 5 при 1 голосовавших