Автоматизированные системы управления для дома. Как сделать умный дом своими руками arduino, knx

Основная причина того что системы домашней автоматизации всё ещё не стали так популярны это акцент на освещении, который обычно делают при их продвижении. Ведь мигать светом (как светодиодами на Ардуине) не вставая с дивана это баловство, которое не имеет никакого практического значения и отталкивает людей от серьёзных мыслях о внедрении и использовании систем домашней автоматизации у себя в домах и квартирах. Мигать светом (на что обычно заточено 90% функционала) никому не нужно а вот например управлять отоплением индивидуально в каждой комнате это удобно и экономит энергию=деньги. Заоблачные цены на сами (копеечные по себестоимости) компоненты готовых продающихся систем домашней автоматизации вместе с ценами на интеграцию их только подливают масла в огонь. Спешу заверить что самым дорогим компонентом у нас будет 20 долларовая Arduino Megа. Если рассматривать вопрос в целом то мне видится только следующий список задач которые имеет практический смысл централизованно автоматизировать:
> управление климатом температурой (отопление/кондиционирование) и влажностью (увлажнитель/осушитель),
> управление естественным освещением (жалюзи, ставни, навесы)
> и управление поливом газонов, цветников и лужаек вокруг дома (если таковые имеются и их таки надо поливать).
Из децентрализованных систем удобно иметь локальную (без центрального управления 1-2 датчика управляющие напрямую включением подсветки) срабатывающую от датчиков движения(присутствия) маломощную светодиодную подсветку лестниц (иногда пола) и частей столов на кухне которые затенены от обычного потолочного освещения навесными шкафами и полками. Эта же подсветка в комбинации с перечисленными выше незаменима ночью когда надо, не разбудив никого и в первую очередь себя, пробраться на кухню (и отрезать там что-то от чего-то и съесть ни с кем не делясь) или в другое заведение не спотыкнувшись об предусмотрительно разбросанные детские игрушки. Также имеет смысл включать датчиками движения основное освещение ТОЛЬКО в технических помещениях: шкафы, кладовки, гараж, прачечные и тп. Датчики движения и централизованные системы не практично использовать для основного освещения в жилых помещениях. Внешняя и декоративное праздничная подсветка дома удобнее всего включается от копеечных готовых блоков с датчиками освещения и/или таймерами. Настоящие охранные системы подключённые к службам реагирования (не просто разбросанные по дому датчики и веб камеры) обычно не имеет смысла смешивать с системами умного дома из многих соображений.

Таким образом начнём с самого актуального. Идеальным объектом является отопление которым можно управлять например: электрическое(батареи на колёсиках в розетку и настенные батареи) и централизованное или не очень отоплением частного дома. В моём примере мы рассмотрим работу с системой Термо Помпы (Heat Pump в северной Америке) с мазутным отоплением по средствам прямого подключения к имеющемуся Блоку Управления (термостату) и дополнительно устройствами. В первой версии системы я использовал устройтва и разетки протокола Х10. Но к сожалению они плохо зарекомендовали себя, изза медленного интерфейса и очень громких счелков при переключении, котрые будили всех домашних. В последствии я перевйл систему на радио разетки, что оказалось гораздо проще и тише чем x10. Эти разетки имеются в огромном асортименте радиочастот и напряжения. Всё это, применимо для огромного множества других систем. Всё началось с того что мой приятель вместе с соседом ненавязчиво капали мне на голову про огромную роль чуда чудного - Arduino в современном обществе и что я как человек умеющий и любящий держать паяльник просто обязан заразиться этой Ардуино манией как можно скорее. Я всячески отмахивался и говорил что область практического (не робото-игрушки) применения её дома очень сомнительна и делать на основе мощного микроконтроллера последовательно загорающиеся светодиодные линейки для подсветки ступенек лестницы (вместо одного сдвигового регистра и генератора) это просто из пушки по воробьям а остальное баловство. Но всё-таки зерно Arduino им удалось заложить в мою голову и как все зёрна с приходом весны и на подступах лета росток начал пробиваться. Я не люблю хобби проекты ради самих проектов. Какая-то практическая сторона должна присутствовать а тем более что ресурсо ($ и время) ёмкие проекты для семейного человека должны ещё иметь высокийWAF (Wife acceptance factor) или как говорит мой Папа его легко легализовать.

И как всегда лень явилась двигателем прогресса. Сидели мы чуть позже полудня на веранде, солнце приятно припекало а в тоже время в спальне на верхнем этаже спал сынишка и судя по китайскому термометру за 2 доллара (до которого надо было ещё дойти и посмотреть не разбудив сына) температура была за 26. Значит надо теперь идти в гостиную и включать центральный кондиционер, а потом надо его ещё и выключать чтобы он не включался каждый раз когда температура немного подымится. Особенно это неприятно делать летом ночью, замёрзнув под лёгким одеялом надо вскакивать и опять же не перебудив всех домочадцев бежать в гостиную к пульту и вырубать это достижение прошлого века. Тут то я и смекнул что пора прекратить такое безобразие и звонить другу со словами "Где там твоя хвалёная Ардунья, Давай её сюда щас мы посмотрим на что она способна!". Сразу скажу что совсем не выбирал именно её и не думал что она окажется такая никчёмная(например в работе со строками) и даже от злости и бессилия бороться с ней дальше чуть не переехал посреди проекта на STM32. В конечном итоге всё-таки остался с ней, но обо всём по порядку.

Чтобы проще было понять почему всё сделано так и как Вам намазать на хлеб мой опыт и наработки, начнём с описания того что есть/было у меня под рукой:
1) Частный дом в Канаде (хотелось бы сказать что он мой, но конечно же он принадлежит банку и как бы это абсурдно не звучало но иметь его полностью выплаченным при текущих ставках даже не выгодно) 1959 года постройки как тут их называют Split Level те дом двух этажный но половина его сдвинута вертикально относительно другой половины на пол этажа.
2) Arduino Uno (в последствии изза малого числа Вх/Вых для X10 и радио потребовалась Mega)
3) дорогой и родной Ethernet Shild. Что-то запустить и найти адекватную библиотеку для ENC28J60 мне так и не удалось
4) Желание, время и немного денег.
Как здесь принято, спальни находятся на верхнем этаже и для меня получается это на пол этажа выше гостиной где и находится прикрученный к стене зловещий пульт управления системой отопления охлаждения. Тут такие систем называются HVAC (heating, ventilation, and air conditioning) на самом же деле это обычный огромный (десятки тысяч BTU или они их тут в тоннах чего то меряют) сплит кондиционер внешний теплообменник и компрессор которого находятся на улице а внутри теплообменник встроен в систему центрального вентилирования, которая полтора кило ватным вентилятором забирает воздух с уровня пола гостиной прогоняет через два теплообменника (один до кондиционера другой от мазутной или газовой горелки) и по системе коробов гонит в каждую комнату. Удобство и собственно само название тепловой насос вызвано тем что этот аппарат может гонять фреон в обе стороны и соответственно не только охлаждать но и нагревать воздух в доме. Надо заметить что нагревать он его может более менее эффективно только если на улице достаточно тепло больше 0 или -5 (зависит от модели и конструкции). Если же холодно то тепловой насос работать не будет и для этого как раз то и нужен бак с мазутом или газ.

