Пользователь
0,0
рейтинг
12 января 2012 в 13:02

«Умный дом» собственными руками. Часть 5. Технологии Х10

image

В прошлой статье мы прикрутили к нашей системе «умный дом» небольшой веб-интерфейс. Самое время обратиться к той части дела, ради которой все это и затевается — управление нагрузкой. Под нагрузкой подразумевается любое электроустройство, которым есть смысл управлять.
За подробностями реализации прошу под кат.


Небольшое вступление или что-же такое Х10


Протокол связи Х10 и основанный на нем стандарт известны миру достаточно давно. Стандарт был разработан в 1975 году компанией Pico Electronics для управления домашними электроприборами. Так в чем же его преимущество, по сравнению с протоколом 1-wire? Все дело в том, что для связи с приемниками, контроллер Х10 использует обычную электропроводку, что позволяет избежать лишних проводов и добраться до труднодоступных мест (например, кому-то не захочется портить ремонт ;)

Что внутри?


Для передачи сигналов Х10 используются «пакеты» колебаний на частоте 120 кГц длительностью 1 мс. Передача сигнала в Х10 синхронизирована с нулевым напряжением в цепи переменного тока. Когда напряжение достигает нулевого значения, приемник сигнала Х10 (например, встроенный в патрон лампочки) «слушает» сеть в течение 6 мс. Если в это время передатчик сигнала х10 посылает «пакет», приемник воспринимает его как единицу. Отсутствие «пакета» воспринимается как ноль. Каждое устройство, управляемое посредством х10, имеет свой адрес, состоящий из двух символов. Первый – код дома, второй – код устройства. Каждый из них может иметь 16 значений, а общее число различных адресов достигает 256. Код дома обозначают латинской буквой (от A до P), а код устройства – числом от 1 до 16. По электропроводке каждый код дома и устройства передается своей последовательностью нулей и единиц – двоичным кодом.

Каждая команда х10 также имеет свой двоичный код. Последний бит в двоичных кодах устройства и команды служит для различия типа кодов: 0 соответствует коду устройства, 1 – коду команды. Для того чтобы приемник знал, когда начинается передача полезного сигнала, передатчик сначала посылает так называемый стартовый код – ему соответствует последовательность 1110. За ним следует код дома, а потом – код устройства или команда. Последовательность стартового кода, кода дома и кода устройства или команды называется кадром (или фреймом) Х10. Каждый кадр передается два раза подряд – для большей надежности. Каждый информационный бит кадра, за исключением битов стартового кода, сопровождается комплементарным (дополняющим) битом – после 1 идет комплементарный 0, после 0 – единица. Таким образом, для передачи одного кадра необходимо 11 циклов переменного напряжения.

Для передачи команды Х10 нужно сначала отправить кадр с кодом устройства, которому предназначена команда, а за ним – кадр с самой командой. Исключение составляют групповые команды, например «All Units Off» – они отправляются всем устройствам, поэтому код устройства перед ними передавать не нужно.

При передаче последовательности адресов и/или команд между каждой парой кадров должен быть промежуток в три цикла переменного напряжения – то есть последовательность 000000. Например, адрес устройства и команда для него передаются двумя парами кадров с указанным промежутком. Для передачи такой последовательности необходимо 22+3+22=47 циклов напряжения. При частоте 50 Гц такая операция занимает примерно одну секунду. Пожалуй, в этом и заключается самый большой минус данной технологии по сравнению с 1-wire, где команды передаются практически мгновенно. Отмечу, что команды «Bright» («Ярче») и «Dim» («Темнее») следуют друг за другом без промежутка между кодами. Это пример передачи сигналов в однофазной сети. В трехфазных сетях передача сигнала происходит аналогично, но «приурочена» к нулю каждой фазы. X10 команды, как правило, не проходят между разными фазами. Это означает, что необходимо либо подключать все устройства на какую-то определенную фазу, либо использовать специальные устройства — репитеры, которые далеко не всегда доступны в продаже. Кроме того, репитеры вносят свою лепту в задержки, связанные с передачей команд, фактически удваивая их. Это на самом деле большая проблема, так как обычно при 3-х фазном электроснабжении стараются развести фазы так, чтобы нагрузка на них была равномерна, а значит велика вероятнось того, что одна группа розеток или комната будет запитана от первой фазы, а другая от второй.

Оборудование


Что же нужно для организации умного дома на такой технологии? Для начала, прежде всего — контроллер. Это голова всей сети Х10. Именно он посылает в сеть управляющие команды.

