Библиотека сайта rus-linux.net
Домотика с 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) для отправки сигналов этому приемнику. Я разделил кнопки управления на три основные группы:
- Обычные функции. Изменение громкости, выключение звука и пауза используются настолько часто, что стоит оставить их во всех режимах.
- Функции, зависящие от режима. Центральные 8 кнопок.
- Изменение режима. Меняют режим и сообщают общий статус системы.
У этого передатчика нет какого-либо индикатора. Поэтому подтверждение должно быть звуковым, чтобы пользователь понял, что действие будет выполнено и больше кнопки нажимать не надо. У себя дома я пользуюсь звуком колокольчика и звуковым синтезатором Festival. Таким образом можно прослушивать текст. Полезно оформить в речь такие вещи, как будильники, прогнозы погоды и информацию об отправлениях поездов.
Я пользуюсь программой, входящей в комплект Minerva home automation suite, эта программа называется Cosmic. Ее режимы по умолчанию:
- Multimedia: Воспроизведение CD, управление громкостью проигрывателя MP3;
- Timer: Запускаете таймер на 5 минут и по прошествии этих 5 минут голос напомнит вам, что время пришло;
- News: Базовая статусная информация: погода, новости и календарные события.