ФОРУМ КУПИТЬ

Последние статьи

ВСЕ СТАТЬИ

Применение IP Power 9212 Delux - универсальное Ethernet-устройство для управления домом

09/03/2011 22:37:59

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

Для автоматизации своего дома я применяю совершенно различные технологии. Считаю, что в этом нет ничего дурного. Любая технология, будь то CAN, 1-wire, X10 имеет свои преимущества в определенных условиях. Вместе с тем я пришел к выводу, о чем, кстати, неоднократно размышлял на страницах сайта, что правильнее будет использовать какие-то простые, распространенные, доступные стандарты и технологические решения, которые широко представлены на рынке и не зависят от решений производителя. Одним из таких стандартов бесспорно является Ethernet.

Умный дом с управлением по Ethernet. Какие существуют за и против такого подхода?

Ethernet - очень распространенный стандарт. Он очень хорошо документирован. Существует огромное количество контроллеров, микропроцессоров, отдельных чипов, готовых устройств со встроенным Ethernet. Порт Ethernet интегрируется в бытовую технику, телевизоры, плееры, ресиверы, не говоря уже о компьютерах. Минимальная скорость передачи данных составляет 10/100 Мбит/с, что более чем достаточно для любых задач домашней автоматизации. Технология Ethernet обладает хорошей помехозащищенностью и надежностью при немалой для дома длине сегментов. В технологию заложены все необходимые механизмы разрешения "коллизий", контроля целостности передачи данных. Устройства для "умной" организации сети (коммутаторы, маршрутизаторы) продаются в любом магазине практически за копейки. Фактически Ethernet сейчас является если и не главным, то одним из основных стандартов для организации высокоскоростного обмена информации между различными устройствами как дома, так и в офисе. Кроме этого, меня в технологии Ethernet интересовал не только и не столько физический уровень модели данных, сколько сетевой и транспортный. Не секрет, что Ethernet чаще всего используют вместе с протоколами TCP/IP.

Таким образом, в моем понимании Умный Дом - это не просто черная коробочка индивидуального исполнения с парой светодиодов, неизвестным или малопопулярным протоколом, закрытым программным обеспечением и фиксированными возможностями, а набор простых устройств, поддерживающих TCP/IP, SNMP, SMTP и Web-интерфейс на базе протокола HTTP, доступных для управления, программирования и контроля с любого стандартного клиента (компьютера, планшетного ПК, нетбука, коммуникатора, телефона) как по локальной сети, так и через Интернет, 3G/GPRS, Wi-Fi и т.д. При этом управлять устройствами можно как напрямую, так и посредством специального контроллера (сервера), который бы мог сделать такое управление более комфортным, включая продвинутые возможности Web-интерфейса (Ajax, Flash). Это на самом деле очень важный момент, так как в Ethernet нет понятия обязательного мастера сети и все устройства могут общаться друг с другом напрямую и остаются доступными для управления в случае каких-то неполадок с основным контроллером.

Не удивительно, что многие крупнейшие в мире компании, предлагающие системы домашней автоматизации, постепенно переводят линейки своих продуктов на технологии Ethernet и TCP/IP, так как это удобно, быстро, относительно дешево и просто. Кроме того, розетки, разъемы, кабели UTP/STP/FTP, стойки, аксессуары, коробы, инструмент - все это доступно в любой точке мира, что позволяет недорого и быстро разворачивать системы какой угодно сложности.

Топологией современных сетей на базе Ethernet является звезда. Это означает, что необходимо к каждому устройству вести свой кабель. В этом есть определенный недостаток, так как в доме с уже готовой отделкой такая автоматизация выглядит затруднительной. Но я при монтаже электропроводки и кабелей предусмотрел такое развитие событий. На каждом этаже я выделил место под шкаф и абсолютно все провода, в том числе ВВГ и NYM прокладывал звездой. К каждой розетке и выключателю вместе с электрикой я протянул витую пару. На этаж площадью 150 м2 ушло всего две бухты UTP. Зато теперь у меня есть большие возможности по коммутации всего и вся. Впрочем, иногда достаточно, чтобы Ethernet присутствовал только в силовом щитке, где можно установить устройства для коммутации освещения и других приборов, а для выключателей (датчиков контакта) использовать существующую электрическую проводку.