Контроллеры X10 различаются от чрезвычайно простых до весьма «сообразительных».
Самые простые контроллеры могут управлять четырьмя устройствами X10 с четырьмя последовательными адресами (1-4 или 5-8). Такие контроллеры обычно содержат следующие кнопки:
  • Устройство 1 On/Off
  • Устройство 2 On/Off
  • Устройство 3 On/Off
  • Устройство 4 On/Off
  • Ярче(Brighten) / Темнее(Dim) (последнее выбранное устройство)
  • Включить весь свет / Выключить все

Более «умные» контроллеры могут управлять большим количеством устройств и/или включать в себя таймеры, которые выполняют предварительно настроенные команды каждый день в заданное время. Также доступны устройства, которые используют пассивные инфракрасные датчики движения или фотоэлементы, чтобы включать и выключать освещение и другие модули.

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

Именно последний тип контроллеров нас и интересует. Небольшой сеанс гугла подсказал, что наиболее адекватной моделью в моем случае является CM11A. Выглядит сие чудо примерно так:

image

Как можно видеть, с одной стороны вставляется в обычную розетку (лучше не в фильтр), с другой — в COM-порт нашего компьютера. Для тех у кого нет COM, есть вариант контроллера с переходником USB-COM — CM11USB.
Поставляется с программкой ActiveHome, которая, впрочем, нас не интересует ;)

С контроллером разобрались, теперь перейдем к тому, чем он управляет.

Технология Х10 помогает решить самые разные задачи домашней автоматизации. Например, можно включать и выключать в заданное время свет, дистанционно изменять яркость освещения, управлять электроприборами с помощью компьютера, раздвигать шторы, включать охранную и пожарную сигнализацию и делать много других полезных вещей. Для этого разработаны различные виды устройств, поддерживающих х10. Перечислю их:
  • Исполнительные модули (приемники) – принимают и выполняют команды x10. Каждый приемник имеет адрес, состоящий из кода дома и кода устройства, например A10. Несколько приемников могут иметь тот же адрес – в этом случае они управляются одновременно. Приемниками могут быть, например, ламповые и приборные розеточные модули, настенные выключатели, светорегуляторы в ламповом патроне, приводы жалюзи, диммерные модули для управления резистивной нагрузкой
  • Трансиверы – принимают сигналы от пультов дистанционного управления (ИК или радио), преобразуют в формат x10 и передают в электросеть
  • Пульты ДУ – обеспечивают дистанционное управление устройствами X10 по ИК- или радиоканалам. Есть и универсальные пульты ДУ для управления устройствами x10 и аудио/видеоаппаратурой
  • Оборудование для повышения качества и надежности работы систем X10 – усилители и ретрансляторы сигналов, фильтры для подавления электромагнитных помех. В простых системах часто можно обойтись и без этих устройств
  • Измерительное оборудование – предназначено для измерения затухания сигналов X10

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

Стоит заметить, что на рынке есть множество исполнительных модулей, используя которые, можно решить практически любую задачу по автоматизации дома. Я же, для пробы, я взял исполнительный модуль в виде лампового патрона под названием LM15S. Модуль подкупил простотой монтажа (вкрутить, как обычную лампочку), так и относительной дешевизной. Модуль стал дополнительным отдельным источником освещения в моей люстре, когда хочется приглушенного света. Стоит отметить, что им достаточно неудобно управлять с помощью обычного выключателя.

Софт


Что же нам нужно сделать, чтобы получить возможность управления нашим модулем с помощью компьютера? Для начала, установить необходимый софт. Есть несколько систем для общения с контроллером под Linux. Я остановился на HEYU (офсайт).

Установка проста и назамысловата: скачиваем исходники, смотрим содержимое INSTALL, выполняем по инструкциям ;)

Попробуем в действии! Для начала, нам нужно задать адрес нашему модулю. Сделам это: ввернем модуль вместе с управляемой лампой в патрон. Для присвоения LM15S кода дома и кода модуля необходимо подать напряжение на модуль LM15S выключателем. Затем, в течении 30 секунд, подадим 3 команды на включение нашим контроллером на адрес, который хотим присвоить модулю:

nix@nix-boss:~$ heyu on a1
nix@nix-boss:~$ heyu on a1
nix@nix-boss:~$ heyu on a1


После этого нашему модулю присваивается адрес А1 в сети Х10. Достаточно просто.
На некоторых устройствах адрес можно выставлять с помощью джамперов. Например, на устройствах, производимых фирмой Marmitek.