Я начал свой проект и амбиции с малого, так давайте и мы разберём как же сделан этот HVAC и как им управлять. На поверку оказывается не так страшен чёрт. Одним из удобств является жидкая стандартизация всего домашнего и не очень в Америке это позволяет скрещать ежей с ужами по открытому, простому (иногда слишком) и общеизвестному (как правило древнему, кондовому) протоколу/стандарту. В нашем случае саму систему (вентилятор горелки теплообменники можно купить одного производителя кондиционер второго, увлажнитель у третьего а Блок Управления всем этим у четвёртого. Честно говоря не знаю также ли называются/управляются подобные устройства в Европе, но думаю что всё либо слизано либо очень похоже. Насколько я понял такие системы уже есть в России и возят их откуда попало/дешевле, так что у вас есть большие шансы столкнуться именно с такой системой. Давайте посмотрим на схему типичного подключения системы до того как мы начнём врезаться в систему.

Как мы видим почти всё понятно с первого взгляда. Единственное что надо пояснить что БУ питается и сам тепло насос управляется переменными 24 вольтами. которые подаются с входного трансформатора R и С. Линия С это общая и всегда соединена. Соответственно при подаче R(замыкании) на Y, O, W или G включается соотв. блок. От этого и будем отталкиваться. Значит если они включают то чем хуже мы? Сделаем так что наша новая система будет дополнять уже имеющуюся. Те управление можно осуществлять со старого пульта и контроллера как и раньше, но только когда надо, Arduino может отключить старую систему от управления и взять борозды в свои руки и потом отдать их обратно.Ставим релюшки.


Причем ставим их так чтобы без питания и вообще отключенные они сохраняли прежнюю конструкцию. R-0 отключает стандартный модуль управления и передаёт управление нашему Ардуину. R-1-4 подают нужное напряжение на соответствующую линию. Это управляющее напряжение R подаётся на каждое реле зелёным проводом. Управлять конечно хорошо, но система серьёзная и если мы случайно или не очень что-то не так включим или в неправильной комбинации. Например теплообменник будет греться а вентилятор не будет гонять воздух и отводить тепло с него, он может перегреться и привести к возникновению пожара, а нам это совсем не зачем. Во избежание подобных ситуаций давайте сделаем тройную защиту. И так первым бастионом будут сенсоры напряжения на каждой линии S1-4 (те их должно быть 4ре).


Они представляют из себя диод два резистора(делитель) и маленький электролит. Это может быть навесная сборка как на фотографии. В результате мы можем в Ардуине знать есть ли на самом деле на каждой из линий управления напряжение или нет. Соответственное если текущее состояние линий управления (Y, O, W, G) не соответствует тому что должно быть мы выводим код ошибки и отключаем систему. Следующим бастионом является наш дополнительный датчик температуры в камере теплообменника (plenum sensor). Если там слишком горячо или холодно (близко к 0С) то мы опять же выводим код и отключаем систему. Очевидно что запитывать реле напрямую от выходов ардуины нельзя поэтому надо либо громоздить по транзистору на каждое реле или купить готовый модуль с несколькими реле и транзисторами на одной плате. 99% компонентов я покупаю на ибее. Например на ибее полно таких 8 канальных модулей (8 Channel Electronic Relay Module) примерно по 9$. или же можно купить 4+2 (так как на самом деле нам надо всего 5 и одно запасное)

В качестве датчиков температуры и влажности я использовал китайские цифровые DHT22 которые неплохо зарекомендовали себя. Им надо всего три провода +5, GNd и Data. Провода могут быть достаточно длинными без потери точности и сигнала. Один датчик выкидывается на улицу в тень и под навес от прямого попадания влаги. Один датчик в доме.
В уже построенном много лет назад доме обычно самая большая проблема это провести новые провода, поэтому я старался по максимуму использовать текущую проводку. Для DHT22 есть несколько библиотек. У меня были проблемы со всеми кроме этой . Я поставил внутренний DHT22 рядом с настенным пультом управления. Если В вашем доме как и в моём когда-то стояла система управления HVAC то у вас должно быть аж 6 жильный кабель идущий от БУ к месту где висит сам пульт с индикатором и кнопками. Современные пульты (как мой) требуют всего 2х проводов. Таким образом у нас в распоряжении получается 4 уже проложенных провода. В них мы запускаем +5V, GND, Data для внутреннего DHT22 и на последний Serial(UART) Tx с Ардуины для вывода информации на дисплей.

В качестве дисплея я использовал маленький (2.5 см) OLED экранчик с серийным интерфейсом .
ДА он немного дороговат, но есть несколько уникальных отличия от подобных доступных: Наличие Serial(UART) интерфейса, что позволяет использовать всего один провод для его подключения, наличие пяти цифровых выводов на контроллере экрана (куда мы подключим RGB светодиод для дополнительного отображения состояния системы) и наконец компактность в сочетании с контрастом и отличной читаемости как при ярком свете так и ночью и он не освещает весь коридор ночью как любой ЖК с постоянной включённой подсветкой.

Далее встала проблема как поместить в каждую комнату, без дополнительных проводов, питания и радио модулей датчики температуры. В качестве датчика я выбрал цифровой DS18B20, (имея хорошую точность +- 0.5C) которому надо всего два провода (земля и сигнал). Их можно на эти 2 провода вешать много параллельно (каждый имеет свой уникальный MAC адрес). Но даже протянуть два провода во всем комнатам это адский труд. У тут меня осенило. Ведь по всем комнатам проложен телефонный кабель и он 4х жильный и в лучшем случае используется 2 жилы для телефона (как правило красный и зелёный) а остальные (жёлтый и черный) проходят по всем нужным мне местам и остаются свободными. Таким образом не разрезая провода а лишь оголив нужные два я подпаял к ним в каждой комнате по DS18B20.
Общая длинна проводов получилась достаточно большая и если сигнальный провод подпирать (на +5В) рекомендуемыми 4.7 кОм, то в моём случае датчики практически не читались и я сократил подпирающее сопротивление вдвое до 2.3 кОм и всё прекрасно заработало.

Потом я заморочился датчиком давление и остановился на недешёвом BMP085 зато он имеет I2C интерфейс, что опять же экономит ножки и количество проводов. Так как он ещё может читать температуру eго я поставил в подвале, куда было ближе и проще всего тянуть новые провода (аж 4). Я старался по максимуму использовать стандартные телефонные кабели и разъемы(RJ11) чтобы конструкция была разбираемой и ремонтно - замено пригодной.
При подключении этого барометра на туже I2C шину что и RTC (модуль энергонезависимых часов) возникли не очень понятные проблемы. Они мешали друг другу и пока я не поставил небольшую задержку перед чтением барометра работало всё не стабильно. Так как коротко временное отключение электричества не такая уж редкость да и модуль RTC стоит копейки я добавил его для энергонезависимого времени. в основном нужного при использовании х10. Используя его возникло желание автоматически синхронизовать его с NTP через интернет (раз уж он у нас есть), но у меня что-то не получилось скрестить webduino сервер и NTP. В итоге NTP время (Unix epoch) посылается на Arduino (и обновляется RTC) каждый раз при изменении каких либо настроек или режимов в web интерфейсе. Что имеет свои недостатки так как оно берётся JavaScript из времени на текущем компьютере или мобильном устройстве и не всегда точное и в правильной временной зоне.

Команды моим радио розеткамс Ардуины в эфир я посылаю с помощью копеечного (2$) передатчика модуля. Их прудом пруди на ибее (поиск «RF transmitter 315 Mhz..») и в любом магазине. Единственное надо правильно выбрать радио частоту соответветствующую вашим разеткам. К сожалению мои разетки не корректно поддерживались стандартной библиотекой RCswitch. в описании библиотеки есть список поддерживаемых чипов , но не стоит расстраиваться если ваш не в списке, у меня заработало после анализа эфира в ручную и без библиотеки. Про подобнве разетки, работы с библиотекой много написано. В частности cдесь: http://habrahabr.ru/post/213425 http://habrahabr.ru/post/212215 Я использовал 110В розетки
. Несмотря на то что управление радио требует нестандарного решения, оно является самым простым и бюджетным решением стоящей задачи. A именно включать и выключать электрические батареи или любой другой прибор (не обязательно резистивный) по времени или в ручную и иногда включать- выключать наружный свет. Insteon, Zwave и другие имеют много подчас не нужных дополнительных функций но на порядок дороже и имеют проблемы с открытостью интерфейса для того чтобы Ардуино могла посылать устройствам простые команды. Единственная проблема с розетками x10, Insteon и другими это то что они очень громко щёлкают во время переключения. Особенно это раздражает тихой ночью. Ещё один нюанс: x10 был заточен и популярен в северной америке и соответственно под 110 Вольт. Тут каждый выбирает для себя сам. Либо платить много за:
Z-Wave - розеток готовых нет, есть странной формы модули реле которые также но по тише щёлкают и их куда-то, как-то в стены надо прятать, потом замурованные, непонятно как их обслуживать – менять/чинить. Зато появились USB модули для посылки команд. Но для этого ещё нужен микрокомпьютер (возможно роутер подойдёт) с правильной OS драйверами и тд;
Insteon - розетки есть, но также противно щёлкают как x10 и насколько я понял открытого модуля для посылки команд нет и система опять-же заточена под 110В;
Вам решать заморачиваться с интеграцией и посылкой команд в эту сеть или платить меньше в 5-10 раз за каждое радио устройство и при необходимости подтачивать код под него. Как и любая другая вещь всё для 110В стоит дешевле. Конечно есть ещё экстремальные пути, как например описанная несколькими авторами тут, идея опутать всю квартиру (дом) парой (а на поверку пучком) молоточных проводов и собирая каждое управляющее и управляемое устройство с нуля в ручную использовать 1-Wire протокол. Некоторые пошли ещё дальше и разрабатывают свои протоколы…

Также я как кайтер прикрутил анемометр (датчик скорости ветра). Для её измерения я использовал имевшийся под руками чашечный датчик с герконом замыкающим 1 кОм между двумя контактами при вращении чашечек. В программе используется прерывание и замеряется количество раз +5В подаётся(переход из 0 в 1) на цифровой вход (подпряжённый 5 кОм ами на теже +5В). Данное значение умножается на подходящий для вашего датчика коэффициент и из количества замыканий за одну секунду получается скорость ветра в узлах. Также за каждый час меряется максимальное и минимальное значения скорости (порывы) и отображается максимальное за час. В веб отдаются текущее и максимальное. Каждый датчик надо калибровать индивидуально и подбирать правильный коэффициент. Для управления гаражной дверью я использовал запасной радио пульт от неё и с помощью дополнительного реле (шестого) эмулировал нажатие кнопки на пульте (вскрыв пульт и подпаявшить в контактам кнопки).

Протокол общения стандартного БУ термопомпы с её пультом (обычно 2 провода) как правило закрытый и наша ардуина не может знать какой режим и настройки выставлены в стандартном блоке управления, но с помощью наших сенсоров мы можем знать в каком режиме сейчас HVAC и хотя у них тоже есть датчик температуры в теплообменнике дополнительная защита с помощью Ардуины не помешает. Меня часто спрашивают: А не страшно ли мне доверять Ардуине управление такой ответственной системой с своём то доме? Мой код открытый и прозрачный. Я понимаю что происходит и всегда могу отловить и исправить неточность (если такие остались после полугода пользования системой). И самое главное я могу добавлять любые функции которые мне потребуются. В той-же коробочке скорее всего менее мощный контроллер и конечно нечего уже поменять и добавить нельзя. Без ардуины добавление опять же ограниченных функций как доступ из интернета к стандартному БУ стоит новой коробочки сотен долларов. Всё началось не с того что я хотел сэкономить а мне нужны были удобные для меня функции которые не за какие деньги не купить у производителей оборудования. Но конечно если взять в расчёт цену человеко часов затраченных мной, да и даже вами если вы просто решите сделать подобное на базе моих и других наработок, на этот проект то конечно дешевле купить готовое но попрощаться с гибкостью и нужными функциями. Это примерно как поставить FreeBSD и кропотливо долго и по каждому поводу копаться в барахолке знаний интернета и в ручную из командной строки подкручивать её под себя в сравнении Mac OS, красивой готовой но ограниченной на базе той же BSD. Основная из них это включение обогрева/охлаждения до нужной температуры не навечно или по расписанию а всего лишь на час-2-4. Звучит просто и удобно но никак не присутствует в стандартных БУ.

Если вы хотите управлять только термонасосом без RF, RTC, барометра и прочих заморочек памяти и ног хватит и у Uno(я так и сделал в первой фазе своего проекта). В полной же версии без Mega не обойтись. Давайте посмотрим на получаемые функции и интерфейс.

Сам интерфейс сделан в рамках всего одной html странички с использованием технологии Ajax для обмена данными с Arduino web server (webduino) и основана на библиотеках JQuery Mobile. Поэтому для работы нужны несколько файлов картинок и сами библиотеки, которые могут быть заменены ссылками.

В верхнем левом углу, мы видим луну, это значит что по настройкам дня и ночи (в первой строке синего блока) сейчас ночной режим. Если дневной режим там будет солнышко. Дальше мы видим наш домик. В домике куча температур в каждой комнате и в центре температура с десятыми, это температура в гостиной на основном уровне. Зелёным внизу домика мы видим относительную влажность внутри дома. Справа от неё снежинка, это индикатор того что сейчас работает кондиционер. На этом месте отображается разными иконками остальные режимы работы (отопление термопомпой или AUX или же х10). Если иконка приглушена (полупрозрачная) значит система в этом режиме но не активна. Т.е. например в режиме кондиционирования до температуры 21 градус, но так как сейчас 20 градусов кондиционер не активен. Если одновременно работают два режима, например отопление х10 и отопление термопомпой, то будут последовательно мигать две иконки. Слева и справа у домика мы видим лучики, при нажатии на которые они становятся яркими и при последующем нажатии опять приглушаются. Это включение внешнего освещения у дома. У меня есть внешний свет на заднем дворе и впереди дома. Управление передаётся по х10 и номера соответствующих устройств прописаны в html(JS) коде, Ардуина лишь посылает команды на переданные ей из HTML номера устройств. Справа домика мы видим автоматическую гаражную дверь. которая открывается и закрывается при нажатии на неё. Сверху справа от домика мы видим текущую (усреднённую за 1-2 минуты) или максимальную за час скорость ветра в узлах. Значение скорости ветра подсвечивается разными цветами от голубого до красного в зависимость от скорости и в соответствии с международно принятыми цветами шкалы Бофорта. Справа сверху мы видим температуру на улице и ниже текущее атмосферное давление. Розовым фоном для значения давления служит график его относительного изменения за последние 24 часа (x-время, у- относительное значение давления). Под давлением зелёным относительная влажность на улице.

Теперь рассмотрим группу белых селектов и кнопку SET. Левым селектом выбирается нужная температура/режим. Правым на какое время включать этот режим. Если режим активный то надписи немного поменяется, как в этом примере
Если активен режим отопления то дополнительно кнопка подкрасится красным а если охлаждения голубым. Чтобы выключить надо оставить температуру и выбранный режим слева и оставшиеся минуты справа и тогда кнопка SET поменяется на OFF и её нажатие выключит режим. Режим охлаждения или отопления выбирается автоматически в зависимости от температуры на улице. Если на улице меньше чем значение константы heat_temp описанной в html(JS) файле, то будет предлагаться только отопление иначе только охлаждение.

Теперь давайте рассмотрим синий х10 блок. Нажатие на первую строку открывает общие настройки: ON - Все Розетки Всегда Включены (например летом), OFF все розетки всегда выключены (например если вы в отпуске), Split - в силу вступают индивидуальные настройки групп и комнат. Далее вы можете выбрать с какого часа начинается день и с какого ночь. Для сохранения настроек не забывайте нажать кнопку Apply внизу. далее каждая строка отражает группу комнат которая может состоять из одной и более комнат. Я сделал группировку по этажам в своём доме. На некоторых этажах только одна комната а на некоторых больше. У каждой группы мы можем установить режим ON - все розетки этой группы всегда включены, OFF все розетки этой группы всегда выключены (например вам надо включить пылесос и если одновременно будет работать батарея то выбьет предохранитель), Split(доступно только для групп с более чем одной комнатой)- в силу вступают индивидуальные настройки комнат внутри группы, Day - поддерживать указанную температуру только днём (ночью всегда выключено), Day&Night - поддерживать указанную температуру для дня и другую температуру ночью. У каждой комнаты доступно всё вышеперечисленное за исключение Split. Для вступления изменений в силу не забывайте нажать Apply внизу.

Самой последней строчкой является установки режима Override. Этот режим был сделан для принудительного включения розеток в выбранной комнате или светильника на некоторое время. Например вам надо нагреть максимально комнату на некоторый период для того чтобы ребёнку делать там массаж и через час продолжить поддерживать обычную температуру в ней. Или включать свет на улице на пол часа. Слева вы выбираете комнату справа на сколько включать режим и нажимаете кнопку Overrride. Если вам надо досрочно отключить режим справа выбирайте OFF и жмите Override. Вся информация обновляется каждые upd_interval (константа из html файла) секунд. По умолчания = 60 секунд. Когда информация обновляется вся верхняя часть странички с домиком моргает.

Ещё хотелось бы рассказать о концепции объединения розеток (pool). Допустим у вас одна большая комната обогреть которую в в -5 за бортом одна батарея не в состоянии или нагреваться она будет ооочень долго. Вы можете поставить вторую RF розетку с тем же кодом/адресом и вторую батарею воткнуть в неё и они обе всегда будут включаться. Что при относительно теплой температуре приведёт к частому щёлканью и включению и выключению этих двух и более батарей. Есть и другой вариант вы объединяете эти батареи в pool в коде ардуины x10pools={0,0,0,0,0,12,0,0,13,0,0,0,0,0,0,0,0}. Ноль значит отсутствия пула у данного адреса розетки число значит адрес дочерней розетки пула. Дочерняя включается если на улице холоднее чем poolt (константа из html файла) или разрыв между нужной температурой в комнате и текущей больше чем delta_temp * poolf (константы из html файла). Хотелось бы сказать больше о delta_temp (константа из html файла) это Делта температуры. Она нужна для того чтобы режимы часто не включались не выключались так как показания датчиков могут немного скакать +-. Обогрев включается если текущая температура меньше чем (нужная - delta_temp) и выключается если больше (нужная + delta_temp). По умолчанию это 0.5 Град С.

Теперь рассмотрим вопрос безопасности. Конечно нельзя оставлять доступным для всех управление вашим домом. Так как наша система состоит из клиента(JS Ajax html страничка) и сервера (Arduino) вы можете организовать различные уровни безопасности. Например вы можете положить HTML страничку на свой компьютер, телефон планшет и тд. (не выставляя её на публичный хостинг) и тогда только вы(с устройств обладающих этим файлом) сможете открывать эту панель управления своими домашними системами. Arduino web server весит на внутреннем IP и поэтому если вы его не зафорвардите на роутере во внешний мир, то к самой ардуине можно будет достучаться только из вашей внутренней сети. Доступ к самой HTML страничке можно запаролить на Web сервере где вы её захотели выложить. Также модно поднять HTTPS сервер в отношении её. Самым простым и по моему мнению достаточно надёжным является публичный хостинг странички, но сама страничка при запуске никуда не подсоединяется если ей параметром не передать адрес сервера Arduino (предварительно настроенным Dinamic DNS и Port Foewarding). Выглядит это так в браузере вводится такая ссылка http://myhosting.com/index.html?http://myhome.slyip.net:8081/hvac. Если злоумышленник и случайно наткнётся на вашу клиентскую страничку то ничего он с ней сделать не сможет не зная адреса Arduino сервера. Это самый простой и удобный компромиссный вариант, которым я сейчас пользуюсь. Да мне тоже вся эта конструкция с убогим (медленный не поддерживающий HTTPS и тд) Arduino Web Shield сервером в дополнение к которому ещё надо где-то отдельно хостить клиентскую страничку с иконки НЕ нравится. И как только я получу из китая знаменитый TP-LINK TL-WR703N
роутер который в мгновения ока превращается в wifi bridged web сервер с Serial(UART) интерфейсом к Arduine, я сразу же прикручу его к ардуине (или её к нему) и выкину это шилд и изернет провод. Таким образом получится даже больше того что я хотел так безуспешно добиться от STM32 контроллера а именно чтобы всё было в одном устройстве (не отдельно захощенная страничка клиента и отдельно исполнительный сервер) и нормальным веб сервером на котором можно реализовать достойную степень удобства скорости и безопасности.






B на последок

chouck 4 декабря 2012 в 18:16

От домашней автоматизации и умных домов в общем к конкретному примеру

  • DIY или Сделай сам

Основная причина того что системы домашней автоматизации всё ещё не стали так популярны это акцент на освещении, который обычно делают при их продвижении. Ведь мигать светом (как светодиодами на Ардуине) не вставая с дивана это баловство, которое не имеет никакого практического значения и отталкивает людей от серьёзных мыслях о внедрении и использовании систем домашней автоматизации у себя в домах и квартирах. Мигать светом (на что обычно заточено 90% функционала) никому не нужно а вот например управлять отоплением индивидуально в каждой комнате это удобно и экономит энергию=деньги. Заоблачные цены на сами (копеечные по себестоимости) компоненты готовых продающихся систем домашней автоматизации вместе с ценами на интеграцию их только подливают масла в огонь. Спешу заверить что самым дорогим компонентом у нас будет 20 долларовая Arduino Megа. Если рассматривать вопрос в целом то мне видится только следующий список задач которые имеет практический смысл централизованно автоматизировать:
> управление климатом температурой (отопление/кондиционирование) и влажностью (увлажнитель/осушитель),
> управление естественным освещением (жалюзи, ставни, навесы)
> и управление поливом газонов, цветников и лужаек вокруг дома (если таковые имеются и их таки надо поливать).
Из децентрализованных систем удобно иметь локальную (без центрального управления 1-2 датчика управляющие напрямую включением подсветки) срабатывающую от датчиков движения(присутствия) маломощную светодиодную подсветку лестниц (иногда пола) и частей столов на кухне которые затенены от обычного потолочного освещения навесными шкафами и полками. Эта же подсветка в комбинации с перечисленными выше незаменима ночью когда надо, не разбудив никого и в первую очередь себя, пробраться на кухню (и отрезать там что-то от чего-то и съесть ни с кем не делясь) или в другое заведение не спотыкнувшись об предусмотрительно разбросанные детские игрушки. Также имеет смысл включать датчиками движения основное освещение ТОЛЬКО в технических помещениях: шкафы, кладовки, гараж, прачечные и тп. Датчики движения и централизованные системы не практично использовать для основного освещения в жилых помещениях. Внешняя и декоративное праздничная подсветка дома удобнее всего включается от копеечных готовых блоков с датчиками освещения и/или таймерами. Настоящие охранные системы подключённые к службам реагирования (не просто разбросанные по дому датчики и веб камеры) обычно не имеет смысла смешивать с системами умного дома из многих соображений.

Таким образом начнём с самого актуального. Идеальным объектом является отопление которым можно управлять например: электрическое(батареи на колёсиках в розетку и настенные батареи) и централизованное или не очень отоплением частного дома. В моём примере мы рассмотрим работу с системой Термо Помпы (Heat Pump в северной Америке) с мазутным отоплением по средствам прямого подключения к имеющемуся Блоку Управления (термостату) и дополнительно устройствами. В первой версии системы я использовал устройтва и разетки протокола Х10. Но к сожалению они плохо зарекомендовали себя, изза медленного интерфейса и очень громких счелков при переключении, котрые будили всех домашних. В последствии я перевйл систему на радио разетки, что оказалось гораздо проще и тише чем x10. Эти разетки имеются в огромном асортименте радиочастот и напряжения. Всё это, применимо для огромного множества других систем. Всё началось с того что мой приятель вместе с соседом ненавязчиво капали мне на голову про огромную роль чуда чудного - Arduino в современном обществе и что я как человек умеющий и любящий держать паяльник просто обязан заразиться этой Ардуино манией как можно скорее. Я всячески отмахивался и говорил что область практического (не робото-игрушки) применения её дома очень сомнительна и делать на основе мощного микроконтроллера последовательно загорающиеся светодиодные линейки для подсветки ступенек лестницы (вместо одного сдвигового регистра и генератора) это просто из пушки по воробьям а остальное баловство. Но всё-таки зерно Arduino им удалось заложить в мою голову и как все зёрна с приходом весны и на подступах лета росток начал пробиваться. Я не люблю хобби проекты ради самих проектов. Какая-то практическая сторона должна присутствовать а тем более что ресурсо ($ и время) ёмкие проекты для семейного человека должны ещё иметь высокийWAF (Wife acceptance factor) или как говорит мой Папа его легко легализовать.

И как всегда лень явилась двигателем прогресса. Сидели мы чуть позже полудня на веранде, солнце приятно припекало а в тоже время в спальне на верхнем этаже спал сынишка и судя по китайскому термометру за 2 доллара (до которого надо было ещё дойти и посмотреть не разбудив сына) температура была за 26. Значит надо теперь идти в гостиную и включать центральный кондиционер, а потом надо его ещё и выключать чтобы он не включался каждый раз когда температура немного подымится. Особенно это неприятно делать летом ночью, замёрзнув под лёгким одеялом надо вскакивать и опять же не перебудив всех домочадцев бежать в гостиную к пульту и вырубать это достижение прошлого века. Тут то я и смекнул что пора прекратить такое безобразие и звонить другу со словами "Где там твоя хвалёная Ардунья, Давай её сюда щас мы посмотрим на что она способна!". Сразу скажу что совсем не выбирал именно её и не думал что она окажется такая никчёмная(например в работе со строками) и даже от злости и бессилия бороться с ней дальше чуть не переехал посреди проекта на STM32. В конечном итоге всё-таки остался с ней, но обо всём по порядку.

Чтобы проще было понять почему всё сделано так и как Вам намазать на хлеб мой опыт и наработки, начнём с описания того что есть/было у меня под рукой:
1) Частный дом в Канаде (хотелось бы сказать что он мой, но конечно же он принадлежит банку и как бы это абсурдно не звучало но иметь его полностью выплаченным при текущих ставках даже не выгодно) 1959 года постройки как тут их называют Split Level те дом двух этажный но половина его сдвинута вертикально относительно другой половины на пол этажа.
2) Arduino Uno (в последствии изза малого числа Вх/Вых для X10 и радио потребовалась Mega)
3) дорогой и родной Ethernet Shild. Что-то запустить и найти адекватную библиотеку для ENC28J60 мне так и не удалось
4) Желание, время и немного денег.
Как здесь принято, спальни находятся на верхнем этаже и для меня получается это на пол этажа выше гостиной где и находится прикрученный к стене зловещий пульт управления системой отопления охлаждения. Тут такие систем называются HVAC (heating, ventilation, and air conditioning) на самом же деле это обычный огромный (десятки тысяч BTU или они их тут в тоннах чего то меряют) сплит кондиционер внешний теплообменник и компрессор которого находятся на улице а внутри теплообменник встроен в систему центрального вентилирования, которая полтора кило ватным вентилятором забирает воздух с уровня пола гостиной прогоняет через два теплообменника (один до кондиционера другой от мазутной или газовой горелки) и по системе коробов гонит в каждую комнату. Удобство и собственно само название тепловой насос вызвано тем что этот аппарат может гонять фреон в обе стороны и соответственно не только охлаждать но и нагревать воздух в доме. Надо заметить что нагревать он его может более менее эффективно только если на улице достаточно тепло больше 0 или -5 (зависит от модели и конструкции). Если же холодно то тепловой насос работать не будет и для этого как раз то и нужен бак с мазутом или газ.