Мне кажется, что в доме или квартире, которая в плане часто представляет собой квадрат или прямоугольник, "шина" менее удобна, чем "звезда". Во всяком случае 1-wire я коммутировал по содержанию шиной, а по форме звездой.

Итак, первым устройством, которое вписывается в вышеизложенную концепцию, стал IP-менеджер китайского производителя Aviosys в красочной коробке и с многообещающим названием IP Power 9212 Delux.

Коробка IP Power 9212 Delux
Коробка IP Power 9212 Delux

Устройство IP Power 9212 состоит из трех блоков.

1. Network module (Base) - сетевой модуль или, проще говоря, база. Этот модуль имеет RJ-45 разъем, с помощью которого устройство соединяется с сетью Ethernet, а также RS-232 порт для сервисных нужд. На блоке присутствуют индикаторы состояния входов и выходов. Внутри стоит микропроцессор с прошивкой, который реализует основные возможности устройства и поддерживает следующие протоколы: TCP/IP, ARP, HTTP, SMTP, SNMP, NTP, PPPoE, DHCP, DNS, DDNS.

2. Input Module - модуль с 8-ю входами. Интересной особенностью модуля является возможность настройки каждого входа для работы в двух режимах: Resistance input (сухой контакт) и Voltage input. Первый режим предполагает подключение в основном выключателей, тогда как в режиме Wet (Voltage input) к входу можно подключать любые сенсоры: температурные датчики, датчики движения, датчики влажности, датчики задымленности и многое другое.

3. Output Module - модуль с 8-ю выходами. Выходы построены на основе реле, а это означает, что можно коммутировать любую нагрузку с напряжением до 250В и током до 12А (примерно 2500Вт для 220В). Реле достаточно тихие. Важным нюансом модуля является то, что 4 выхода являются нормально закрытыми, а 4 нормально открытыми. И это не настраивается! С одной стороны это увеличивает гибкость в применении модуля (особенно в системах без участия компьютера в роли головного мозга системы), но создает некоторые неудобства, когда все 8 выходов используются, например, для управления освещением.

Комплектация IP Power 9212 Delux
Комплектация IP Power 9212 Delux

Input Module и Output Module соединяются с базой посредством RS232 кабелей, идущих в комплекте. Питание устройства 5 Вольт через внешний блок питания. Таким образом, все три модуля образуют единое целое. Модули небольшие и имеют следующие габариты 122х80х27 мм. Кажется, что разделение устройства на 3 части не совсем оправдано, но на самом деле, учитывая большое количество входов и выходов, можно найти такое решение вполне удачным. Так, "слаботочную" базу можно в некоторой степени изолировать от "силовой".

Умный дом Ethernet. Лицевая часть IP Power 9212 Delux

Лицевая часть IP Power 9212 Delux

Подключение устройства не вызовет затруднений. Нужно только воткнуть сетевой кабель и питание. По умолчанию в IP Power прописан адрес 192.168.0.100. К счастью в моем доме используется как раз сеть 192.168.0.0/24, поэтому устройство я увидел сразу. Впрочем, IP-менеджер умеет получать адрес и по DHCP. Задать устройству фиксированный адрес можно с помощью программы IpEdit, работающей, конечно, только в Windows.

IP Power 9212 Delux. Вид сзади
IP Power 9212 Delux. Вид сзади

Одним из основных преимуществ устройства является то, что в нем присутствует встроенный Web-сервер. Любые настройки IP Power, а также управление выходами можно осуществлять по сети из браузера. К сожалению, китайские братья, видимо, не очень хорошо разбираются в области Web-интерфейсов и далеки от современных представлений в области HTML, CSS. Web-интерфейс устройства весьма убог и крив. Кроме того, нормально он работает ТОЛЬКО в браузере Internet Explorer. Это большое упущение разработчиков.

Умный Дом Ethernet. Управление через Web-интерфейс

Встроенный Web-интерфейс. Страшно, но бывает и хуже...

К счастью в IP Power 9212 заложен механизм взаимодействия и опроса с помощью HTTP-команд, а значит управлять входами и выходами можно автоматически, отправляя запросы с сервера. По большому счету встроенный Web-интерфейс нужен только для настройки этого девайса. Скажу лишь, что для конфигураций, где не используется сервер в качестве мозга системы, в IP Power есть возможность настроить логические взаимосвязи между изменением состояния входа и включением/выключением выхода, а также настраивать график работы выходов. Интересная функция, которая позволяет реализовывать на базе устройства любые возможности: охранные системы, управление освещением и и электроприборами, простые схемы управления отоплением или вентиляцией и многое другое.