Теперь мы можем управлять нашей лампой нехитрыми командами:

nix@nix-boss:~$ heyu on a1
nix@nix-boss:~$ heyu off a1

Соответственно, первая — включение лампы, вторая — выключение. Некоторые модули позволяют плавно менять освещенность:

heyu dim a5 10

Что выставит яркость лампы на 10 ступеней из 22.
С управлением разобрались, перейдем к интеграции в наше ПО.

Интегрируем Х10


Добавим в подпрограмму checkcmd() скрипта srv.pl после строк:

201	          if($text =~ /врем/)
202	          {
203	                  my $up = `uptime`;
204	                  $up =~ /(.*?) up/;
205	                  sayText("Сейчас $1");
206	                  return;
207	         }


Следующее:

208	          if($text =~ /вкл/)
209	          {
210	                  system('heyu on a1');
211	                  sayText("Лампа включена");
212	                  return;
213	         }
214
215	          if($text =~ /выкл/)
216	          {
217	                  system('heyu off a1');
218	                  sayText("Лампа выключена");
219	                  return;
220	         }


Все просто ;) Теперь, если вы можете сказать: «Система, включить лампу» или «Система, выключить лампу» и увидеть результат. Тут конечно не хватает проверки, если ламп будет много или включить можно будет не только лампу. Просто добавим еще одно условие:

208	          if($text =~ /вкл/)
209	          {
210                    system('heya on a1') if $text =~ /гостин/;
211	                  system('heyu on a2') if $text =~ /зал/;
212	                  sayText("Лампа включена");
213	                  return;
214	         }
215
216	          if($text =~ /выкл/)
217	          {
218                    system('heya off a1') if $text =~ /гостин/;
219	                  system('heyu off a2') if $text =~ /зал/;
220	                  sayText("Лампа выключена");
221	                  return;
220	         }


Тут можно добавлять и экспериментировать бесконечно. Дальше все зависит только от вашей фантазии и возможностей.

Я же хочу выразить благодарность тем, кто интересовался данными постами. Пожалуй, я описал, все что хотел. Если у кого-то возникнуть вопросы — милости прошу, постараюсь ответить всем.

Спасибо за внимание ;)
Николай Вигуро @Neuronix
карма
22,7
рейтинг 0,0
Пользователь
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое

