Как работает умный дом — схема, принцип работы системы умный дом
Система «умный дом» представляет собой интегрированное устройство управления всеми сетями инженерии. Благодаря современным технологиям, при помощи которых создаются инженерные системы, можно объединить их при помощи единого центра управления. Если вы не знаете, как сделать «умный дом» своими руками и настроить его работу максимально эффективным образом, можно ознакомиться с подробным описанием особенностей функционирования системы с помощью выложенных в интернете инструкций и видео.
Преимущества использования беспроводных технологий для системы «умный дом»
К основным преимуществам использования системы «умный дом» можно отнести следующие:
- небольшое время установки и отладки схемы — при создании системы не нужно прокладывать провода, за счет этого снижается стоимость расходных материалов и работы
- минимальные повреждения отделки квартиры — использование беспроводных технологий позволяет практически полностью исключить монтажно-строительные работы
- «умный дом» работает при установке датчиков в любых точках — данная особенность позволяет получать наиболее точные показатели состояния каждого объекта
- гибкость конфигурации сети — благодаря отсутствию проводов нет привязки объектов интерьера и рабочих групп к определенному месту
- простота увеличения системы — монтаж новых сенсорных датчиков не влечет за собой глобальных изменений в интерьере
- мобильность системы — систему «умный дом» можно легко демонтировать и перенести на другой объект, например, в случае переезда
- высокая скорость работы и защита данных — современные беспроводные технологии имеют более защищенные протоколы, а скорость их работы очень высокая
Это лишь основные достоинства системы «умный дом», к которым можно также отнести удобство использования, высокий имиджевый уровень, возможность следить за происходящим даже в момент отсутствия (при помощи видео, снятого камерами).
По какой схеме работает система «умный дом»
Структура «умного дома» достаточно проста, но при этом она позволяет охватить максимальное количество необходимых объектов (используются датчики и камеры для съемки видео). Чтобы эффективно обустроить «умный дом», схема должна выглядеть таким образом:
- управление светом и электронагрузками
- климатический контроль (отопительная и вентиляционная система, система кондиционирования)
- безопасность (система наблюдения при помощи видео, снятого на камеры, техническая и пожарная безопасность, охранная сигнализация)
- электроприводы (управление воротами, жалюзи, прочим автоматическим оборудованием)
- система развлечений (видео, аудио)
- погода и полив растений
Наиболее востребованным у потребителей является блок управления светом и электрическими нагрузками. Данная функция позволяет не только отключать освещение во всех помещениях одновременно, но и приводить уровень освещенности к необходимому значению (минимум, средний, максимум).
Контроль над климатической обстановкой в жилье позволяет получить необходимую температуру, единожды настроив систему. В дальнейшем «умный дом» самостоятельно будет регулировать работу подсистем инженерии для создания благоприятного микроклимата.
Охранная сигнализация предполагает защиту от проникновения на придомовую территорию, а также непосредственно в сам дом через окна и двери. Чтобы данная система функционировала более отлаженно, по всему периметру устанавливают камеры, которые круглосуточно осуществляют запись видео. Система развлечений предполагает просмотр видео в оборудованных комнатах, а также прослушивание любимых аудио во всех помещениях жилья.
Для чего стоит установить метеостанцию
Для контроля над погодой и поливом растений, необходимо установить метеостанцию локального характера, которая будет информировать жильцов о таких показателях:
- температурные изменения
- уровень влажности
- сила и направление ветра
- осадки
Если уровень выпавших осадков ниже нормативного значения, «умный дом» сможет включить систему полива.
Как правильно создать «умный дом» своими руками
Что можно получить, если знать, как сделать «умный дом» своими руками:
- сбалансированное функционирование всех интегрированных устройств
- детальное протоколирование всего происходящего
- мониторинг работы каждого устройства отдельно, а также системы в целом
- сокращение времени реагирования системы на изменения, а также подробный анализ происходящего
- предотвращение аварийных ситуаций, а также работы по ликвидации последствий
- надежная обратная связь «умного дома» с жильцами
- простота управления
Для установки системы «умный дом» можно приобрести ее уже в готовом виде или ознакомиться с инструкциями, расположенными в интернете (видео, текстовые), в которых расписано, как сделать «умный дом» своими руками.
Как выполняется работа по установке
- оборудовать сервер
- настроить веб-сервер
- организовать компьютерное видеонаблюдение для повышения уровня безопасности
- подключить охранные аналоговые веб-камеры и систему сигнализации
- настроить интернет-соединение
- смонтировать сеть при помощи подключенных датчиков и прочих исполнительных устройств
- подключить температурные датчики и систему освещения
- создать управление отопительной системой
- подключить все инженерные сети к единой системе «умный дом»
Прежде чем приступить к созданию «умного дома», необходимо выбрать центральный блок управления (желательно компьютер). Данное устройство поможет обеспечить универсальность и простоту использования системы. При помощи компьютера можно выполнять большое количество разноплановых задач в пределах одной системы, а также мелких подсистем. Благодаря развитости современного оборудования, а также оснащения его наиболее распространенными протоколами, интеграция подсистем в единую систему «умный дом» становится очень простой.
После того как вы определились с устройством управления, необходимо подключить к нему камеры, обеспечивающие запись видео для повышения безопасности жильцов. После таких процедур подключиться к видеонаблюдению можно при помощи удаленного рабочего стола, даже не находясь дома. Помимо камер, необходимо подключить сигнализацию и специальные датчики.
Также к серверу можно подключить 1-wire датчики, при помощи которых можно автоматизировать включение и отключение придомового освещения в зависимости от климатических особенностей; полученную информацию можно использовать для контроля температурного режима внутри квартиры или дома.
составляющие элементы и настройка системы
Просмотров: 206
Появлению автоматизированной системы послужила идея создания комплекса, с помощью которого можно было бы управлять коммуникациями в здании любого типа.
«Умный дом» на основе KNX – современная разработка, занимающая почетное место среди профессиональных систем автоматизации объектов.
Особенности комплекса
Для функционирования KNX «Умный дом» используют такие каналы:
- бытовые электролинии;
- изолированные проводники, скрученные между собой – «витая пара»;
- радиоволны;
- технологию передачи данных Ethernet.
Все компоненты, подключенные к общей сети, передают и получают нужную информацию через одну шину.
При успешной передаче данных механизм ее принимает и отправляет подтверждение.
Структурная схема умного дома на основе KNX
В том случае, когда данные не поступили, компонент повторяет отправку два раза. Для начала работы оборудование KNX «Умный дом» должно быть подключено к электрической сети, каждый отдел соединен друг с другом и запрограммирован.
Вся система автоматизации KNX делится на два типа – актуаторы и сенсоры. Сенсорами (передатчиками) выступают пульты управления, датчики, выключатели и т. д. Актуаторы (исполнители) выполняют функции коммутаторов – устройства, используемые для монтажа.
Децентрализованная система имеет важное преимущество – если один из элементов выходит из строя, комплекс продолжает свою работу. Надежность и качество оборудования имеют подтверждение тестами и сертификатами ассоциации KNX.
История KNX
KNX «Умный дом» имеет свою историю. Все началось с шины European Installation Bus (EIB).
Она появилась в 90-х годах и послужила базой для разработки стандарта. Общие направления, используемые в современном «Умном доме» на основе технологии KNX, сформировались уже тогда. Со временем EIB стала лидером в данной области, при том, что у нее всегда были важные конкуренты.
В южной Европе была популярна шина Batibus, а стандарт European Home System (EHS) предпочитали производители техники для дома.
Организации, которые продвигали эти три разработки на рынке, приняли решение об объединении усилий. Результатом стала ассоциация KNX, появившаяся в 1999 году.
Система KNX «Умный дом» была представлена миру в 2002 году. Большая часть ее разработок была позаимствована у EIB.
Шина European Installation Bus (EIB)
Остальные стандарты поделились своими механизмами настроек и способами передачи данных. Через год разработка была оформлена как европейский стандарт, через три года получила звание международного.
Комплекс отличается конкретными преимуществами. Специалисты отмечают высокую надежность – основные части разработки соединяются в общее целое специальными кабелями.
Предусмотрен механизм оповещения о полученном пакете. В случае срыва команды механизм повторяет ее еще несколько раз.
Следующим плюсом называют возможность подсоединения оборудования, находящегося на значительном отдалении друг от друга.
Все устройства KNX можно совместить. Масштабируемость стандарта позволяет применять его с равным успехом на больших объектах и в частных жилищах.
Многие усматривают недостаток разработки в том, что ее установку или проектировку могут проводить только специальные компании. Осуществить самостоятельный монтаж KNX весьма сложно.
Элементы сети
Система KNX «Умный дом» имеет три основные группы компонентов. В первую входят устройства, генерирующие команды управления – таймеры, сенсоры, панели контроля, выключатели, всевозможные датчики. Вторая группа – устройства-исполнители.
Это могут быть разные регуляторы и модули. Третья группа сформирована из вспомогательных системных устройств, к которым относятся повторители, устройства питания, интерфейсы и модули, отвечающие за связь с миром извне.
Передача данных для работы комплекса осуществляется через четыре среды – витая пара, радиоканал, электропроводка, IP-сеть.
Каналы не являются равноправными – основную работу выполняет витая пара, другие могут быть вспомогательными либо вообще не использоваться.
Такое соединение дает возможность подключать к сети разные варианты компонентов, расположенных между собой на большом расстоянии.
Комплектующие элементы системы умного дома KNX
Сеть KNX в самом простом исполнении является сегментом с направлением «линия». Сюда могут входить 64 устройства. Наибольшая длина линии – 1 километр, при помощи усилителей этот показатель увеличивают в 4 раза.
Каждый элемент подключен к собственному блоку питания. 15 линий объединены в «зону» и подключены к основной линии. Все «зоны» передают данные друг другу через магистральную линию. Общая сеть может объединять до 58000 устройств.
KNX «Умный дом» располагает двумя видами адресов – групповые и физические. В случае группового адреса одна команда рассылается сразу нескольким компонентам.
Система сама определяет, к какой условной категории принадлежит тот или иной гаджет. Групповых адресов бывает несколько, физический — только один. Проводная сеть использует скорость 9600 бит/с для передачи информации, в беспроводной такая скорость равна 16400 бит/с.
Настройка системы
Схема монтажа KNX «Умный дом» принципиальная – недостаточно просто подсоединить устройства и соединить их друг с другом, их следует настроить.
Еще недавно для функционирования стандарта существовали три направления конфигурации – Auto, Easy и System. Вариант Auto является самым простым, и с самого начала был разработан для тех пользователей, которые самостоятельно проводят монтаж.
Предполагалось, что этот вариант конфигурации даст возможность автоматически объединять компоненты, функционально привязанные друг к другу.
От пользователя требовалось только подключить гаджеты к объекту передачи информации и выбрать необходимые параметры. Этот способ не прижился в массах и от него отказались.
Вариант Easy был разработан для применения в небольших системах. Для его функционирования настройка происходит с помощью специальных кнопок, находящихся на панелях гаджетов.
Актуатор для системы умного дома KNX режима Easy
С этой же целью используется центральный контролер. Возможности данного способа конфигурации являются ограниченными, однако они позволяют завершить пусконаладочные работы.
Режим System делает устройство открытым для настройки любого параметра. Отличительной особенностью этого варианта является то, что для его использования и настройки требуется наличие специального программного обеспечения Engineering Tool Software. Продукт универсален и может быть совмещен с любыми высокотехнологичными гаджетами системы KNX.
Некоторые группы устройств:
- реле для управления воротами, жалюзи, шторами;
- выключатели, кнопки, диммеры;
- аналоговые и бинарные выходы и входы;
- датчики температуры, движения, погоды, энергопотребления, утечки газа, дыма;
- климатконтроль.
Это только некоторые из товаров и продуктов, которые можно подсоединять к общему комплексу.
Заключение
Разработка KNX «Умный дом» представляет собой интеллектуальную систему, позволяющую управлять любым объектом, будь то частный дом, отель или бизнес-центр. Разработчики создали гибкий, безопасный и энергоэффективный комплекс.
Преимущества системы заключаются в ее принадлежности к мировым стандартам и подключении к общей шине.
Благодаря этому открываются новые возможности в функционировании, защите, энергоэффективности, комфорте и безопасности.
Видео: Умный Дом KNX от iQ Comfort
bezopasnostin.ru
Умный дом. Все начинается с проводов / Habr
Вскоре после того как я автоматизировал освещение в деревне, мы приняли решение, что нужно сделать капитальный ремонт в московской квартире. Это был шанс реализовать свою мечту об “Умном доме”. Особого понимания, что должно быть в умном доме, у меня не было, поэтому я решил руководствоваться универсальным принципом:» Если вы не знаете с чего начать умный дом, начинайте с освещения”.Ремонт начался достаточно спонтанно, и времени досконально изучать тему умных домов особо не было. Если бы мне пришлось делать все еще раз, я бы более внимательно изучил другие подходы, в частности, OpenHab и KNX, но особого времени на изучение не было, поэтому я решил использовать то, что уже изучил, и первая мысль была — использовать все тоже программируемое реле ПР110. В тот момент мне казалось, что его возможностей более чем достаточно, и единственное, что нужно — это подключить его к локальной сети, чтобы в перспективе можно было управлять светом с телефона и других устройств. К сожалению (или к счастью), простого решения подключить его в локальную сеть не нашлось, зато в линейке продукции ОВЕН был промышленный контроллер ПЛК110. Для его программирования нужно было изучать комплекс CoDeSys, но в нем тоже можно было программировать в визуально й среде в виде блоков, что в тот момент мне казалось очень удобным. Поэтому я остановился на нем.
Выбрав основу архитектуры, нужно было принимать решение, что делать с проводкой. Я — категорический противник беспроводных технологий, поэтому по-максимому все должно работать по проводам, а беспроводные технологии только как дополнение. Например, я сразу решил, что если я захочу поставить, например, датчики открытых окон, то их можно сделать беспроводными, так как они не оказывают критического влияния на работоспособность основных систем. Про беспроводные технологии — они тоже сейчас есть, я расскажу в следующих статьях.
Итак, я использовал подход коллекторной разводки, когда от каждого выключателя и от каждой лампы провода ведутся к единому щитку, где все коммутируемся. Для электрических розеток я решил, что коллекторная разводка — это слишком, и все розетки в каждой комнате объедены в единую цепь, и от них идет единый кабель в кладовку, где стоит электрический щиток. Это не позволяет выборочно обесточивать розетки, когда все уходят из дома, но я считаю это не очень нужным, а для контроля электроприборов у меня реализован другой подход — стоит датчик тока, измеряющий общий уровень нагрузки.
Когда я только приступал к строительству своего умного дома, я еще не был уверен до конца в успехе своей затеи, и поэтому от выключателей я решил вести не витую пару, что было бы и удобнее и достаточно, а медный провод сечением 1.5 кв. мм. в количестве 4 жилы на точку. Мои доводы в пользу медного провода, а не витой пары, были очень просты — если что, я всегда смогу сделать обычное электричество.
Кроме медного провода я провел, где только можно было придумать, витую пару: локальная сеть в каждой комнате, IPTV, куча резервов для подключения каких-нибудь датчиков и так далее. В итоге теперь у меня есть большое количество лишних витых пар там, где это не нужно, а там, где мне она потребовалось, нет ничего (но об этом позже).
Такой вот адский пучок проводов приходит в мой “коллектор”. Так он выглядел до того, как его убрали в кабель-каналы. Как показывают прикидки, на небольшую 2-х комнатную квартиру у меня в сумме ушло более километра различных проводов.
Пока полным ходом шел ремонт, нужно было подумать об электрическом щитке и контроллере. С контроллером вышла небольшая загвоздка — вначале я заказал контроллер с релейными выходами, что позволяло подключать нагрузку непосредственно к контроллеру, но потом, почитав что реле со временем могут выходить из строя (и тогда прийдется ремонтировать контроллер или менять его), я решил поставить промежуточные реле и заказал на замену контроллер с транзисторным выходами. Срок поставки нового контроллера занимал несколько недель, поэтому я решил поставить все тоже программируемое реле в качестве временного решения, а в будущем сделать из него бэкапный вариант, если с контроллером что-то случится.
Первая версия щитка: слева — силовая электрика, справа — низковольтная. Конфигурация еще буде меняться, и в правый щиток еще много чего добавится. Синий блок в левом щитке в среднем ряду — это промежуточные реле, на которые подается 24В с контроллера, и они уже коммутируют выходную нагрузку 220В. Они легко меняются, и у меня в щитке хранится несколько запасных.
Очень сложной задачей оказалось подобрать выключатели. Я решил не использовать сенсорные панели, а изначально хотелось использовать самые обычные выключатели. Ну, или почти самые обычные — для умного дома нужны выключатели без фиксации они же выключатели-кнопки. Как оказалось далеко не у всех производителей они есть или, точнее, не во всех сериях. Особенно в бюджетных сериях.
Я досконально изучил каталоги почти всех представленных в России производителей и стал разбираться в сериях лучше, чем многие продавцы-консультанты, а иногда, чем сами представители. 🙂 В результате выбор пал на серию выключателей Basic 55 компании ABB — в каждую комнату мы подобрали свою расцветку под цвет обоев. Конечно же оказалось, что большая часть моделей поставляется под заказ, поэтому временно были куплены турецкие кнопки… для звонка.
Временное решение. Конечно, можно было заменить в кнопке клавишу, поставив такую же от обычного выключателя, но внешний вид у ABB все-таки получше.
Когда приехали ABB-ые розетки и кнопки, получилось очень даже симпатично.
По каким-то причинам одну кнопку в заказе потеряли. Пришлось еще месяц жить с такой времянкой.
В серии Basic 55 у ABB не было 2-х клавишных кнопок (нужно сказать, что 2-х клавишные выключатели без фиксации есть мало у кого), которые нужны были для ванной и туалета. К счастью, решение нашлось очень быстро — разобрав старый выключатель Legrand, стоявший до ремонта, выяснилось, что он легко переделывается в выключатель без фиксации — достаточно вытащить из него пару пружинок. Так что, тут я отделался малой кровью.
Одна из смешных проблем с кнопками заключается в том, что у них нет подсветки (я сейчас уже не помню, но если у кого из производителей и были выключатели без фиксации с возможностью подсветки, то только в самых дорогих сериях, да и то, не уверен). Так как выключатели без фиксации, то понять, включен он или нет, нельзя, поэтому, например, не видно, есть ли кто в ванной или туалете, или нет. Теоретически, подсветку можно добавить, поставив светодиод, и поэкспериментировать, в планах это есть, но уже более года руки до этого не доходят….
История про выключатели будет неполной, если не упомянуть Aliexpress. У китайцев есть очень неплохие серии сенсорных выключателей, но, к сожалению, все они не имеют возможности внешнего управления (ну, или вернее сказать, те модели, которые я изучал такой возможности не имели).
Что бы я сделал, если бы начинал все сначала:
- Обязательно подвел бы витую пару к счетчикам воды. Во-первых, это удобно — не лазить к ним, а посмотреть просто показатели на компьютере или телефоне. Во-вторых, это контроль от протечек, когда никого нет дома.
- Возможность установки датчиков движения в туалете и ванной. Я вообще, не понимаю, как я умудрился об этом не подумать.
- Отдельная подсветка в стенах для ночного освещения (это не совсем умный дом, но все же).
- Датчик и витая пара во входной двери (об этом расскажу позже).
- Сенсорные или многофункциональные панели вместо кнопок — реализация различных сценариев на кнопках возможна, но это не очень удобно.
- Витая пара к выключателям вместо меди.
- Интернет заводил бы сразу в единую точку, причем предусмотрел бы 2 линии. (Сейчас у меня идет линия к Wi-Fi роутеру в коридоре, а от него уже идет к центральному счету. В ряде случаев это неудобно).
Продолжение:
habr.com
Делаем контроллер для умного дома / Habr
Делаем контроллер для умного дома и не только.В предыдущей статье я описывал разработку системы в целом. В этой я опишу разработку контроллера, который отвечает за опрос датчиков и модулей ввода-вывода. «Зачем изобретать велосипед?» — спросите вы. Во-первых, это интересно, во вторых, как ни странно, нет OpenSource решения для подобного контроллера, покрывающего как программную так и аппаратную часть. Статья ориентирована на людей немного разбирающихся как в электронике так и в embedded linux development.
Сделать контроллер, скажете вы, это же так сложно — нужно делать плату, писать софт, печатать корпус. Но в реалии всё чуть-чуть ещё сложнее, вот во что это вылилось для меня, но вы в принципе правы:
1. аппаратная часть контроллера
— выбор cpu платы для контроллера
— выбор IO контроллера
— выбор блока питания
— структурная схема контроллера
— разработка кросс платы для контроллера
— разработка плат для RS-485 модулей
— производство плат
2. софт для контроллера
— выбор системы сборки для ядра linux и rootfs
— структура разделов SD карты
— выбор бутлоадера и загрузка нужного rootfs
— изменения в device tree
— выбор системы сбора дебажных трейсов
— написание билдсистемы
— написание коммуникационного ядра
— написание mqtt гейтвея (дискретные/аналоговые точки контроллера -> топики mqtt)
— написание парсера гуглтаблицы и построение конфигурационного json файла для гейтвея
— написание point monitor для доступа к точкам контроллера
— монтирование readonly файловой системы
3. корпус контроллера
— какой должен быть, разъёмы, охлаждение, посадочные места под плату, закладные под клипсы для скоб на динрейку.
— конструирование и печать
Пару слов о аппаратной части.
Наверно только самые отчаянные сейчас берут отдельно процессор, память, флеш, контроллер питания, еще пару сот компонентов и начинают лепить это всё вместе. Остальные же пользуются плодами трудов других людей, так быстрее и проще. Нужно всего лишь открыть браузер и написать «одноплатный компьютер» и весь остаток дня провести в выборе нужного. Мне нужно было много последовательных портов и желательно что бы плата поддерживала -40°C до +85°C, поэтому выбор пал на BeagleBone Black(BBB). Также на ВВВ вся периферия выведена на два разъёма PBD по 46 пинов с шагом 2.54, что удобно для макетирования и разработки кросс платы. Кросс плата нужна что бы объединить все компоненты на одной плате, у меня это — cpu плата, блок питания, IO контроллер, и платы каналов RS485. Также именно кросс плату нужно крепить к корпусу и на ней стоят разъемы для подключения питания и кабеля RS485.
Так, с cpu платой разобрались, следующее что надо решить — нужно ли на кросс плату ставить Input/Output(IO) контроллер или можно и без него. Я его заложил на плату, и успешно им пока не пользуюсь. Единственное что он делает это откладывает старт BBB на 1с после подачи питания и обслуживает кнопку reset.
Блок питания для контроллера я взял уже готовый MeanWell NSD10-12S5, разрабатывать его для единичного девайса — бессмысленная затея, просто подобрал его по потреблению и всё. На ЖКИ не обращайте внимание, он есть на плате, но поддержку я не реализовал.
Пару слов о платах каналов RS485.
На кросс плату выведены 4 последовательных интерфейса BBB. Так что туда можно поставить любой тип канала который нужно, RS485, CAN, Zigbee модуль…
Мне нужны были каналы RS485, так что я сделал только их, они с автоматическим управлением приемом/передачей и с гальванической развязкой. Почему не использовать управление приёмо-передачей с ВВВ, да потому что TI официально перестали поддерживать строб для RS485 в драйвере serial устройства. Можно найти патч к драйверу, можно дописать самому, но зачем? Сделав канал самостробирующий, можно его будет ставить на любую плату, например на RaspberyPi, где никогда и не было такой поддержки, если была, то поправьте меня. Строб для драйвера rs485 формируется на attiny10, дешево и сердито.
Возвращаемся к софту.
Выбор системы сборки для ядра linux и rootfs.
Существует несколько подобного рода систем, самые популярные это Yocto и BuildRoot. Ели вам нужно разработать большой проект, если у вас много времени и желания писать рецепты, то Yocto — ваш выбор. С помощью же BuildRoot, можно собрать всё что нужно для простого запуска платы очень и очень просто, т.к. я делаю систему на Beaglebone Black (далее ВВВ) то:
- почитать что написано здесь habr.com/ru/post/448638
- make clean
- make beaglebone_defconfig
- make
Вот и всё. Теперь всё необходимое для запуска платы, лежит в папке /buildroot/output/images.
Выглядит всё очень просто и не интересно, так что можно сделать немного посложнее:
- интегрировать buildroot в свою билдсистему, скачивать его скриптом, не забыв использовать стабильный тэг, а не брать последний develop
- написать свой defconfig и перед сборкой buildroot подкидывать его скриптом в папку /buildroot/configs, не забываем что все дефконфиги должны заканчиваться на *_defconfig, иначе buildroot его не видит
- копировать свой post-build.sh в board/beaglebone/post-build.sh
- сделать prepare скрипт, который будет делать п1, п2 и п3 за вас
Как результат buildroot будет генерировать zImage и rootfs.tar
Выбор структуры разделов SD карты:
На этом, думаю, не стоит много акцентировать внимание.
Я сделал 4 раздела BOOT / ROOT_1 / ROOT_2 / DATA.
В BOOT разделе хранится всё необходимое для начальной загрузки: MLO, barebox.bin, barebox.env, am335x-boneblack.dtb, zImage, boot.txt.
ROOT_1 и ROOT_2 содержат rootfs, выбор которого вписан в файле boot.txt(см. ниже). Все эти разделы монтируются как readonly во избежания крешев файловой системы при выключении питания. DATA содержит проектные конфиги, при изменении которых нет необходимости пересобирать код.
Такая структура разделов в будущем позволит легко написать software update компоненту. Эта компонента будет перезаписывать один из разделов ROOT_1/ROOT_2, который сейчас не используется, а потом просто менять файл boot.txt, если не нужно менять ядро.
Выбор бутлоадера.
У меня было много экспериментов с бутлоадерами для BBB. Сначала я использовал, как все, U-Boot который генерирует BuildRoot. Но мне он не понравился, может быть, конечно, это дело привычки, но мне показалось что это перебор, уж очень он тяжелый и сложно конфигурируемый. Потом, я подумал что не плохо бы было стартануть систему быстро, секунды за 2-3, и подпилив X-Loader так что бы он грузил ядро, у меня это получилось, но опять же остался вопрос с конфигурированием, да и время старта для меня не критично(система на systemd грузится сама по себе медленно, даже если удалить всё не нужное).
В конце концов я остановился на barebox, его простота мне очень понравилась, плюс на сайте есть вся документация (www.barebox.org).
Например, что-бы грузить rootfs c первого или второго раздела нужно всего лишь:
1. на boot разделе сделать файл boot.txt который экспортит переменную типа «export BOOT_NUM=Х»
2. сделать два скрипта /env/boot/sdb1 /env/boot/sdb2 в которых описать параметры загрузки, например:
echo "botting with mmcblk0p2 as rootfs..."
global.bootm.image=/boot/zImage
global.bootm.oftree=/boot/am335x-boneblack.dtb
global.linux.bootargs.console="console=ttyO0,115200"
global.linux.bootargs.debug="earlyprintk ignore_loglevel"
global.linux.bootargs.base="root=/dev/mmcblk0p2 ro rootfstype=ext4 rootwait"
3. сделать скрипт /env/boot/sd в котором в зависимости от BOOT_NUM стартовать sdb1 или sdb2 скрипт
4. установить переменную boot.default
nv boot.default=sd
saveenv
5. далее меняя BOOT_NUM в boot.txt мы будем загружать rootfs с первого или второго раздела, что в будущем можно использовать для software update.
Изменения в device tree.
Поскольку для связи с модулями я использую MODBUS RTU по RS485, то мне нужно было включить практически все существующие на ВВВ последовательные порты. Для этого надо заэнэйблить их в device tree, т.к. по умолчанию большинство из них выключены.
Правильно бы было сделать свой патч для файла am335x-bone-common.dtsi из пакета билдрута и применять его каждый раз перед его сборкой, но лень победила, и я просто вытащил все нужные файлы, поменял всё что нужно и сбилдил руками.
Т.к. это делается один раз, то можно и так:
1. Создаем папку с файлами необходимые для сборки:
am335x-bone-common.dtsi
am335x-boneblack-common.dtsi
am335x-boneblack.dts
am33xx-clocks.dtsi
am33xx.dtsi
am33xx.h
gpio.h
omap.h
tps65217.dtsi
2. В файле am335x-bone-common.dtsi нужно правильно настроить пины и заэнейблить драйверы портов:
uart1_pins: pinmux_uart1_pins {
pinctrl-single,pins = <
AM33XX_IOPAD(0x980, PIN_INPUT_PULLUP | MUX_MODE0)
AM33XX_IOPAD(0x984, PIN_OUTPUT_PULLDOWN | MUX_MODE0)
>;
};
uart2_pins: pinmux_uart2_pins {
pinctrl-single,pins = <
AM33XX_IOPAD(0x950, PIN_INPUT_PULLUP | MUX_MODE1)
AM33XX_IOPAD(0x954, PIN_OUTPUT_PULLDOWN | MUX_MODE1)
>;
};
uart4_pins: pinmux_uart4_pins {
pinctrl-single,pins = <
AM33XX_IOPAD(0x870, PIN_INPUT_PULLUP | MUX_MODE6)
AM33XX_IOPAD(0x874, PIN_OUTPUT_PULLDOWN | MUX_MODE6)
>;
};
uart5_pins: pinmux_uart5_pins {
pinctrl-single,pins = <
AM33XX_IOPAD(0x8C4, PIN_INPUT_PULLUP | MUX_MODE4)
AM33XX_IOPAD(0x8C0, PIN_OUTPUT_PULLDOWN | MUX_MODE4)
>;
};
&uart1 {
pinctrl-names = "default";
pinctrl-0 = <&uart1_pins>;
status = "okay";
};
&uart2 {
pinctrl-names = "default";
pinctrl-0 = <&uart2_pins>;
status = "okay";
};
&uart4 {
pinctrl-names = "default";
pinctrl-0 = <&uart4_pins>;
status = "okay";
};
&uart5 {
pinctrl-names = "default";
pinctrl-0 = <&uart5_pins>;
status = "okay";
};
3. Далее немного магии, и готовый файл am335x-boneblack.dtb лежит в этом же каталоге:
a. sudo apt-get install device-tree-compiler
b. запускаем препроцессор:
cpp -Wp,-MD,am335x-boneblack.dtb.d.pre.tmp -nostdinc -Iinclude -Isrc -Itestcase-data -undef -D__DTS__ -x assembler-with-cpp -o am335x-boneblack.dtb.dts.tmp am335x-boneblack.dts
c. запускаем сам компилятор:
dtc -O dtb -o am335x-boneblack.dtb -b 0 -i src -d am335x-boneblack.dtb.d.dtc.tmp am335x-boneblack.dtb.dts.tmp
4. am335x-boneblack.dtb нужно положить на boot раздел рядом с ядром и в скрипте запуска для barebox добавить следующую строчку — «
global.bootm.oftree=/boot/am335x-boneblack.dtb
«Выбор системы сбора дебажных трейсов.
Как известно систем без багов не бывает, как и анализа многопоточной системы без трейсов. Очень удобно если эти трейсы не выводятся просто в консоль, а собираются чем-то специально для этого созданным, да так что бы можно было сортировать их по процессам, применять фильтры и т.д. И я как раз знаю одну неплохую систему, которую легко собрать как под host так и под target. Это DLT, если вы никогда не слышали об этом, то это не беда, все пробелы в знаниях можно легко покрыть прочитав at.projects.genivi.org/wiki/display/PROJ/Diagnostic+Log+and+Trace.
Данная система состоит из dlt-daemon и dlt-viewer. Как и понятно из названия dlt-daemon запускается на таргете, а dlt-viewer на хосте. Плюс к этому всему, к своему бинарнику, с которого мы хотим собирать трейсы, нужно прилинковать dlt либу.
В общем удобно всё, как собирать трейсы так и анализировать их, рекомендую.
Написание билдсистемы.
Зачем писать билдсистему, ведь можно всё скачать с репозиториев, сбилдить руками, собрать на основе этого rootfs и вуалля, контроллер работает. Но повторить такой трюк через месяц будет сложнее, а через два — так вообще невозможно. Опять придётся вспоминать что, куда положить, что сбилдить и как запустить. Поэтому потратив немало времени сначала, вы экономите его потом, плюс вы получаете возможность удобно билдить под host и target. Билдсистема состоит из набора скриптов, которые сначала подготавливают host для билда, скачивают сторонние компоненты, такие как buildroot, mosquitto, DLT daemon, с их репозиториев, билдят их, раскладывают по своим местам. А уж потом можно запускать билд вашего проекта. Если билд под host, сделать не сложно, то с билдом под таргет всегда нужно повозиться, и лучше что бы это делал скрипт.
Buildroot можно сконфигурировать так что бы он вызывал post-build скрипт после того как он сформирует rootfs, которая будет лежать в buildroot/output/target. Это даёт отличную возможность вам положить туда всё то, что вам нужно. И тогда, образ файловой системы уже будет содержать всё необходимое для запуска вашей системы.
Рецепт примерно такой:
- надо скопировать свои бинарники куда-то в buildroot/output/target, например в /opt/bin
- если есть конфиги, то с ними сделать то же самое, только в /opt/etc
- скопировать сторонние бинарники, для меня это mosquitto, DLT daemon, их либы и конфиги
- Что бы при загрузке контроллера система стартанула сама — нужно скопировать ваши systemd сервисы, лучше их объединить в свой target и заэнэйблить его сделав симлинку в multi-user.
- скопировать модифицированный fstab(зачем, расскажу позже)
После этого вам достаточно распаковать buildroot/output/images/rootfs.tar на нужный раздел SD карты и включить питание.
build git repo: https://github.com/azhigaylo/build
Написание коммуникационного ядра.
Концепция этого стара как сам modbus.
У каждого устройства ввода-вывода в modbus сети есть регистры(16 bit), доступные на чтение, чтение/запись, в которых хранятся данные и через которые идет управление этими устройствами. У контроллера, в свою очередь, есть массивы дискретных(статус и byte значение) и аналоговых точек(статус и float значение), в которых он и хранит состояние всех параметров.
Так вот, задача коммуникационного ядра проста — собрать данные с устройств ввода-дывода по протоколу modbus, замапить их на точки контроллера и предоставить доступ к этим точкам для верхнего уровня. А если вам надо чем-то управлять, то всё в другую сторону — логическое устройство(об этом позже) должно быть подписано на точку контроллера и запись в эту точку инициирует трансляцию этого параметра в физическое устройство вода-вывода.
Для того, чтобы как-то структурировать данные и работу с устройствами, можно ввести понятие логического устройства, которое будет отображать состояние физического устройства в вашем софте.
Также я решил разделить логические устройства на две группы:
- Стандартные (модули Овен дискретного ввода/вывода), для которых заранее известны номера modbus регистров с данными, и достаточно только определить точки контроллера куда сохранить эти данные.
- Пользовательские устройства, для них надо самостоятельно описывать маппинг modbus регистров на точки контроллера.
Из всего выше сказанного логично иметь какой-то конфигуратор для контроллера, будь то просто json конфиг или самописная тула генерирующая бинарный конфиг, подходит что угодно. У меня второй вариант, потому что были идеи писать коммуникационное ядро так, что бы его можно было легко запускать не только на линукс борде но и на Ардуине с FreeRtos, меняя PAL уровень в софте.
В конфигураторе для каждого устройства нужно установить номер rs485 порта контроллера, адрес устройства, и точку контроллера в которую отображается статус связи с устройством, плюс для каждого стандартного устройства описываются его каналы, а для пользовательского — маппинг его регистров на точки.
Такой конфигурационный файл, содержащий все необходимые данные по конструированию modbus сети, позволяет не модифицировать исходный код для проекта если надо добавить/удалить/изменить устройства ввода-вывода, достаточно изменить параметры в конфигураторе и сохранить их в конфиг файл.
При старте коммуникационное ядро разбирает конфиг и создает на его базе списки логических устройств для каждого rs485 порта контроллера, после этого создаются потоки на каждый порт и начинается циклический опрос физических устройств.
core git repo: https://github.com/azhigaylo/homebrain_core
Написание mqtt гейтвея.
Собственно говоря — ваши точки контроллера как дискретные, так и аналоговые, с проприетарным интерфейсом доступа к ним, мало кому интересны. Так что выход один — mqtt. Думаю, не преувеличу если скажу, что это на данный момент самый распространенный протокол обмена небольшими сообщениями, плюс он очень прост и понятен в использовании. Так что когда мне понадобилось транслировать данные с контроллера — я не долго раздумывал что использовать.
Т.к. параметров у меня довольно много, то постоянно возникали путаницы в файле конфигурации гейтвея, где был прописан маппинг точек контроллера на mqtt топики гейтвея. Помогла гугл таблица, и написание csv парсера этой таблицы в конфигурационный json файл для гейтвея.
gateway git repo
parser git repo
Написание point monitor.
Иногда очень полезно посмотреть что же сейчас происходит с точками контроллера, для этого я написал небольшое приложение который подключается непосредственно к коммуникационному ядру и считывает состояние дискретных и аналоговых точек. У меня довольно-таки туго с UI так что кое-как смог накидать приложение на QML, оно со скрипом заработало, можно считать точку, можно её записать, а мне большего и не надо.
pointmonitor git repo: https://github.com/azhigaylo/pointmonitor
Монтирование readonly файловой системы.
Обычно этому мало кто уделяет внимание, и даже в продакшен проектах можно встретить устройства в которых партишен с rootfs доступен на запись. Это рано или поздно приводит к крешу любой, даже самой устойчивой файловой системы. Т.к. контроллер может быть выключен в любой время, то это лишь вопрос времени/случая когда это произойдет. Что бы минимизировать эту вероятность надо немного повозиться с fstab и перед сборкой образа rootfs, положить его туда, как было описано выше. В fstab, во-первых, надо примонтировать файловую систему как readonly а во вторых всё что может меняться замапить в tmpfs.
Мой fstab таков, у вас он может отличатся:
/dev/root / auto ro 0 1
tmpfs /tmp tmpfs nodev,nosuid,size=50M 0 0
tmpfs /srv tmpfs nodev,size=50M 0 0
tmpfs /var/log tmpfs defaults,noatime,size=50M 0 0
tmpfs /var/tmp tmpfs defaults,noatime,size=50M 0 0
tmpfs /var/run tmpfs defaults,noatime,size=50M 0 0
tmpfs /var/lib tmpfs defaults,noatime,size=10M 0 0
Корпус контроллера.
3D принтер давно вошёл в разделы маст хэв для каждого инженера-колхозника, у меня к сожалению его нет, но он стоит на работе. Последнее время ажиотаж у других сотрудников к нему пропал, этим я и пользуюсь, печатая всё что нужно и не нужно, в этом вы могли убедится, читая мой предыдущий пост.
Рисуем в FreeCAD, генерим gcode в Cura и получаем корпус, не забыв сделать посадочные места под плату, вырезы под разъёмы и охлаждение и закладные для клипс на din рейку.
Ну вот и всё, теперь у нас есть плата, софт на SD карте и корпус. Берем напильник(не шучу) и соединяем всё вместе, подключаем питание, кабели RS485 и всё начинает работать. А вы говорили сложно, сложно…
habr.com
Способ организации «умного» дома с максимально широкими возможностями управления электрикой
Сразу оговорюсь, что под «умным» домом скорее понимается удобная система для управления электрическим оборудованием в доме, а её «ум» будет заключаться в ваших умениях использовать её.При постройке дома стал вопрос о том, как правильно организовать электрику, при условии, что стены сделаны из СИП-панелей, который нельзя штробить. Есть вариант «накрутить» на стены толстый слой гипсокартона и штробить его, но этот способ показался мне не очень удачным из-за того, что пришлось бы крутить довольно гипсокартон довольно толстым слоем, что бы убрать в стену рукав для проводов.
В конце концов было принято решение убрать все, что можно под фальшпол. Туда ушли трубы отопления и металлические короба с проводкой.
И решено было не трогать стены вовсе, розетки разместить в лючках, а выключатели использовать беспроводные.
Вот, что получилось…
Для организации проводки использовался короб из оцинковки шириной 200 мм, и высотой 50 мм. с крышкой. Этот короб был разложен по периметру в каждой комнате.
Для управления освещение были выбраны беспроводные выключатели, у которых был максимально широкий выбор цветовой гаммы (дизайн — наше всё). И когда был выбран цвет стен, то были заказаны выключатели
Выключатели сенсорные, но хорошо реагируют на мокрые руки, включение «бедром», локтем в одежде и т.п.
В комплекте к выключателю необходимо брать беспроводное реле, которое стоит примерно столько же, сколько и сам выключатель. Но можно было пойти и другим путем, тем более, что там стоял обычный радиомодуль на 866 МГц.
Были сделаны приемники, которые позволяют подключить до 7 радиокнопок:
Точнее сказать, радиокнопок туда можно подключить больше, но выходов у платы 7. ПО платы позволяет управлять выходом кнопки при получении сигнала четырьмя способами: а) включение выхода, б) выключение выхода, в) переключение текущего состояния, г) включение выхода и последующее выключение через определенный интервал.
Радиокнопка реагирует на просто нажатие и на длительное нажатие. Для платы приемника это выглядит как разные радиокнопки.
Каждая радиокнопка отпраляет пакет из 6 байт, структура пакета не разбиралась, а использовалась для идентификации кнопки целиком.
Первоначально организация электрики предполагалась по схеме звезда, но посчитав кол-во провода, который необходимо было протянуть в проводах, было решено изменить схемы на следующую: в каждой комнате были поставлены небольшие электрические щитки, к ним было подведено по две фазы с главного щитка, а уже по помещению были разбросаны провода к каждой розетке.
Вот один из комнатных щитков:
Такая схема позволила уменьшить количество проводом, и упростить монтаж.
К каждому комнатному щитку были подведены и по два провода витой пары.
В каждом щитке установлен контроллер (megadevice от ab-log.ru) способный управлять реле по командам, приходящим по HTTP. И к этому контроллеру (у которого есть 7 входов) подключен приёмник для радиокнопок:
Комнатный щиток без крышки (стрелочкой показан приёмник):
А в главном щитке установлен сервер, на базе rapberrypi, к которому подключены все комнатные контроллеры.
Главный щиток:
На сервере крутится openhab2 c модулем поддержки для комнатных контроллеров.
В комнатах использованы люки на 4-6 розеток.
Открытый люк:
Закрытый люк:
С помощью комнатного контроллера возможно коммутировать каждую (почти) розетку в люке.
Используется цветовая дифференциация штанов розеток: а) черные розетки управляются настенными выключателями; б) белые розетки для подключения оборудования, которое можно обесточить командой контроллеру; в) красные розетки подключены минуя контроллеры (для оборудования, которое должно работать постоянно).
Потолочное освещение на первом этаже (кухня, кладовая, с/у) разведено по второму этажу через потолок, освещение в с/у второго этажа, на потолке, сделано в стене под плиткой.
Все остальное освещение реализовано в виде торшеров и настольных ламп.
На кухне, на рабочей поверхности стола используются кот такие выдвижные блоки розеток:
Вид снизу:
Вид сверху:
Кроме комнатных щитков в главный заведено питание двух вытяжных вентиляторов в с/у.
К серверу так же подключен контроллер Xiaomi MiHome, для которого есть поддержка в openhab, что позволяет интегрировать в систему большое количество беспроводных модулей: датчики температуры/влажности, датчики открытия окон/дверей, датчики движения и т.п.
Например: в с/у установлен беспроводной датчик температуры/влажности, т.о. реализуется следующий сценарий: вентилятор включается через 30 секунд после того, как включат свет в с/у и выключается через 5 минут после того, как выключат свет, но если влажность больше порога, то вентилятор продолжит работать.
В итоге получилась удобная система, с помощью которой можно управлять каждым электрическим устройство в доме с помощью гибких сценариев openhab с использованием большого количества различный устройств, поддержка которых реализована сообществом openhab.
habr.com
Проекты умного дома — структура, примеры, своими руками
Проект умного дома представляет собой комплекс электронных устройств, установленный по всему помещению, который исполняет централизованное управление инженерными системами. К инженерным системам относятся канализация, аудио- и видеотехника, газопровод и прочее техническое оснащение квартиры. В этой статье мы рассмотрим общие вопросы при создании умного дома, обзор типовых решений и примеры проектов, которые можно выполнить своими руками.
Типовая структура проекта Умного дома
Система умный дом должна базироваться на следующих принципах:
- сбалансированное функционирование всего оборудования;
- фиксирование всех событий с детальным отчетом и указанием рабочего прибора;
- постоянное отслеживание работы и состояния всего оборудование;
- незамедлительное оповещение хозяина о наступлении аварийной ситуации;
- быстрое реагирование на событие и анализ ситуации;
- предупреждение, предотвращение и ликвидация аварийных случаев;
- простота и удобство управления.
Структура умного дома включает в себя климат-контроль, освещение и электричество, безопасность, систему мультимедиа, погоду и полив растений. Для реализации каждого пункта требуется свой набор датчиков и других компонентов.
В состав умного дома входят устройства, которыми нужно управлять (датчики, видеокамеры, интеллектуальные розетки), и приборы, которые производят управление (пульты ДУ, системы связи).
Система умный дом имеет свои преимущества:
- экономия времени на настройку и проведение различных операций;
- экономия электроэнергии, воды, газа;
- настройка микроклимата положительно скажется на здоровье – в системе можно запрограммировать уменьшение температуры ночью, что способствует скорейшему засыпанию;
- оповещение хозяина о наступлении какого-либо события;
- простота управления – доступ можно осуществлять через приложения на телефоне или планшете;
- быстрое реагирование на аварийную ситуацию и возможность ее предотвратить;
- возможность программирования уникальных сценариев.
Умный дом не лишен недостатков. Один из основных минусов – это высокая стоимость всего оборудования, его монтажа, содержания и обслуживания. Время окупаемости может быть длительным, особенно при поломке оборудования.
Проекты умного дома своими руками
Интеллектуальную систему можно собрать своими руками. Все оборудование и программы управления можно приобрести в магазинах.
Планируя проект, нужно обратить внимание на следующие пункты:
- Пользователь. Нужно продумать, как с системой будут обращаться обычные люди. Она должна быть простой, чтобы пользователю не пришлось долго думать, куда нажать и что сделать для совершения операции.
- Выбор технологии. Можно сделать беспроводную, проводную или комбинированную систему. Если будет проводная или комбинированная, следует заранее продумать, где будут размещаться кабели, куда помещать элементы автоматизации и розетки. В беспроводной системе нужно решить, где закрепить датчики и приемники, куда поставить повторители сигналов.
- Исполнитель. Кто будет заниматься организацией и поддержкой системы – сам человек или фирма.
- Автономность. Заранее продумывается функционал и возможности интеллектуального жилища. Нужно также заранее предусмотреть работу системы при отсутствии интенет соединения.
- Ядро, управляющее системой. Нужно решить, какое устройство будет подавать команды, принимать сигналы и анализировать полученные данные.
- Размещение ядра комплекса. Оно должно находиться в проветриваемом помещении (например, кладовка или шкаф).
- Расходы. Сюда относятся как финансовые, так и энергетические затраты.
Разные системы нуждаются в наличии устройства с заранее установленными программами. В качестве такого прибора может выступать компьютер, планшет или телефон.
Выполнение проекта требует понимания и знания основ работы, конфигурации, особенностей комплекса. Перед началом разрабатывается схема умного дома со всеми точками монтажа, способов объединения, контроля.
Для сборки системы можно приобрести готовый набор, в котором будет все необходимое оборудование и инструкция по сборке. Недостатки наборов из коробки – сильно завышенная стоимость, закрытые типы протоколов и систем и отсутствие возможности внесения изменений в систему. Собирая систему своими руками, можно на чем-то сэкономить, но для разработки нужно обладать серьезными знаниями и умениями в области электрики, принципов организации автоматизации, программирования. Также возникает сложность в синхронизации и объединении гаджетов от разных фирм. Придется либо выбирать продукцию от одного изготовителя, либо управлять каждым устройством отдельно.
Состав комплекса напрямую зависит от того, в каком типе помещения он используется. Для частных домов и коттеджей актуальны отопительные системы, водоснабжение, электроснабжение, работающие в автономном режиме. В квартире функции упрощаются из-за подключения к централизованным сетям – здесь достаточно своевременно включать и отключать систему. С увеличением площади и автономности жилища возрастает и количество задействованных механизмов. Чем меньше жилье зависит от централизованной системы, тем больше ресурсов нужно потратить для создания комплекса управления. Также в большом помещении потребуются проводные линии, в то время как в небольшой квартире работу можно осуществлять по радиоканалу.
Процесс монтажа системы умный дом следующий:
- проектирование каждого участка, который будет оснащен интеллектуальными приборами;
- анализ выбранных подсистем;
- изучение возможности установки умных систем;
- приобретение нужного оборудования;
- прокладка кабелей;
- монтаж датчиков контроля;
- подключение и установка исполнительных компонентов;
- подключение всех составляющих к плате процессора.
Важно!
Выполнять монтажные работы с электросетью 220 Вольт должен высококвалифицированный мастер с опытом работы. В ином случае есть иск возгорания или поражения электрическим током. Работа должна проводиться с соблюдением техники безопасности.
Когда монтаж заканчивается, производится тестовый пуск системы. Во время проверки проводятся различные ситуации – резкое охлаждение или перегрев помещение, срабатывание пожарных, охранных датчиков, искусственное увеличение или уменьшение освещенности. При неудаче ищется ошибка и исправляется.
Затем начинается отладка системы. Прописываются нужные сценарии, задаются основные параметры работы, выбирается способ управления.
Самый сложный этап – программирование умного дома. Если система коробочная, проблем не возникнет, так как есть программа с прописанными сценариями, которые остается только подстроить под себя. В остальных случаях придется самостоятельно разрабатывать программное обеспечение. Существуют рабочие модули, которые можно скачать в интернете, но их придется переделывать и настраивать под свое оборудование.
Рекомендуется начинать установку с самых простых функций, так как всю многоуровневую систему с первого раза спроектировать не получится. Затем можно постепенно выполнять более сложные операции.
Обдумывая возможность установки умного дома, возникает вопрос – выгодна ли такая система. Интеллектуальные технологии делают жизнь не только простой и комфортной, но и безопасной. С умным домом можно не беспокоиться о не выключенной розетке или работающей плите. Через панель управления можно прописать сценарии работы приборов и их расписание. Охранные и противопожарные системы всегда уведомят хозяина и соответствующие службы по возникновении аварийного случая. Особое внимание уделяется климатической системе. Оптимальные температуры сделают жизнь не только комфортной, но и здоровой и экономичной. Впустую тепло расходоваться не будет, что приведет к существенной экономии финансов.
ТОП 5 необычных проектов
Реализация проектов невозможна без умных устройств. Они могут выполнять не только свои классические задачи, но и делать дополнительную работу.
Домофон Belle
Домофон BelleУмный домофон может записывать видео в формате HD 24 часа в сутки. Он ведет ночную съемку, может фиксировать посетителей и сообщать хозяевам о приходе гостей. Даже если дома никого нет, домофон передаст сообщение и покажет трансляцию происходящего в доме.
Важной отличительной особенностью прибора является возможность посетителя совершить звонок владельцам дома. Если они не смогут ответить, с посетителем пообщается встроенный голосовой помощник. Гаджет может записать видеообращение, также он запоминает частых гостей.
Зеркало Mirror
От обычных зеркал Mirror отличается встроенным в него фитнес тренером. Стоит включить прибор, и помещение становится спортивным виртуальным залом. На дисплее зеркала появляется картинка виртуального тренера, который вместе с человеком выполняет тренировку, показывает правильность выполнения упражнений и дает советы. В выключенном состоянии устройство является обычным зеркалом.
В зеркале записано более 50 видов различных спортивных упражнений. Есть программы бокса, йоги, растяжки, фитнеса. С учетом индивидуальных особенностей человека и его предпочтений подбирается оптимальная программа тренировок.
Дополнительно зеркало может следить за состоянием здоровья. Для этого гаджет синхронизируется с фитнес браслетом или другим устройством, считывает информацию и выдает полученные данные на экране.
Интеллектуальный будильник Xiao AI Smart Alarm Clock
Интеллектуальный будильникБудильник от Xiaomi является полноценным гаджетом для сна и домашних дел. В нем установлен голосовой ассистент, но он различает только китайский язык. Помощник может оповещать о важных событиях, сообщать прогноз погоды, управлять другими бытовыми приборами. Работает прибор через приложение Mijia.
Отличительной чертой интеллектуального будильника является возможность убаюкивать человека на ночь. В памяти устройства записаны различные успокаивающие звуки, способствующие быстрому засыпанию. Чтобы разбудить хозяина, по умолчанию установлен режим нарастания громкости, чтобы пробуждение происходило плавно. Время подъема и смена режима производятся в приложении.
Перерабатывающее устройство Zera Food Recycler
Zera Food RecyclerПрибор для утилизации бытовых отходов делает жизнь не только комфортнее, но и безопаснее для окружающей среды. Устройство представляет собой визуально привлекательный белый контейнер размерами меньше, чем посудомоечная машина.
Принцип работы следующие – пищевые отходы укладываются в утилизатор через отверстие, которое потом закрывается крышкой. Мусор попадает в смешивающую камеру, где он перемешивается и измельчается. После этого отходы отправляются в камеру переработки, где они обрабатываются специальным составом. Эта смесь способствует быстрому разложению отходов. В итоге получается экологически чистое готовое удобрение, которое можно использовать в огороде. Полный рабочий цикл агрегат проходит за сутки.
Работает через приложение, в котором пользователь может запускать прибор, получать уведомление об окончании цикла, уточнять статус переработки.
Подобные устройства помогают разгрузить полигоны, сэкономить на транспортировке мусора и значительно улучшить экологическую ситуацию конкретного места.
Метеостанция Netatmo
Метеостанция NetatmoЭто гаджет имеет целый спектр различных задач. Он может определять качество воздуха, замерять его состав, в режиме реального времени выдавать метеорологическую сводку о состоянии окружающей среды в доме и за его пределами. В станцию встроены барометр, термометр, гигрометр. Прибор также умеет определять уровень шума.
Подключение беспроводное. В основном режиме метеостанция не взаимодействует со смартфоном или компьютером, она напрямую подключается к интернету и предает показания на сервер фирмы. Приложения получают информацию с этого сервера и выводят их на экран владельца. Есть возможность посмотреть, что показывают другие устройства рядом с пользователем.
arduinomaster.ru
От домашней автоматизации и умных домов в общем к конкретному примеру / Habr
В последнее время здесь много пишут о домашней автоматизации и умных домах. Хотел бы поделиться своим опытом, общими соображениями и конкретным проектом. Эта статься будет полезна тем кто просто хотел бы знать чем может быть в принцыпе полезен/удобен умный дом а также тем, кто хотел бы управлять(или просто наблюдать) с любого устройства с браузером(телефон, планшет, читалка, HTPC, ноутбук, настольный компьютер и тд) системой домашней автоматизации. Причём это можно делать из любой точки мира. Мой опыт и пример описанный во второй части этой статьи (Arduino, JQuery Mobile Web интерфейс и прочее) могут пригодиться тем у кто уже есть какая-то система домашней автоматизации (например X10) или тем кто начинает этот тернистый путь.
Основная причина того что системы домашней автоматизации всё ещё не стали так популярны это акцент на освещении, который обычно делают при их продвижении. Ведь мигать светом (как светодиодами на Ардуине) не вставая с дивана это баловство, которое не имеет никакого практического значения и отталкивает людей от серьёзных мыслях о внедрении и использовании систем домашней автоматизации у себя в домах и квартирах. Мигать светом (на что обычно заточено 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[17]={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 на последок пример интерфейса исходники для ардуины проверенный на 1.0.1, мой пакет библиотек и HTML GUI.
habr.com