Управление освещением по Интернет и Ethernet

Теперь несколько слов о реальном применении устройства. Напомню, что в моей системе автоматизации большую часть занимает 1-wire. С помощью 1-wire очень удобно собирать информацию о температуре. Это, пожалуй, самый дешевый и легкий способ измерения температуры. У меня в работе больше десятка датчиков DS18B20. Не хуже обстоят дела и с управлением силовым оборудованием по 1-wire. При невысокой стоимости модулей, большой максимальной протяженности линии, имеющейся возможности опроса состояния электронного ключа (в отличие, кстати, от стандартных модулей X10), достаточной скорости сети, симисторное или релейное управление оборудованием по сети 1-wire также зарекомендовало себя с хорошей стороны. Однако что касается опроса датчиков сухого контакта или попросту кнопок в сети 1-wire существует некоторые сложности. В микросетях 1-wire есть только один мастер. Все остальные элементы сети являются ведомыми, а значит не могут сгенерировать сообщение мастеру без его запроса. Это означает, что простейшую кнопку необходимо опрашивать в цикле. И чем важнее для нас быстрая реакция системы на щелчок выключателя, тем чаще нужно опрашивать ведомый элемент (DS2406, DS2413) для считывания состояния контакта. Конечно, Maxim/Dallas (производитель и разработчик 1-wire) предлагает пользователям использовать команду условного поиска, на которую отвечают только те ключи, которые зафиксировали нажатие кнопки. Это позволяет обойтись без опроса каждого элемента индивидуально. Тем не менее, частый циклический опрос сети создает дополнительный трафик и, вообще говоря, технологически выглядит как-то некрасиво.

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

А как с этим обстоят дела в менеджере IP Power 9212 Delux? В целом превосходно. Сначала о том, как удаленно управлять реле с помощью браузера или команды сервера. К сожалению, документация к IP Power 9212 Delux написана также криво, как и Web-интерфейс. Китайские братья просто забыли указать полный формат HTTP-запроса. Так, в документации написано, что для управления выходом необходимо отправить следующий HTTP запрос

http://admin:12345678@192.168.0.100/Set.cmd?CMD=setpower

Здесь admin - логин, 12345678 - пароль по умолчанию, а 192.168.0.100 - IP адрес устройства. Но как же задать номер выхода, которым мы управляем? Сюрприз!
Но ларчик открывается просто. Формат на самом деле такой

http://admin:12345678@192.168.0.100/Set.cmd?CMD=setpower+P61=1

Где P61, а точнее цифра "1" - номер выхода, "=1", значит включить, тогда как "=0" - выключить.
Из командной строки или скрипта можно использовать wget

wget -O /dev/null http://admin:12345678@192.168.0.100/Set.cmd?CMD=setpower+P61=1

или curl

curl http://admin:12345678@192.168.0.100/Set.cmd?CMD=setpower+P61=1

Несложно при необходимости написать программу для отправки таких запросов на C, PHP, Python, Perl или любом другом языке, доступном в ОС сервера.
Но если с отправкой HTTP-запросов для управления реле все предельно понятно, то как, извините, быть с отслеживанием состояния датчиков типа сухой контакт?

В документации на эту тему есть такое предложение

http://admin:1234567@192.168.0.100/Set.cmd?CMD=getio

Все это прекрасно, но, позвольте, это возвращает нас к необходимости циклического опроса состояния входов! И тут мы обнаруживаем, что устройство IP Power 9212 Delux поддерживает технологию SNMP Traps. Эта штука, грубо говоря, предполагает, что в момент срабатывания любого входа, IP-менеджер пошлет в Ethernet определенный пакет, в котором будет присутствовать идентификатор устройства, время срабатывания и номер входа.

Поймать такой SNMP Trap вроде бы несложно. На сей счет в Linux есть программа snmptrapd. Пробуем настроить его, прописав в /etc/snmp/snmptrapd.conf следующую строчку:

traphandle default /home/user/snmptrap.sh