Комментарии (46)

  • 0
    Сколько железки то стоят?
    • +1
      CM11A — порядка 3 200 руб
      LM15S — около 700 руб
      • 0
        А где покупали?
        • 0
          В «Чип и Дип», там даже наборы были. Как сейчас, не знаю.
          • +5
            Не знаю, как в СПБ, но у нас Чип и Дип продает компоненты по завышенным в 3-10 раз ценам. Потому возможно, что где-то найти можно дешевле.
            • +2
              В СПб в Чип'е тоже в 10 раз дороже всё, проверено давно.
      • 0
        дешевле bt или xbee
        • 0
          zigbee, простите.
          • 0
            zigbee — мало инфы, плохая совместимость устройств, да и в целом что-то все плюются…
            • 0
              а bt? китайские модули по $8 можно купить.
        • +1
          Если брать готовые модули, то обычный радио передатчик обойдется бакса в 2-3, ну и по бакса 3-4 за каждый приемник. bt и xbee это уже по сути промышленные дорогие решения.
  • 0
    Протокол-то, в принципе, тривиальный достаточно? Можно же и на какой-нибудь АтМеге реализовать?
    Переход через 0 отслеживать встроенным АЦП, через делитель напряжения и/или трансформатор, сигнал 120 Кгц — с любого порта через усилитель и конденсатор для развязки в сеть. Мне было бы интересно найти в инете примеры любительской реализации, без применения готовых девайсов.
    • +3
      Да пожалуйста ;)
      adm5120.narod.ru/x10.htm
    • +1
      да уж если на АтМеге то можно подумать уже о беспроводном управлении
      Для типичной квартиры хватит синезуба/wifi
      • 0
        Радиомодули денег стоят, и их на коленке не соберешь. А для X10 вся аналоговая часть — трансформатор, пара мосфетов, да горсть диодов с резисторами.
      • 0
        Да и просто включать выключать скучно.
        Надо еще и потребление тока учитывать.
        Тут как раз нужны некие автономные девайсы, небольшого размера чтоб можно было вставить вместо розетки, способные передать данные и получить команду с центрального сервера по беспроводным сетям.
        А уж на сервере уже сервис мониторинга…
        Который позволит и графики потребления рисовать, и отчетики по каждому потребителю за месяц…

        Интересно сколько будет стоить собрать это на arduino к примеру
        Останется найти некоторое реле способное выдерживать нагрузку потребителя…
        • 0
          А ну все оказывается очень просто:
          Гуглится
          «Arduino Управляем 220В нагрузкой»
          прикручиваем ethernet/wifi к нему.
          А вот потребляемый ток собирать с китайской девайсины за 700 рублей…

        • 0
          В теории — да, красиво. А на практике растянуть беспроводную сеть в здании с толстыми бетонными стенами или добротными перекрытиями будет стоить не так дешево. А еще не забываем про безопасность — все же на физическом уровне wifi доступен, а для защиты извне своей электросети достаточно поставить на входе простецкий дроссель.
          Вообще там, где можно применить проводное — надо применять проводное.
          Кстати касательно передачи данных от клиентов к серверу… может рассматриваемая технология этого и не позволяет, но вообще никаких проблем с этим быть не должно. И без всяких беспроводных выкрутасов.
          • +1
            Как в том анекдоте:
            лекция по настройке и безопасности Wifi, лектор после приветствия:
            — Если у Вас совсем-совсем нет возможности проложить витую пару, оптику, атм или фрейм релей, на худой конец, тогда вам придется воспользоваться вайфай…
      • 0
        Зачем, если провода уже проложены? Которые не чувствительны к наводкам и бетонным стенам.
  • +6
    Существует интересный во многих отношениях «наш ответ X10» — микросхема КР1446ХК1 производства «Ангстрем».
    Для передачи используется ЧМ с несущей 66-133 кГц. Так как передача не привязана к фазе напряжения в сети, а идет непрерывно, скорость значительно выше, чем в X10 — почти до 1 кбит/с.
    Но судя по отзывам, помехозащищенность оставляет желать лучшего. Сколь-нибудь значительные дальности достигаются только в лабораторных условиях, а на практике сигнал идет «до первой скрутки».
  • +1
    Мне было бы интересно читать дальше серию.
    Вот сейчас думаю, где бы найти х10 контроллер для штор на окнах — по расписанию утречком их открывать…
    • 0
      Нашёл такой: SW10
      Осталось изучить тему моторов. Навскидку гугл предложил только системы от 1000 уе за карниз.
      Нету ли здесь спецов по этому вопросу?
      • 0
        Парсер подвёл
        www.shop.i-home.ru/shop/UID_59.html
        • 0
          700 гривен, мелочь в общем. плюс контроллер.
          а я уже думал курить куда-то в сторону ардуино, но если шторы тяжелые, не все моторчики могут с такой нагрузкой справиться
          • 0
            если не очень сложно, напишите модели за 700 гривен, желательно со ссылками
            • 0
              ах, вы о SW10, но дело ведь не только в нём, но и в приводе
              я писал о том, что сами моторы/приводы очень уж дорогие на глаза попадаются
    • 0
      Веревочку от жалюзи к моторчику привязать и обвязать это драйвером так, чтобы он по аналогии со светильником ВКЛ/ВЫКЛ делал ОТКР/ЗАКР. Дальше вставить в розетку/подцепить к чему-угодно еще для удаленного управления/там же замутить таймер и сколь-угодно сложное расписание…
  • 0
    Думаю, стоило бы упомянуть про фильтры для X10, чтобы защитить свою «локальную электрическую сеть». Иначе сосед, возможно, сможет управлять вашей лампочкой при помощи своего контроллера X10 :)
    • +1
      А что про них упоминать? Они есть) Правда стоят дорого и вероятность соседа техно-маньяка с теми же адресами устройств приближается в нулю.
      • +1
        Упомянуть стоило, т.к. это важный (имхо) момент безопасность сети.

        16 адресов × 16 сегментов = 256 адресов на всю сеть. Т.е. вредный сосед достаточно быстро сможет «хакнуть» вашу лампочку. А если подключить более серьёзные приборы к X10?

        Или это я параноик? :)
        • 0
          Маньяк — маловероятно, а помехами по питанию у меня пару раз устройства включались.
  • +1
    Сегодня только в очередной раз пытаясь пересилить себя и проснуться в темноте, подумал, что нужно раздобыть будильник «Рассвет».
    А тут, оказывается, можно довольно просто сделать такой из своего компа и комнатной лампочки!

    Вообще, великолепная серия статей. Одна из самых интересных из всех, что я читал здесь за последний год.
    Автору огромное спасибо.
  • +1
    Спасибо!
    Интересная статья!
  • +1
    Это самая лучшая статья по «Умному дому» что я читал на хабре, хотелось бы продолжения, побольше разных Х10 устройств, так как мне кажется что это как раз и есть основа умного дома.
  • 0
    Очень интересно, спасибо.
    Но мне все-таки кажется, что у «Умного дома» должна быть своя сеть, хоть это и дороже. Так получается меньше зависимостей. А в случае с X10 есть зависимость от автоматов в щитке.
    • 0
      Никакого противоречия: если нет электричества, то нет и смысла управлять нагрузками. Для всяких ответственных вещей, вроде сигнализации, X10 все равно не используется.
      • 0
        Ну да, логично. Большинству датчиков и контроллеров врядли нужна максимальная выживаемость.
        Но паранойя такая паранойя 8)
  • +2
    В 1998-м году очень подробно изучал тему с управлением по x10. Все классно за исключением некоторых нюансов:
    1. Ограниченное количество устройств в одной сети. Загородный дом уже не автоматизируешь. В небольшой квартире можно использовать для экономии на проводке к лампочкам и розеткам.

    2. Ограничение на удаленность устройств. По описанию все говорят о 100 метрах, на практике метров 20 — уже проблема.

    3. Все устройства, включенные в эту сеть генерируют помехи. Особенно всякие блоки питания, пылесосы, вентиляторы, телевизоры и пр. А если ваша сеть объединена с соседями, то это вообще ужас. Процент ошибок в сигналах достигает 20%. Выглядит это так: нажимаешь выключатель, а свет не выключается. Со временем привыкаешь щелкать выключателем по нескольку раз, поскольку выхода нет и тянуть еще один кабель до лампочки не хочется.

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

    С тех пор воды утекло много, и, возможно, сейчас какое-то особенное оборудование используется, решающее эти проблемы. Просто если вы делаете ставку на эту технологию, имейте в виду, что не все так солнечно. ;)
  • 0
    Пару лет назад попробовал сделать систему на основе X10, немного по изучал и соорудил веб сервер с сайтом, своим дизайном, чтобы можно было контролировать с свет с любого компьютера и тачпада в доме и если забыл выключить свет, с улицы с телефона, вот что вышло: http://masyk.com/house/.

    Система интересна и в принципе проста в реализации, только оборудование не всегда надежное в плане включения, резкий угол стены мешает радиоволнам, как и включенный кондишн или микроволновка сигналу по проводке мешает и не всегда срабатывает с первого раза в идеальных условиях, нету по очередности (с одного пульта нажать включить первую вторую третью лампу — включится только одна, так как необходима пуза).

    Плюс: дешевизна реализации, минимум изменений в электропроводке, точнее в моем случае было ноль.
    Минус: глюки, иногда приходится пару раз нажимать кнопку включить.
  • 0
    А сколько передающих устройств может быть в сети?

    Есть ли возможность не просто отослать команду устройству, но и получить ответ об успешности её исполнения?
    • 0
      Теоретически — неограниченно.
      А вот принять статус устройства — это увы. Хотя протокол поддерживает команду STATUS, на практике это не работает. В этом еще один большой минус Х10.
      Есть дальнейшее развитие этой технологии под названием А10, но на рынке практически не представлено (я не смог найти)
  • 0
    я бы автоматизацию дома сделал так: Arduino+485 сеть+релешки и другие шилды по вкусу.
    будет совместимость с беспроводными сетями (Xbee, WiFi, BT)
    существуют счетчики (вода, газ, электро) уже с 485 сетью…
    дальность сети — до 1км по витухе. в реальности меньше — но будет достаточно даже для загородного дома.
    • 0
      почем получается «переходник» 485->220V (их ведь нужно к каждой лампочке ставить)?

      Я бы (при новом монтаже) вывел все освещение в одно место (~10 руб/метр) — а в центре комп с релюхами.
      • 0
        из вариантов купить блок розеток которые рулятся по езернету и воткнуть его в стену и дать проводку дальше на лампочки. а езернет завернуть в какой-нить атом
      • 0
        Можете оценить надежность и такой системы по сравнению с обычными выключателями? Что-то мне подсказывает, что завязать свет на комп задача красивая, но необходимость многократного резервирования этого решения для обеспечения нужной надежности сведет на нет все плюсы… Или да?

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.