Я начал свой проект и амбиции с малого, так давайте и мы разберём как же сделан этот HVAC и как им управлять. На поверку оказывается не так страшен чёрт. Одним из удобств является жидкая стандартизация всего домашнего и не очень в Америке это позволяет скрещать ежей с ужами по открытому, простому (иногда слишком) и общеизвестному (как правило древнему, кондовому) протоколу/стандарту. В нашем случае саму систему (вентилятор горелки теплообменники можно купить одного производителя кондиционер второго, увлажнитель у третьего а Блок Управления всем этим у четвёртого. Честно говоря не знаю также ли называются/управляются подобные устройства в Европе, но думаю что всё либо слизано либо очень похоже. Насколько я понял такие системы уже есть в России и возят их откуда попало/дешевле, так что у вас есть большие шансы столкнуться именно с такой системой. Давайте посмотрим на схему типичного подключения системы до того как мы начнём врезаться в систему.

Как мы видим почти всё понятно с первого взгляда. Единственное что надо пояснить что БУ питается и сам тепло насос управляется переменными 24 вольтами. которые подаются с входного трансформатора R и С. Линия С это общая и всегда соединена. Соответственно при подаче R(замыкании) на Y, O, W или G включается соотв. блок. От этого и будем отталкиваться. Значит если они включают то чем хуже мы? Сделаем так что наша новая система будет дополнять уже имеющуюся. Те управление можно осуществлять со старого пульта и контроллера как и раньше, но только когда надо, Arduino может отключить старую систему от управления и взять борозды в свои руки и потом отдать их обратно.Ставим релюшки.


Причем ставим их так чтобы без питания и вообще отключенные они сохраняли прежнюю конструкцию. R-0 отключает стандартный модуль управления и передаёт управление нашему Ардуину. R-1-4 подают нужное напряжение на соответствующую линию. Это управляющее напряжение R подаётся на каждое реле зелёным проводом. Управлять конечно хорошо, но система серьёзная и если мы случайно или не очень что-то не так включим или в неправильной комбинации. Например теплообменник будет греться а вентилятор не будет гонять воздух и отводить тепло с него, он может перегреться и привести к возникновению пожара, а нам это совсем не зачем. Во избежание подобных ситуаций давайте сделаем тройную защиту. И так первым бастионом будут сенсоры напряжения на каждой линии S1-4 (те их должно быть 4ре).


Они представляют из себя диод два резистора(делитель) и маленький электролит. Это может быть навесная сборка как на фотографии. В результате мы можем в Ардуине знать есть ли на самом деле на каждой из линий управления напряжение или нет. Соответственное если текущее состояние линий управления (Y, O, W, G) не соответствует тому что должно быть мы выводим код ошибки и отключаем систему. Следующим бастионом является наш дополнительный датчик температуры в камере теплообменника (plenum sensor). Если там слишком горячо или холодно (близко к 0С) то мы опять же выводим код и отключаем систему. Очевидно что запитывать реле напрямую от выходов ардуины нельзя поэтому надо либо громоздить по транзистору на каждое реле или купить готовый модуль с несколькими реле и транзисторами на одной плате. 99% компонентов я покупаю на ибее. Например на ибее полно таких 8 канальных модулей (8 Channel Electronic Relay Module) примерно по 9$. или же можно купить 4+2 (так как на самом деле нам надо всего 5 и одно запасное)

В качестве датчиков температуры и влажности я использовал китайские цифровые DHT22 которые неплохо зарекомендовали себя. Им надо всего три провода +5, GNd и Data. Провода могут быть достаточно длинными без потери точности и сигнала. Один датчик выкидывается на улицу в тень и под навес от прямого попадания влаги. Один датчик в доме.
В уже построенном много лет назад доме обычно самая большая проблема это провести новые провода, поэтому я старался по максимуму использовать текущую проводку. Для DHT22 есть несколько библиотек. У меня были проблемы со всеми кроме этой . Я поставил внутренний DHT22 рядом с настенным пультом управления. Если В вашем доме как и в моём когда-то стояла система управления HVAC то у вас должно быть аж 6 жильный кабель идущий от БУ к месту где висит сам пульт с индикатором и кнопками. Современные пульты (как мой) требуют всего 2х проводов. Таким образом у нас в распоряжении получается 4 уже проложенных провода. В них мы запускаем +5V, GND, Data для внутреннего DHT22 и на последний Serial(UART) Tx с Ардуины для вывода информации на дисплей.

В качестве дисплея я использовал маленький (2.5 см) OLED экранчик с серийным интерфейсом .
ДА он немного дороговат, но есть несколько уникальных отличия от подобных доступных: Наличие Serial(UART) интерфейса, что позволяет использовать всего один провод для его подключения, наличие пяти цифровых выводов на контроллере экрана (куда мы подключим RGB светодиод для дополнительного отображения состояния системы) и наконец компактность в сочетании с контрастом и отличной читаемости как при ярком свете так и ночью и он не освещает весь коридор ночью как любой ЖК с постоянной включённой подсветкой.

Далее встала проблема как поместить в каждую комнату, без дополнительных проводов, питания и радио модулей датчики температуры. В качестве датчика я выбрал цифровой DS18B20, (имея хорошую точность +- 0.5C) которому надо всего два провода (земля и сигнал). Их можно на эти 2 провода вешать много параллельно (каждый имеет свой уникальный MAC адрес). Но даже протянуть два провода во всем комнатам это адский труд. У тут меня осенило. Ведь по всем комнатам проложен телефонный кабель и он 4х жильный и в лучшем случае используется 2 жилы для телефона (как правило красный и зелёный) а остальные (жёлтый и черный) проходят по всем нужным мне местам и остаются свободными. Таким образом не разрезая провода а лишь оголив нужные два я подпаял к ним в каждой комнате по DS18B20.
Общая длинна проводов получилась достаточно большая и если сигнальный провод подпирать (на +5В) рекомендуемыми 4.7 кОм, то в моём случае датчики практически не читались и я сократил подпирающее сопротивление вдвое до 2.3 кОм и всё прекрасно заработало.

Потом я заморочился датчиком давление и остановился на недешёвом BMP085 зато он имеет I2C интерфейс, что опять же экономит ножки и количество проводов. Так как он ещё может читать температуру eго я поставил в подвале, куда было ближе и проще всего тянуть новые провода (аж 4). Я старался по максимуму использовать стандартные телефонные кабели и разъемы(RJ11) чтобы конструкция была разбираемой и ремонтно - замено пригодной.
При подключении этого барометра на туже I2C шину что и RTC (модуль энергонезависимых часов) возникли не очень понятные проблемы. Они мешали друг другу и пока я не поставил небольшую задержку перед чтением барометра работало всё не стабильно. Так как коротко временное отключение электричества не такая уж редкость да и модуль RTC стоит копейки я добавил его для энергонезависимого времени. в основном нужного при использовании х10. Используя его возникло желание автоматически синхронизовать его с NTP через интернет (раз уж он у нас есть), но у меня что-то не получилось скрестить webduino сервер и NTP. В итоге NTP время (Unix epoch) посылается на Arduino (и обновляется RTC) каждый раз при изменении каких либо настроек или режимов в web интерфейсе. Что имеет свои недостатки так как оно берётся JavaScript из времени на текущем компьютере или мобильном устройстве и не всегда точное и в правильной временной зоне.

Команды моим радио розеткамс Ардуины в эфир я посылаю с помощью копеечного (2$) передатчика модуля. Их прудом пруди на ибее (поиск «RF transmitter 315 Mhz..») и в любом магазине. Единственное надо правильно выбрать радио частоту соответветствующую вашим разеткам. К сожалению мои разетки не корректно поддерживались стандартной библиотекой RCswitch. в описании библиотеки есть список поддерживаемых чипов , но не стоит расстраиваться если ваш не в списке, у меня заработало после анализа эфира в ручную и без библиотеки. Про подобнве разетки, работы с библиотекой много написано. В частности cдесь: http://habrahabr.ru/post/213425 http://habrahabr.ru/post/212215 Я использовал 110В розетки
. Несмотря на то что управление радио требует нестандарного решения, оно является самым простым и бюджетным решением стоящей задачи. A именно включать и выключать электрические батареи или любой другой прибор (не обязательно резистивный) по времени или в ручную и иногда включать- выключать наружный свет. Insteon, Zwave и другие имеют много подчас не нужных дополнительных функций но на порядок дороже и имеют проблемы с открытостью интерфейса для того чтобы Ардуино могла посылать устройствам простые команды. Единственная проблема с розетками x10, Insteon и другими это то что они очень громко щёлкают во время переключения. Особенно это раздражает тихой ночью. Ещё один нюанс: x10 был заточен и популярен в северной америке и соответственно под 110 Вольт. Тут каждый выбирает для себя сам. Либо платить много за:
Z-Wave - розеток готовых нет, есть странной формы модули реле которые также но по тише щёлкают и их куда-то, как-то в стены надо прятать, потом замурованные, непонятно как их обслуживать – менять/чинить. Зато появились USB модули для посылки команд. Но для этого ещё нужен микрокомпьютер (возможно роутер подойдёт) с правильной OS драйверами и тд;
Insteon - розетки есть, но также противно щёлкают как x10 и насколько я понял открытого модуля для посылки команд нет и система опять-же заточена под 110В;
Вам решать заморачиваться с интеграцией и посылкой команд в эту сеть или платить меньше в 5-10 раз за каждое радио устройство и при необходимости подтачивать код под него. Как и любая другая вещь всё для 110В стоит дешевле. Конечно есть ещё экстремальные пути, как например описанная несколькими авторами тут, идея опутать всю квартиру (дом) парой (а на поверку пучком) молоточных проводов и собирая каждое управляющее и управляемое устройство с нуля в ручную использовать 1-Wire протокол. Некоторые пошли ещё дальше и разрабатывают свои протоколы…

Также я как кайтер прикрутил анемометр (датчик скорости ветра). Для её измерения я использовал имевшийся под руками чашечный датчик с герконом замыкающим 1 кОм между двумя контактами при вращении чашечек. В программе используется прерывание и замеряется количество раз +5В подаётся(переход из 0 в 1) на цифровой вход (подпряжённый 5 кОм ами на теже +5В). Данное значение умножается на подходящий для вашего датчика коэффициент и из количества замыканий за одну секунду получается скорость ветра в узлах. Также за каждый час меряется максимальное и минимальное значения скорости (порывы) и отображается максимальное за час. В веб отдаются текущее и максимальное. Каждый датчик надо калибровать индивидуально и подбирать правильный коэффициент. Для управления гаражной дверью я использовал запасной радио пульт от неё и с помощью дополнительного реле (шестого) эмулировал нажатие кнопки на пульте (вскрыв пульт и подпаявшить в контактам кнопки).

Протокол общения стандартного БУ термопомпы с её пультом (обычно 2 провода) как правило закрытый и наша ардуина не может знать какой режим и настройки выставлены в стандартном блоке управления, но с помощью наших сенсоров мы можем знать в каком режиме сейчас HVAC и хотя у них тоже есть датчик температуры в теплообменнике дополнительная защита с помощью Ардуины не помешает. Меня часто спрашивают: А не страшно ли мне доверять Ардуине управление такой ответственной системой с своём то доме? Мой код открытый и прозрачный. Я понимаю что происходит и всегда могу отловить и исправить неточность (если такие остались после полугода пользования системой). И самое главное я могу добавлять любые функции которые мне потребуются. В той-же коробочке скорее всего менее мощный контроллер и конечно нечего уже поменять и добавить нельзя. Без ардуины добавление опять же ограниченных функций как доступ из интернета к стандартному БУ стоит новой коробочки сотен долларов. Всё началось не с того что я хотел сэкономить а мне нужны были удобные для меня функции которые не за какие деньги не купить у производителей оборудования. Но конечно если взять в расчёт цену человеко часов затраченных мной, да и даже вами если вы просто решите сделать подобное на базе моих и других наработок, на этот проект то конечно дешевле купить готовое но попрощаться с гибкостью и нужными функциями. Это примерно как поставить FreeBSD и кропотливо долго и по каждому поводу копаться в барахолке знаний интернета и в ручную из командной строки подкручивать её под себя в сравнении Mac OS, красивой готовой но ограниченной на базе той же BSD. Основная из них это включение обогрева/охлаждения до нужной температуры не навечно или по расписанию а всего лишь на час-2-4. Звучит просто и удобно но никак не присутствует в стандартных БУ.

Если вы хотите управлять только термонасосом без RF, RTC, барометра и прочих заморочек памяти и ног хватит и у Uno(я так и сделал в первой фазе своего проекта). В полной же версии без Mega не обойтись. Давайте посмотрим на получаемые функции и интерфейс.

Сам интерфейс сделан в рамках всего одной html странички с использованием технологии Ajax для обмена данными с Arduino web server (webduino) и основана на библиотеках JQuery Mobile. Поэтому для работы нужны несколько файлов картинок и сами библиотеки, которые могут быть заменены ссылками.

В верхнем левом углу, мы видим луну, это значит что по настройкам дня и ночи (в первой строке синего блока) сейчас ночной режим. Если дневной режим там будет солнышко. Дальше мы видим наш домик. В домике куча температур в каждой комнате и в центре температура с десятыми, это температура в гостиной на основном уровне. Зелёным внизу домика мы видим относительную влажность внутри дома. Справа от неё снежинка, это индикатор того что сейчас работает кондиционер. На этом месте отображается разными иконками остальные режимы работы (отопление термопомпой или AUX или же х10). Если иконка приглушена (полупрозрачная) значит система в этом режиме но не активна. Т.е. например в режиме кондиционирования до температуры 21 градус, но так как сейчас 20 градусов кондиционер не активен. Если одновременно работают два режима, например отопление х10 и отопление термопомпой, то будут последовательно мигать две иконки. Слева и справа у домика мы видим лучики, при нажатии на которые они становятся яркими и при последующем нажатии опять приглушаются. Это включение внешнего освещения у дома. У меня есть внешний свет на заднем дворе и впереди дома. Управление передаётся по х10 и номера соответствующих устройств прописаны в html(JS) коде, Ардуина лишь посылает команды на переданные ей из HTML номера устройств. Справа домика мы видим автоматическую гаражную дверь. которая открывается и закрывается при нажатии на неё. Сверху справа от домика мы видим текущую (усреднённую за 1-2 минуты) или максимальную за час скорость ветра в узлах. Значение скорости ветра подсвечивается разными цветами от голубого до красного в зависимость от скорости и в соответствии с международно принятыми цветами шкалы Бофорта. Справа сверху мы видим температуру на улице и ниже текущее атмосферное давление. Розовым фоном для значения давления служит график его относительного изменения за последние 24 часа (x-время, у- относительное значение давления). Под давлением зелёным относительная влажность на улице.

Теперь рассмотрим группу белых селектов и кнопку SET. Левым селектом выбирается нужная температура/режим. Правым на какое время включать этот режим. Если режим активный то надписи немного поменяется, как в этом примере
Если активен режим отопления то дополнительно кнопка подкрасится красным а если охлаждения голубым. Чтобы выключить надо оставить температуру и выбранный режим слева и оставшиеся минуты справа и тогда кнопка SET поменяется на OFF и её нажатие выключит режим. Режим охлаждения или отопления выбирается автоматически в зависимости от температуры на улице. Если на улице меньше чем значение константы heat_temp описанной в html(JS) файле, то будет предлагаться только отопление иначе только охлаждение.

Теперь давайте рассмотрим синий х10 блок. Нажатие на первую строку открывает общие настройки: ON - Все Розетки Всегда Включены (например летом), OFF все розетки всегда выключены (например если вы в отпуске), Split - в силу вступают индивидуальные настройки групп и комнат. Далее вы можете выбрать с какого часа начинается день и с какого ночь. Для сохранения настроек не забывайте нажать кнопку Apply внизу. далее каждая строка отражает группу комнат которая может состоять из одной и более комнат. Я сделал группировку по этажам в своём доме. На некоторых этажах только одна комната а на некоторых больше. У каждой группы мы можем установить режим ON - все розетки этой группы всегда включены, OFF все розетки этой группы всегда выключены (например вам надо включить пылесос и если одновременно будет работать батарея то выбьет предохранитель), Split(доступно только для групп с более чем одной комнатой)- в силу вступают индивидуальные настройки комнат внутри группы, Day - поддерживать указанную температуру только днём (ночью всегда выключено), Day&Night - поддерживать указанную температуру для дня и другую температуру ночью. У каждой комнаты доступно всё вышеперечисленное за исключение Split. Для вступления изменений в силу не забывайте нажать Apply внизу.

Самой последней строчкой является установки режима Override. Этот режим был сделан для принудительного включения розеток в выбранной комнате или светильника на некоторое время. Например вам надо нагреть максимально комнату на некоторый период для того чтобы ребёнку делать там массаж и через час продолжить поддерживать обычную температуру в ней. Или включать свет на улице на пол часа. Слева вы выбираете комнату справа на сколько включать режим и нажимаете кнопку Overrride. Если вам надо досрочно отключить режим справа выбирайте OFF и жмите Override. Вся информация обновляется каждые upd_interval (константа из html файла) секунд. По умолчания = 60 секунд. Когда информация обновляется вся верхняя часть странички с домиком моргает.

Ещё хотелось бы рассказать о концепции объединения розеток (pool). Допустим у вас одна большая комната обогреть которую в в -5 за бортом одна батарея не в состоянии или нагреваться она будет ооочень долго. Вы можете поставить вторую RF розетку с тем же кодом/адресом и вторую батарею воткнуть в неё и они обе всегда будут включаться. Что при относительно теплой температуре приведёт к частому щёлканью и включению и выключению этих двух и более батарей. Есть и другой вариант вы объединяете эти батареи в pool в коде ардуины x10pools={0,0,0,0,0,12,0,0,13,0,0,0,0,0,0,0,0}. Ноль значит отсутствия пула у данного адреса розетки число значит адрес дочерней розетки пула. Дочерняя включается если на улице холоднее чем poolt (константа из html файла) или разрыв между нужной температурой в комнате и текущей больше чем delta_temp * poolf (константы из html файла). Хотелось бы сказать больше о delta_temp (константа из html файла) это Делта температуры. Она нужна для того чтобы режимы часто не включались не выключались так как показания датчиков могут немного скакать +-. Обогрев включается если текущая температура меньше чем (нужная - delta_temp) и выключается если больше (нужная + delta_temp). По умолчанию это 0.5 Град С.

Теперь рассмотрим вопрос безопасности. Конечно нельзя оставлять доступным для всех управление вашим домом. Так как наша система состоит из клиента(JS Ajax html страничка) и сервера (Arduino) вы можете организовать различные уровни безопасности. Например вы можете положить HTML страничку на свой компьютер, телефон планшет и тд. (не выставляя её на публичный хостинг) и тогда только вы(с устройств обладающих этим файлом) сможете открывать эту панель управления своими домашними системами. Arduino web server весит на внутреннем IP и поэтому если вы его не зафорвардите на роутере во внешний мир, то к самой ардуине можно будет достучаться только из вашей внутренней сети. Доступ к самой HTML страничке можно запаролить на Web сервере где вы её захотели выложить. Также модно поднять HTTPS сервер в отношении её. Самым простым и по моему мнению достаточно надёжным является публичный хостинг странички, но сама страничка при запуске никуда не подсоединяется если ей параметром не передать адрес сервера Arduino (предварительно настроенным Dinamic DNS и Port Foewarding). Выглядит это так в браузере вводится такая ссылка http://myhosting.com/index.html?http://myhome.slyip.net:8081/hvac. Если злоумышленник и случайно наткнётся на вашу клиентскую страничку то ничего он с ней сделать не сможет не зная адреса Arduino сервера. Это самый простой и удобный компромиссный вариант, которым я сейчас пользуюсь. Да мне тоже вся эта конструкция с убогим (медленный не поддерживающий HTTPS и тд) Arduino Web Shield сервером в дополнение к которому ещё надо где-то отдельно хостить клиентскую страничку с иконки НЕ нравится. И как только я получу из китая знаменитый TP-LINK TL-WR703N
роутер который в мгновения ока превращается в wifi bridged web сервер с Serial(UART) интерфейсом к Arduine, я сразу же прикручу его к ардуине (или её к нему) и выкину это шилд и изернет провод. Таким образом получится даже больше того что я хотел так безуспешно добиться от STM32 контроллера а именно чтобы всё было в одном устройстве (не отдельно захощенная страничка клиента и отдельно исполнительный сервер) и нормальным веб сервером на котором можно реализовать достойную степень удобства скорости и безопасности.






B на последок

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

Умный дом – что это

Умный дом – это домашняя автоматика, которая является жилым расширением автоматизации зданий. Главная автоматизация может включать централизованное управление освещением, ОВК (отопление, вентиляция и кондиционирование воздуха), бытовую технику, открывать замки ворот, дверей, GSM и других систем, чтобы обеспечить улучшенное удобство, комфорт, энергоэффективность и безопасность. Нужно отметить, что для некоторых категорий населения (пожилых людей, инвалидов) это мероприятие может стать необходимым.

Фото – Умный дом идеи распределения
Фото – Простой умный дом

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

Домашняя автоматика относится к использованию компьютерных и информационных технологий для управления бытовой техникой и их функциями. Она может варьироваться от простого дистанционного управления освещением до сложных сетей на базе компьютера/микро-контроллера с разной степенью интеллекта и автоматизации. Домашняя автоматика преимущественно должна быть максимально простой.


Фото – Умный дверной замок

Достоинства использования «умного дома» в квартире на базе PIC или WAVE:

  1. Экономичный расход времени на ежедневную настройку разнообразных механизмов, прием звонков, рассылку почты;
  2. Использование газообразных или жидких топливных материалов, а позже использование электричества, позволило увеличить автоматизацию в системах отопления, уменьшая рабочую силу, необходимую, для ручной дозаправки обогревателя и печи.
  3. Развитие термостатов позволило настроить более автоматизированное управление отопление, а позже охлаждение;
  4. Так часто осуществляется охрана промышленных объектов, жилых помещений;
  5. По мере увеличения числа управляемых устройств в доме поднимается их взаимосвязь. Например, печь может отправлять уведомления, когда он нуждается в чистке, или холодильник, когда он нуждается в обслуживании.
  6. В простых установках, smart может включать свет, когда человек входит в комнату. Также в зависимости от времени суток, телевизор может настраиваться на нужные каналы, выставлять температуру воздуха, освещение.

Умный дом может предоставить интерфейс-доступ к бытовой технике или автоматизации, чтобы обеспечить контроль и мониторинг на Вашем смартфоне, через сервер, мини Smart для iPhone, iPod touch, а также при помощи переносного компьютера (необходим специальный soft: AVR Studio).


Фото – Контроль дома через планшет

Видео: система Schneider Electric умного дома

Элементы умного дома

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


Фото – Схема управления дома

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

Освещение

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

Фото – Схема умного дома

Аудио-визуальная

  • Эффект присутствия дистанционного управления (Это самая современная технология, которая применяется для увеличения безопасности). Заключается в зажигании света, музыкальном сопровождении.
  • Имитация присутствия
  • Регулирование температуры
  • Регулировка яркости (электросветильники, уличное освещение)
  • Безопасность (сигнализация, жалюзи).

Как сделать умный дом

Интеллектуальную систему можно сделать своими руками, самый бюджетный вариант – это настройка контроля освещения в доме или включения компьютера.


Фото – Вариант управления умным домом

Чтобы сделать лампу, которая будет «сама» загораться, к ней понадобится подключить специальное оборудование. Есть несколько вариантов решения это задачи:

  1. Установить акустическое реле (1 или x10-wire);
  2. Присоединить диммер;
  3. Подключить датчик движения.

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


Фото – Концепция умного дома

Еще один «умный» бесшумный вариант – это диммер. Здесь Вам понадобится прикоснуться к лампе, в зависимости от количества прикосновений, говорящий прибор будет менять яркость. Это очень удобно использовать на лампе в спальне, детской.

Чтобы настроить контроль и регулирование температуры, нам понадобится многоканальная система. Центральная схема контроля температуры и влажности состоит из:

  • Датчиков (ds1820), которые измеряют физическое состояние жидкости, воздуха.
  • Контроллеров (rfm12), которые могут быть простыми физическими компонентами и сложными устройствами специального назначения или встроенных компьютеров.
  • Приводов люнекса, которые реагируют на сигналы контроллеров.

Самый современный способ – это купить все составляющие умного дома, провода, термостаты. После установить приборы в каждой комнате, по терморегулятору на радиатор и один на котел. Также понадобится управляемый блок, или «мозг» всей системы. Его рекомендуется смонтировать на входной трубе отопления.


Фото – Система умного дома

Наиболее просто осуществляется монтаж системы видеонаблюдения и сигнализации. Принципиальные положения установки систем безопасности:

  1. Нужно подключить датчики на окнах, дверных проемах, там электрика будет самой продуктивной;
  2. Сложнее всего подбирается плата, от неё зависит контроллер умного дома, работа посредственных деталей, уровень сигналов;
  3. Многие специалисты считают, что монтировать индикаторы нужно на уровне пола. Где-то см 20 от плинтуса, это повышает эффективность;
  4. Желательно установить постоянный мониторинг, установить цифровую систему контакта со службой охраны. Часто ответственными хозяевами устанавливается специальная программа к себе на персональный компьютер, которая позволяет контролировать работу системы из любой точки, где есть интернет (так советует поступить Елена Тесля и её книга: «Умный дом: как сделать своими руками», также там есть и другие решения). Можно подключить sms-оповещения.

Умный дом – это очень удобный способ сделать свою жизнь проще, часто целая система покупается полностью (Arduino, KNX, Linux).

Стоимость каждой системы индивидуальна. Самые популярные марки следующие: beckhoff, gira, lpt, redeye, Smart Switch IOT screen, teleco. Мы рекомендуем, перед тем, как построить такое жилье, посоветоваться со специалистами, они помогут вычислить уровень нагрузки, рассчитать потребляемую мощность.


Фото – Управление светом через телефон

Чтобы почерпнуть идеи, можно пролистать В.Н.Гололобов «Умный дом» своими руками, DJVU или PDF, бесплатно посмотреть у нас фото и видео- инструкции, прочитать советы известных мастеров.

13.04.2010, ВТ, 18:04, Мск

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

Практически всех интересует безопасность, комфорт и экономичность постоянного места жительства. В любой квартире это важно, хотя они могут быть весьма разными - от эконом- и до элит-класса. Это и разные площади, и стоимости. А значит, и требования к автоматизации объектов будут существенно различаться. Хотя стоимость проектов комплексной автоматизации пока субъективно высока, стоит вспомнить, сколько стоили первые обычные ПК или сотовые телефоны, и посмотреть на эти "чуда" техники теперь. Цены уменьшились в десятки раз.

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

Выключатель - "выключить все"

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

Где устанавливать кнопку с такой функцией? Там, где удобно жильцам. Таких кнопок может быть и несколько. Например, установив кнопку у изголовья постели, можно спокойно "выключать все" на ночь.

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

Защита от протечек

Можно только позавидовать тем, кто не переживал потопа, когда надо все бросать и пытаться быстро отключить воду, потом собирать ее в таз или ведро, долго все сушить, менять паркет и договариваться с ниже живущими соседями о "добровольной" компенсации ущерба. Сейчас есть способы успешного предотвращения последствий таких ЧП. Как правило, простейшая квартирная система для предотвращения протечек состоит из датчиков чувствительных к воде, контроллера (блока управления) и двух электромагнитных клапанов или шаровых кранов с электроприводами для перекрытия подачи воды. Датчики устанавливаются в местах наиболее вероятного и быстрого скопления воды при возникновении протечки, а клапаны монтируются на отводах в квартиру от стояков - на холодную и горячую воду.

Принцип функционирования системы прост: при попадании воды на датчик автоматически закрываются клапаны, и дальнейшее поступление воды прекращается. Одновременно подается аварийный звуковой сигнал. Существуют датчики различного типа, в том числе и беспроводные (радио). Однако они не умеют определять, какую воду надо перекрывать - холодную или горячую, поэтому перекрывается обычно все. Аварийный сигнал может быть подан не только непосредственно из места аварии, но также и на центральную панель. Или даже в любую точку - если это сигнал по SMS. Убирать воду придется все равно вручную и только после устранения причин аварии включать ее подачу (открывать клапаны). Это обычно делается специальной кнопкой.

При попадании воды на датчик автоматически закрываются клапаны, и дальнейшее поступление воды прекращается

Разумеется, клапаны можно подключить и к кнопке "выключить все", тогда, например, при отъезде на несколько дачных дней можно обезопасить квартиру не только от пожара, но и от возможного потопа.

Есть несколько российских производителей, которые успешно продвигают подобные системы. Вот только они стоят далеко не в каждом "умном" доме. Примерная минимальная стоимость набора - 8000-10000 руб. При этом стоимость "чистой" автоматики в виде контроллера 1500-2000 руб., т.е. около 20%. Остальное приходится на датчики и краны.

Вызов лифта из квартиры

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

Система полива растений

Представьте, что на каждом подоконнике, где растут комнатные растения, есть автоматическая и компактная система их полива. От общего резервуара к земле в горшках идут тонкие трубочки, которые на концах имеют датчики влажности. Общий принцип прост и понятен. Стала сухой земля - подается в горшок требуемое количество воды, дальше пауза в 2-3 дня, потом опять полив, если требуется. Может быть и более простой вариант - полив по недельному расписанию. Специалисты смогут рассчитать и установить требуемую емкость для воды, которую нужно заправлять раз в неделю-две.

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

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

Владимир Пасеков

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

Домашняя автоматизация – Умный дом

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

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

Умные системы автоматизации для дома

Такая система упрощает жизнь, предоставляя возможность управлять домом при помощи специального пульта. Автоматизированное управление домом позволяет на расстоянии:

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

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

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