Это будет означать, что вся декодированная из пакета информация будет передаваться скрипту snmptrap.sh для дальнейшей обработки.
Запускаем snmptrapd, нажимаем кнопку и видим... что ничего не происходит. Запускаем tcpdump и наблюдаем активность по порту 162 (SNMP), исходящую от 192.168.0.100, но snmptrapd молчит. Запускаем snmptrapd с ключем -d и пытаемся разобраться. Вот, что приходит от IP-менеджера:

Received 96 bytes from UDP: [192.168.0.100]:7878
0000: 30 81 5D 02  01 00 04 06  70 75 62 6C  69 63 A4 4B    0.].....public.K
0016: 06 07 2B 06  01 04 01 5C  0C 40 04 C0  A8 00 64 02    ..+.....@....d.
0032: 01 06 02 01  00 43 04 00  07 6C 6A 30  33 30 31 06    .....C...lj0301.
0048: 07 2B 06 01  04 01 5C 0C  04 26 32 30  31 31 30 33    .+......&201103
0064: 30 38 5F 30  38 35 37 33  35 5E 39 32  31 32 20 2D    08_085735^9212 -
0080: 2D 3E 20 49  4E 20 38 20  3D 20 4F 4E  20 20 21 21    -> IN 8 = ON  !!

А вот, что snmptrapd говорит в процессе разбора этого пакета:

dumph_recv:     VarBindList
trace: _sess_process_packet(): snmp_api.c, 5173:
sess_process_packet: parse fail 

Диагноз - кривой SNMP Trap-пакет. IP Power 9212 Delux формирует неправильные SNMP пакеты, что видно невооруженным глазом, так как в поле Variable Bindings, насколько я понимаю, содержится текстовая информация в формате, не отвечающем требованиям RFC. Если среди читателей есть знатоки SNMP, пусть поправят меня, если я в чем-то не прав. Но факт остается фактом, snmptrapd считает пакет левым и принимать такой отказывается. Кстати, я написал письмо производилю, компании Aviosys, на что они мне ответили глубоким молчанием. Жаль, а ведь продукт в целом неплохой...

Но как же быть? Не беда! Мы сделаем собственный SNMP Trap сервер и будем отлавивать пакеты самостоятельно, что, может быть, будет даже быстрее, чем прогонять информацию через несколько стандартных программ. Для реализации этой задумки я написал простейший PHP-скрипт.

<?
$socket = stream_socket_server("udp://192.168.0.250:162", $errno, $errstr, STREAM_SERVER_BIND);
if (!$socket) {
    die("$errstr ($errno)");
}

do {
    $pkt = stream_socket_recvfrom($socket, 1500, 0, $peer);
    $my_pkt = preg_replace("/.*-->s(.*)!!$/U", "$1", $pkt);
    echo $my_pkt;
} while ($pkt !== false);

?>

Собственно и все. Получая пакет, нас интересует только содержимое его последнего поля, в котором присутствует информация о сработанном входе. Мы выдергиваем эту информацию элементарным регулярным выражением. Запускаем скрипт и обнаруживаем, что он работает. Более того, информация на сервер о сработанной кнопке поступает просто мгновенно. Я провел большое количество испытаний, что позволяет мне говорить, что человеческие органы чувств не могут зафиксировать задержку между срабатыванием кнопки, определением факта ее нажатия и включением необходимого реле. Это означает, что Ethernet-устройство можно смело интегрировать в схемы управления освещением, где человеку привычен мгновенный ответ лампочки на нажатия выключателя.

В данный момент IP Power 9212 смонтирован в шкаф, где занимается управлением освещением. Все его входы и выходы зарегистрированы в общей системе управления Умным Домом. Таким образом, всегда существует возможность управлять светом непосредственно выключателем в комнате (вход типа Dry), через продвинутый Web-интерфейс Умного Дома (с любого устройства, через мобильник или Интернет), автоматическими программами/скриптами (выключаем свет, когда никого нет дома, когда долгое время не активны датчики движения, когда возникает необходимость эмитировать эффект присутствия) и на крайний случай через кривой, но все же работающий встроенный Web-интерфейс самого менеджера.

Для того, чтобы как можно меньше прибегать к использованию чудесного китайского интерфейса, а также для интеграции устройства в общую систему Умного Дома (в скрипт управления ключами key.php, со стандартным для любого оборудования интерфейсом) я написал простенькую функцию.

