вернуться на главную вернуться на главную вернуться на главную

Умный дом, пример

26.03.2015 - admin

Очередной умный дом, в трех частях.

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

image

[ http://habrahabr.ru/post/253505/ ]

 

С чего все начиналось, или Контроллер освещения


Лет 10 назад как-то совпало, что я устроился на работу разработчиком встраиваемой электроники и купил себе квартиру. Денег было мало, квартира была однокомнатной, жил я один. Хотелось чего-то такого, что, как я потом узнал, называлось «Квартира-студия». Началось увлекательное занятие, которое нельзя закончить – ремонт. А с чего начинает делать ремонт человек, который паяльник взял в руки раньше ручки? Правильно, с проводки. Захотелось, что бы свет включался с пульта от телевизора. Сказано – сделано. Потом захотелось, что бы в темное время при открытии входной двери включался свет в прихожей. Геркон в дверь, работает. Потом захотелось, чтобы дверной звонок можно было отключать. Ок, сделал. Потом захотелось, чтобы идя ночью в туалет, включалась маленькая лампочка. Ок, подключил датчик движения. Ну а раз у меня есть такой вот умный выключатель – не подключить ли его к компьютеру? Подключил. В общем, после примерно пяти итераций железа и сотен, если не тысяч итераций софта – получился такой вот контроллер освещения.

image

Что он умеет?

  • 4 канала освещения, с плавной регулировкой;
  • Реле дверного звонка, или замка;
  • Датчик открытия двери, движения, кнопка звонка;
  • Приемник ПДУ RC-5.



Контроллер освещения и отопления


Следующим этапом стал ремонт в санузле. А что самое главное в туалете и ванной? Освежитель, книга или планшет. Теплый пол. И еще есть вентилятор, и пара каналов света. И хочется, что бы ночью открыть дверь и слабый свет сам включался. А потом включался вентилятор на пару минут. Так, стоп. 4 выхода. Ага, есть же контроллер освещения! Немного его переделал, и в итоге получился контроллер освещения и теплого пола. Забегая вперед – потом он был разделен на два немного разных логически устройства – для отопления и для ванных-балконов-кухонь. В первом подключаются три датчика температуры, один в контуре управления, два просто для измерений; например, наружной температуры и, например, температуры теплоносителя. Второй же остался с одним датчиком температуры, зато обзавелся парой датчиков протечек. Вот он на фото:

image

Что он умеет?

  • 2 канала освещения, с плавной регулировкой;
  • Выход для вентилятора;
  • Выход для подключения нагревателя;
  • Реле управления мощностью обогревателей(для отопления) или исполнительного механизма защиты от протечек (для санузлов);
  • Датчик открытия двери.



Потом занялся балконом. Там тоже пара каналов света, теплый пол. Второй контроллер обзавелся братом.

Контроллер электроснабжения


Все работало, все было хорошо, пока я не поехал в отпуск… Вернулся – холодильник не работает. Вскрытие показало выгоревший варистор и предохранитель. Понятно, скачек напряжения, хорошо, что ими двумя все и ограничилось. Поменял, заработало. Но беда не приходит одна, через пару недель то же самое случилось и с кондиционером.
Надо что-то делать. Что? Правильно, контроллер для защиты электросети.

image

Что он умеет?

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



Контроллер водоснабжения и полива


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

Но тут начинается интересное – датчики давления и уровня воды, датчик влажности почвы. Промышленные стоят совсем не гуманно, поэтому решил сделать сам. Уровень воды в баке – сначала попробовал емкостный, не получился. И разные датчики, и разные схемы – никак. Ладно, попробую другой принцип, ультразвуковой, благо их в Китае много недорогих. Заработало. Заодно туда же добавил датчик влажности и температуры.

image

Давление. Где еще измеряют давление жидкостей? Ага, автомобиль! У меня выбор пал на ГАЗовский датчик давления масла. По параметрам 0-6 атм, резьба такая же как и на водопроводных стрелочных манометрах. Были сомнения насчет коррозионной стойкости – но года три уже все работает. Можно заранее менять, благо стоят они копейки. Вот он, слева от манометра. Расходомер сделал на основе обычного счетчика воды, приклеив на крыльчатку магнит, а на корпус – датчик Холла.

image

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

image

Получилось как то так (да, внешне они все одинаковые):

image

Что он умеет?

  • Выходы для насосной станции, водонагревателя и клапана набора воды в бак;
  • Выносной датчик уровня воды в баке, влажности и температуры;
  • Выносной датчик влажности и температуры почвы;
  • Два датчика давления, расходомер, контроль автоматики насосной станции;
  • 4 канала управления клапанами полива;



Контроллер RGB лент


Потом дома захотелось сделать декоративную подсветку. Купил RGB лент, а как управлять? Покупать готовое? Не мой метод, делаем контроллер интерьерной подсветки. Вот такой:

image

Что он умеет?

  • 4 ШИМ выхода для светодиодных лент, RGB + белый;
  • и больше ничего.



Шлюз RS485 — Ethernet


Все хорошо, но RS485… Куда его? Было несколько вариантов, опишу в следующей части, в итоге все свелось к еще одному контроллеру. К нему же подключил и привод въездных ворот.

image

Что он умеет?

  • 4 дискретных и 3 аналоговых входа, 2 релейных выхода.
  • Часы реального времени.
  • И самое главное – шлюз RS485 — Ethernet.

 

Подводя итоги


Хотелось бы рассказать о некоторых нюансах с моей точки зрения.

Почему RS-485, а не беспроводные интерфейсы? Почему не Wi-Fi?
Я не помню уже где, но услышал такую фразу – там, где можно проложить медь, там нужно проложить медь. Как можно заметить, для внедрения этой системы надо практически полностью переделывать проводку. Так почему бы не проложить дополнительно сигнальные провода? Что лучше — не вовремя садящиеся батарейки, забитый эфир или старая добрая медь?

Почему не ARM с линуксом, а древний 8-ми битный контроллер? Как же интернет вещей?
Все просто – принцип разумной достаточности. Зачем использовать мегабайты памяти и линукс для того что бы зажечь лампочку? Да и в любом случае силовая часть, входные цепи и прочее будут такие же точно.

Почему не сенсорные экраны, кастомные выключатели, мобильные телефоны, планшеты, голосовое управление?
Я считаю, что интерфейсы должны быть единообразны. Проснувшись ночью попить воды, я не хочу разбираться, какую из 5 кнопок мне нажать, что бы включить свет. Я хочу нажать на стандартный выключатель, попить воды и лечь спать дальше. Я не хочу каждому из приходящих, рассказывать, что надо сделать, что бы у меня дома включить свет. Одно дело с планшета настроить расписание полива или освещения, задать границы допустимого напряжения для защиты, и совсем другое – включить свет.

А как же управление через интернет?
Конечно, управление через интернет есть. Я могу откуда угодно делать что угодно в рамках реализованного в железе. Но есть одно но — все контроллеры должны быть автономны и выполнять свои базовые функции безо всякой сети, интернета и прочих серверов. Если я забыл заплатить за интернет – я не хочу остаться без света. Если у меня на даче плохая связь – я хочу просто нажав кнопку на контроллере – включить насос и бак. А расписание полива – можно настроить и потом.

------

Итак, в начале было слово был четырехканальный выключатель света, с подключенными к нему разными датчиками. Физический интерфейс — RS485. Поверх RS485 реализован упрощенный вариант MODBUS ASCII. Реализованы только функции 03 и 06, в отличие от стандарта адресация байтовых регистров начинается с нуля. Плюс к тому добавлена поддержка широковещательных посылок, ответ на которые не выдается. Ими устанавливается время, либо отключаются все выходы. Через переходник RS485 — RS232 контроллер был подключен к COM порту.

В те далекие времена смартфонов, планшетов и единообразия в браузерах не было, поэтому самый первый вариант управляющей программы был для обычного ПК. Вот такой:

Вариант 1: PC + Windows


image

Написано все было на Delphi, много кнопок, много циферок, все работает, но есть одно но – зачем мне, находясь дома, включать дома же свет через компьютер? Непонятно. Поэтому началась разработка сетевой версии. И получился:

Вариант 2: PC + Windows + интернет


Был написан небольшой сервис, который работал шлюзом между интернетом и внутренней приборной сетью. Программа была доработана для работы по сети. Все хорошо, все работает, но есть одно но – зачем постоянно с собой носить ноутбук или флешку с программой, чтобы включить дома свет? Непонятно. Поэтому дальнейшая разработка продолжилась. И получился:

Вариант 3: PC + Windows + интернет + мобильный телефон


image

В те давние времена смартфоны были большой редкостью, браузеры в мобильниках не умели практически ничего, максимум на что можно было расcчитывать – J2ME. В качестве эксперимента в серверную часть был добавлен клиент ICQ, в мобильнике тоже был установлен один из многочисленных асечных клиентов. Все работало, но каждый раз говорить «ОК, Гугл» писать на телефонной клавиатуре «Дом, включи мне свет в прихожей, и покажи состояние остальных ламп и датчиков» было не очень комфортно. Поэтому началась разработка J2ME приложения, на основных идеях которого сейчас основан один из интерфейсов. Суть состояла в том, что есть несколько закладок или экранов, каждый из которых соответствовал одному контроллеру. Все работало, все было хорошо, но появилось очередное но – прогресс не стоял на месте, браузеры из программ для показа страничек с картинками научились много чему дополнительно. А содержать параллельно три ветки – Win32, J2ME и Web – стало лень. Да и смартфоны с планшетами бодро зашагали по планете. Поэтому разработка продолжилась и вылилась в окончательный на сегодня:

Вариант 4: LAMP + интернет + Web


В клиентской части было решено не распылятся на разные технологии, а оставить только одну – HTML+JS. Благо, мобильные и десктопные браузеры научились делать многое и главное – одинаково.

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

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



Также в настройках можно задать параметры, при изменении которых сервер отправлял письмо, и заносил событие в лог. Имея базу с накопленными значениями, можно строить разные графики – температура например, или напряжение, или потребляемая мощность.

Все это работало у меня дома сначала в роутере Asus WL-500gP V2, перешитом прошивкой «от Олега и энтузиастов» на котором были установлены Lighttpd + PHP5 + MySQL. К роутеру был подключен переходник USB-RS232 и настроен ser2net. В базе хранятся настройки и логи, админка и сервисы написаны на PHP. Потом был разработан шлюз Ethernet-RS485, и все это переехало на один из облачных хостингов.

Бонус


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

Предположим, есть участок. На нем есть несколько зон освещения, например вход, дорожка, стоянка для машины. Отдельно – калитка с электрозамком, и въездные ворота с электроприводом. Есть гараж, чтобы не размениваться по мелочам – два этажа, по две зоны освещения на каждом, и с раздельным отоплением. Есть видеонаблюдение и интернет.

На первом этаже установлены:

image

Сверху – контроллер освещения и отопления 1 этажа, УЗО и автомат с независимым расцепителем. Второй ряд – контроллер защиты электросети с реле на 100А, снизу – 12В блок питания и контроллер освещения на участке. В самом низу – двухканальный приемник, который через контроллер освещения позволяет находясь на улице включить свет на входе и открыть замок калитки.

На втором этаже:

image

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

Датчики температуры внутри помещения и температуры теплоносителя (воздуха из конвектора в данном случае):

image

На чердаке – кондиционер, видеорекордеры, роутеры, антенны, моде и прочее:

image

Все это благополучно проработало зиму, пришла весна, а за ней и лето. А летом что главное? Мангал, беседка и полив. Была выкопана яма, в ней разведена водопроводная арматура:

image

Слева – фильтр, датчик давления на входе, датчик расхода воды. В центре – датчик протечки, справа – два клапана полива, редуктор понижения давления и датчик давления после редуктора. Установлены два контроллера – освещения беседки и водоснабжения. В самой беседке две зоны – декоративная подсветка и основной свет:

image

В ящике сверху – контроллер освещения беседки, в центре – блок питания 24В для клапанов и контроллер водоснабжения.

Получилось как то так – второй этаж гаража и беседка:

image

Между ямой и остальными контроллерами – примерно 15 метров, стена из 30см газобетона и 10см перекрытия ямы из армированной стяжки. Беспроводные датчики и выключатели? Нет, спасибо. Протянут силовой кабель 3х4 и сигнальный 4х0,22, подключены в силовой щиток – и все, свет есть, полив есть, все управляется и показывает состояния датчиков. Как по мне – никаких проблем ни с масштабируемостью, ни с отсутствием беспроводных технологий.

[ http://habrahabr.ru/post/253505/ ]