function ippower_get($address, $port)
{
    $port--;
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "http://$address/Set.cmd?CMD=getpower");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_USERPWD, "admin:12345678");
    curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
    $output = curl_exec($ch);
    $info = curl_getinfo($ch);
    curl_close($ch);

    $get_power_a = explode(",", $output);
    $get_power_val = explode("=", $get_power_a[$port]);
    return $get_power_val[1];
}

function ippower_set($address, $port, $val)
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "http://$address/Set.cmd?CMD=setpower+P6$port=$val");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_USERPWD, "admin:12345678");
    curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
    $output = curl_exec($ch);
    $info = curl_getinfo($ch);
    curl_close($ch);
}

Пользоваться очень просто. Из любого PHP-скрипта.

// Включить порт 7
ippower_set("192.168.0.100", 7, 0);
// Считать состояние порта 7
echo ippower_get("192.168.0.100", 7);

Обратите внимание, что IP Power Delux требует авторизации типа Basic. В связи с этим связано использование библиотеки curl как наиболее простой и удобный механизм решения этой задачи. Примечательно, что если авторизоваться один раз, устройство к себе пускает без пароля с любого компьютера до тех пор, пока кто-нибудь из клиентов не сделает logout. Вот такая вот безопасность по-китайски.

Я решил развить тему домашней автоматизации по Ethernet, поэтому изготовил свой контроллер и написал собственную прошивку. При весьма скромных аппаратных возможностях (простейший дешевый микроконтроллер всего с 1 килобайтом оперативной памяти!), мое устройство, как мне кажется, получилось гораздо более мощным и гибким с точки зрения различных сфер применения.

Автор: Andrey_B
Любое использование материалов сайта возможно только с разрешения автора и с обязательным указанием источника.



Добавить комментарий:

(необязательно, не отображается на сайте)


Сортировка комментариев: Последние сверху | Первые сверху

2011-03-14 22:53:20 | gtsx4444
Приятно читать, что вы не устаете находить все новые и новые способы автоматизации для умного дома. Занятная китайская вещица!


2011-03-17 00:06:24 | AlexL
Спасибо за интересный обзор. Надо будет попробовать взять устройство на тесты.


2011-04-05 14:06:15 | Евгений
К сожалению, цена на данное устройство - от 5 тысяч рублей. Что выбивается из первоначальной идеи - собственными силами недорогое исполнение.


2011-04-05 14:38:49 | Andrey_B
Евгений, вы правы. С одной стороны 8 входов и 8 выходов могут удовлетворить все потребности небольшой квартиры и цена в 5000 руб не является уж очень высокой, а, кроме того, на этом сайте я пытаюсь рассматривать варианты построения систем Умного Дома как на самодельных модулях, так и на готовых решениях (не все готовы вооружиться паяльником). С другой стороны аналогичное, хотя и не столь функциональное устройство можно сделать и своими руками. Статья на эту тему еще только в проекте, поскольку идет работа, но с первыми шагами можно ознакомиться на нашем форуме в теме "Умный Дом по Ethernet". Присоединяйтесь.


2011-07-29 11:12:33 | Дмитрий
Спасибо за сайт! Очень полезного для себя нашел.


2011-11-20 02:42:39 | андрей
Ардуина -$22
Сетевой шилд - $25 на китайском дилэкстриме.
Симистор с развязкой типа оптрона - 100 руб.
Можно использовать 14 входов-выходов - да еще читать аналоговые.


2011-11-20 09:35:05 | Andrey_B
Андрей, что вы этим хотели сказать?
В соседней статье написано как сделать аналог своими руками.


2012-12-07 11:03:18 | romanikq
А внутрености можно увидеть данного девайса ???


2012-12-07 12:32:36 | Andrey_B
romanikq, он у меня сейчас в работе, но как-нибудь такие фотографии сделаю.


2013-03-12 18:35:02 | Валентин
Здравствуйте! Подскажите пожалуйста каким образом, используя данное устройство, можно кроме включения(выключения) света через веб интерфейс пользоваться обычным выключателем. К примеру - выключив свет выключателем включить его через вэб. Спасибо


2013-03-13 22:34:25 | Andrey_B
Валентин, каждому входу можно сопоставить выходы (в статье даже дан скриншот). Управление через Web в любом случае возможно. Если вам нужны более сложные механизмы управления, обратите внимание на проект MegaD-328, описанный на сайте.