Как же я ненавижу это выражение «умный дом», но использовать этот исключительно маркетинговый сленг приходится. Хотя бы для того чтобы поисковики правильно проиндексировали эту страницу, потому что речь тут пойдет об автоматизации загородного дома. Как обычно, своими руками, с преферансом и куртизанками. Вступительный длииииииииинный текст без картинок.
Вообще, про умный дом и интернет вещей написана шикарная статья на Хабре. Я там не нашел ни одной мысли, с которой хоть как-то можно спорить. Автор нарубил с плеча, но прав абсолютно во всем. Собрано в единое целое то, что было разбросано по различным участкам мозга. То, что по отдельности пищало откуда-то что-то про сомнения, целесообразность, стоимость, маркетинговую чушь. И вдруг стало единым целым, сформировало мнение и родило идеи. Что называется «иди обниму». Всячески рекомендую эту статью к прочтению как и людям, у которых уже есть «умный дом», так и просто интересующимся.
Тут надо сказать что автоматизацией своей дачи я начал заниматься в 2013-ом, а статья написана в 2016. По сути эти 3 года у меня ушли на изучение микроконтроллеров, протоколов, интерфейсов, софта и прочего с этим связанного. А вот 2016-ый как раз и стал годом озарения, где и что я делаю не так. Да и не только я, судя по статье 🙂
К тому моменту я конечно уже реализовал свои задумки. 14 реле управления светом, обогревом и розетками, 12 датчиков температуры (во всех помещениях, на улице и под землей) на шине 1-wire постоянно опрашивались с интервалом 1 минута и значения складывались в MySQL, которая крутилась на нетбуке, который и рулил кучей PHP-скриптов, клал данные на домашний ftp и был сервером интерфейса и шлюзом «во вне». А к домашнему серверу я уже имел доступ откуда угодно через интернет. Так же можно было достать графики температуры за любой период и считалась статистика работы отопления. Собственно почему в прошедшем времени ? Все это до сих пор работает 🙂
И тут пришло понимание, что что-то тут не так. Да, можно посмотреть данные. Да, можно включить/выключить свет где угодно в доме, находясь за много километров от него. Да, можно посмотреть включено ли отопление, управлять вентиляцией, менять температуру перед приездом на дачу и даже включить термопот чтобы он вскипятил воду пока я еду. Многим ли доступен даже такой скромный функционал ? Вроде всё хорошо, молодец, всё работает, всё стабильно. Но нет. А где же умный дом ? В чем его ум ? В том, что он поддерживает заданную мной температуру ? Это по сути термостат. Управляемый из интернета. Да. В том, что мне нужно достать телефон из кармана чтобы включить свет ? Нет, это конечно удобно, подъезжая к дому вечером, телефон ловит wi-fi и я могу включить свет в прихожей еще не выйдя из автомобиля. Но черт возьми, эту же задачу решит датчик движения с релейным выходом. Значительно быстрее в реализации и дешевле, чем содержать целую шину исполнительных устройств и сервер. Да, с термопотом удобно. Не поспоришь. Да, держать в доме 18-19 градусов и к приезду включать 23-24 тоже удобно. Многие дачники мечтают о такой штуке. Но, блин, это просто пульт управления домом! Сам дом никаких решений не принимает. Только жестко заложенная логика работы автоматики. Если вы прочли статью, которую я упомянул в самом начале — сейчас у вас уже должны были окончательно открыться глаза на то, как всё плохо 🙂 И какую хрень впаривают населению ушлые маркетолухи. Это было длинное вступление, но оно того стоит.
Поехали! (с)
Как-то зимой в очередной раз я ехал на дачу в пятницу вечером. Естественно перед выездом поднял температуру отопления и уже предвкушал как лягу спать в теплую кровать. И тут пришла мысль. Вообще все умные мысли ко мне приходят когда я еду в автомобиле. Не знаю что этому больше способствует, монотонное шуршание колес, какая-нибудь «ровная» по темпу композиция, поставленная на повтор, трансцендальное нихренанеделанье, спасибо акпп, или всё вместе взятое.
Буду максимально подробно, на пальцах, с разных сторон мусолить одно и то же. Это важно.
Вот есть мотор, двигающий стекло в двери. Есть кнопки управления этим мотором. Пульт к мотору по сути. Вот, уже 2 кнопки стали пультом. Вверх и вниз. Никаких микроконтроллеров. Тупо электрика. Всё вместе называется «электрический стеклоподъемник» или просто стеклоподъемник (после того как ручные почти перестали делать) а не «мотор стекла с кнопками управления». Стеклоподъемник по сути вещь самодостаточная. Ни от каких систем не зависит, разве что только от подачи питания при включении зажигания. То есть эту связку электрических компонентов «мотор+кнопки», конкретно для использования в автомобиле обозвали стеклоподъемником чтобы по названию было понятно что он делает. Стекло поднимает. И опускает. Это всё что он умеет делать. У вас в автомобиле есть стеклоподъемники ? Конечно есть. Подразумевается что кнопки тоже есть, хотя о них ни слова. Никто не спрашивает есть ли в автомобиле моторы на стеклах с кнопками управления. Есть узел «стеклоподъемник» и всё. Дальше интереснее. Когда автомобили обросли электроникой и стало модно делать централизацию и блоки управления чем либо — появилась такая вещь как «блок управления стеклоподъемниками», заметьте, всеми сразу. Знакомое название ? То есть одну и ту же задачу поднимания/опускания стекла можно решить уже двумя способами. По старинке, соединив кнопки с моторами напрямую, или через умный дом автомобиль, используя для конкретной задачи (стеклоподъемник) конкретный блок (стеклоподъемник). Этому блоку уже можно дать команду «открыть окно» и он его откроет. Прогресс. Уже можно сигнал «поднять окна» подавать от блока сигнализации в цифровом виде при постановке на охрану. Удобно. Без разницы откуда команда, от кнопки в двери или с магнитолы. В некоторых автомобилях и блок кнопок в двери цифровой. Можно с брелка открыть и закрыть все окна. Почему-то автомобили не стали от этого называть умными. Странно, ну ладно. Поехали дальше. В современных блоках управления стеклоподъемниками есть функция защиты от защемления. Как красиво обозвали… По сути, при срабатывании самовосстанавливающегося предохранителя раньше времени (на шкоде например нужно опустить и поднять стекло полностью для адаптации интервалов) блок опускает стекло немного вниз, освобождая то, что защемило. Реализовывать это конечно проще умной начинкой блока, благо компоненты сейчас сильно подешевели. Теперь перейдем к нашим баранам. Возьмем для примера штору на окне дома. Или лучше рулонные жалюзи, что сути кардинально не меняет. И проведем аналогию. Есть штора, которая либо открыта, либо закрыта, либо находится где-то между этими состояниями, т.е. приоткрыта. Она умеет, открываться и закрываться. Процент открытия «окна» может меняться от 0 до 100%. Рядом с окном сделаем 2 кнопки. Поднять штору/ опустить штору. Пока ничем не отличается от стеклоподъемника, правда ? Едем дальше. Делаем блок управления рулонной шторой для окна с неким интерфейсом для управления извне. Не стоя у окна и не нажимая кнопок. Тех самых. Так его и назовем по-русски «блок управления жалюзями». Итого: Вот штора, вот мотор, вот кнопки, вот блок управления шторой. Он больше ничего не умеет кроме как поднимать штору и опускать штору. Даже функция защиты от защемления ему не нужна. Всё проще чем в автомобиле. А вот назвали мы его не правильно. Назвать это нужно «штора». Равно как стеклоподъемник уже подразумевается что он электический, так и наша штора с мотором и блоком управления должна называться шторой. Это, я считаю, единственно правильный путь развития умных домов. Все команды сводятся к «поднять штору», «опустить штору» а не подачей напряжения на мотор и слежением за концевиками. Вот что-то мне подсказывает, что когда человеку командуют «подними руку» это значит поднять руку а не список мероприятий какую мышцу задействовать, в какой последовательности и на какие величины.
Сейчас будет абзац-сарказм и перегибание палки, уж простите заранее. В автомобиле всё находится под рукой, а в доме все же нужен некий интерфейс. Да, пусть опять пульт, для начала. Как управлять нашей шторой «извне» ?. Множество систем «умный дом» имеют множество путей решения. Мотор подключается к реле, организуется смена полярности для движения «вверх/вниз». Для крайних положений можно использовать концевики, герконы. Можно использовать сервомоторы или шаговые двигатели и считать обороты/шаги. Вся эта требуха проводами от окна подключается к щитку, вешается контроллер на дин-рейку. Или блок ставится на окно и от него тянется кабель к сердцу системы. Ну или вообще без проводов, батарейки. И начинается веселый процесс программирования контроллера умного дома, написание скриптов, использование графических систем программирования, блок-схем с условиями и прочим адом. Если концевик_1 сработал — приехали вверх, отключить мотор. Если сработал концевик_2 — приехали вниз, отключить мотор. Засекаем время или шаги/обороты и начинаем изобретать алгоритм движения шторы. Добро пожаловать в мир программирования. Хорошо, если вы установщик этой системы и вам за это платят зарплату. Неплохую, надо сказать, ибо умный дом — это инновации и модернизации. Они не могут стоить дешево. Практически магия. Поднять штору на даче, находясь при этом в другой стране. Множество систем — множество алгоритмов, множество скриптов. Для установщиков это просто. Скопировал алгоритм в новую инсталляцию, подтянул устройства по сети, обозвал как-то и вуаля, всё закрутилось. Проблемы начинаются когда в одном доме совмещаются несколько устройств разных производителей. Начинаются сплошные костыли.
Вернемся опять к стеклоподъемнику. По аналогии, сегодняшние системы «умный дом» работают так: вам не продают стеклоподъемник. Вам продают набор DIY: мотор, реле, кнопки, провода и ардуино 🙂 Вы можете самостоятельно собрать из этого стеклоподъемник, воспользовавшись прекрасной Arduino IDE, заодно разомнетесь в электротехнике и программировании. Конечно, есть системы под ключ «стеклоподъемник». Уже подключенный как надо и запрограммированный. Установщик с радостью вам установит его. Программа управления стеклоподъемником у каждого интегратора своя, равно как и комплектующие разные. С этим ничего не поделаешь. Проблемы начинаются когда вы стеклоподъемник с блоком управления от ауди пытаетесь поставить на хундай например. Потому что в ауди есть защита от защемления, которой вам например не хватает, а реверсинжинирить хундай нет желания или возможностей. Любой интегратор умных домов с радостью возьмется за такую высокооплачиваемую работу. По внедрению костылей, обслуживать которые сможет только он. Протоколы разные. Если у кондиционера нет другого интерфейса кроме инфракрасного пульта, я представляю какие костылищи нужно изобрести чтобы управление температурой, вентилятором, шторой, влажностью, временем работы появилось в веб-интерфейсе системы.
Теперь представьте, что ВСЁ работало бы так же. Вместо стиральной машины вы покупали бы набор «сделай сам»: супер-контроллер со всеми интерфейсами*(на его базе вы можете собрать не только стиральную машину, но и микроволновку и радиоприемник и еще длинный список всего), двигатель, помпа, тен, барабан, клапаны, трубки, датчики, корпус, БП, дисплей, энкодеры, кнопки, ящички, стекло двери, уплотнитель, ножки, провода… Про программирование всего этого добра даже не пишу. И предполагается что у вас 2 варианта: 1) разобраться во всем самому, то есть эдакая «DIY стиральная машина», или обратиться к сообществу по собиранию стиральной машины на базе этого контроллера — там подскажут. 2) обратиться к интегратору/разработчику, тот посоветует оптимальный для вас набор компонентов стиральной машины, сам всё соберет, запрограммирует и установит. Цены на умный дом вы приблизительно знаете. Как вам варианты ? Но почему-то «умный дом» позиционируется именно так. * — Реклама на халяву. Не благодарите.
Как электрический стеклоподъемник стал просто стеклоподъемником — так же и электрическая управляемая штора должна стать просто шторой.
Одумайтесь, люди! Что вы творите ? Почему добавляя к умному дому сущности «выключатель света в коридоре» и «свет в коридоре», я что-то вообще должен программировать или платить за программирование ? Неужели ваш умный дом настолько тупой, что не понимает что нужно делать если я «включил свет в коридоре», то есть нажал на выключатель ? Если я нажал кнопку «опустить штору на кухне», то мега-алгоритм работы мега-контроллера должен содержать ОДНУ команду в сеть: «кухня->окно->штора->100%» и ни в коем случае не рулить мотором и не опрашивать концевики самостоятельно. Для этого сети нужна наша «штора», которая примет команду и сама всё сделает и отрапортует обратно. Как-то вычитал на forumhouse упрек к разработчику умного дома, «когда вам надо выключить свет во всем доме, в вашем случае на шине будет лавина коротких сообщений». (в CAN пакет 8 байт). Про свой подход я ответил бы так: это должно делаться по аналогии с опусканием всех штор: «*->окно->штора->100%». Все шторы в доме примут эту команду и исполнят. Согласен, ответов в шину будет много. А что, если бы это бы не CAN, что-то было-бы по-другому? 🙂 Умность дома должна заключаться в том, что он обязан понимать и только последнюю часть команды «штора-100%», потому что раз уж речь идет о всех помещениях, то штор нет нигде кроме как на окнах этих помещений. Ну и вы уже догадались, что «штора->100%» эквивалентна команде «опустить все шторы». Вопрос интерпретации. С чего вы взяли что микроконтроллеру необходимо хранить все ваши древовидные структуры «здание-этаж-комната-окно-штора» ? 🙂 Есть и другие более человечные алгоритмы.
И вот тут наконец мы подходим к сути. Все наши «устройства» в доме должны стать умными. Но не с помощью сторонних костылей, а самостоятельно и независимо друг от друга. Как это сделала компания Redmond, выпустив умный чайник. (не реклама). Есть чайник. Всё что он умеет — кипятить воду. Ну еще поддерживать заданную температуру, слать ее в сеть, весело разноцветно мигать, оповещать что воды нет. Это ВСЁ. На данный момент времени это весь функционал. И называется он всё еще чайник. Ко всем устройствам должны быть свои конкретные команды. Если это штора, то команд она принимает всего 4: открыть, открыть на %, закрыть, закрыть на %. И выдает 6 состояний: открыто, открыто на %, закрыто, закрыто на%, открывается, закрывается. (избыточность для человечности, о которой позже).
Теперь основное. Если мы делаем умный дом, то почему я должен ему объяснять (программировать) что если «я уехал» (ну например такая кнопка при выходе), то все розетки должны быть обесточены кроме холодильника, скважинный насос должен быть отключен, септик должен работать, шторы должны быть опущены, весь свет выключен а окна закрыты ? Или у кого-то по-другому ? Да, современные умные дома гордятся тем, что вы можете создать 100500 вариантов сценариев работы автоматики. А реально они разве нужны ?
Вы правда в 21-ом веке хотите писать сценарий типа: если кнопка78=1, то реле54=0, реле55=0, реле92=1 ???
Не смешно, но это реальная инструкция по настройке одного девайса:
— Порядок настройки программы поддержания заданной температуры.
Войдите в «Меню» — «Программа упр.» — ОК — «Шаг 1: Включен» — ОК — «1:старт» — ОК — «1:стоп» — ОК — «Нагрузка:3 Тип:стрелка вверх Датчик;01 Тип:А» — ОК — L: 1.000e-06B H: 1.499e+00B» — OK — «Периода нет» — ОК — «Меню».
— Настройка завершена.
Что, вашу мамашу !? (c) Deadpool
Первый последний раз я привел такие примеры. Моя идея предустановленной логики вполне коррелирует со стиральной машиной. Вы конечно, будучи программистом, можете залезть в контроллер стиралки и изменить максимальные обороты отжима например с 1000 до 1200. Плохой пример, но эдакий чип-тюнинг. Но стиральная машина работает по заранее заложенному алгоритму. Проверить закрыта ли дверь, взвесить белье, налить воды через ящик порошка… и.т.д. Никому же в голову не приходит поменять эту логику, сначала налить воды, а потом проверить, закрыта ли дверца. Хотя это был бы отличный маркетинговый ход. Вы можете менять алгоритм работы стиральной машины через интернет. Абсолютно таким же бредом сейчас занимаются маркетологи умных домов. Век возможностей — надо их рекламировать. Но возможность это не всегда необходимость. Отсюда и весь абсурд, описанный на хабре.
Мой подход заключается в назывании вещей своими именами. Пример: есть блок 6 реле и блок 4 кнопки. Блоки объединены в сеть. Всё что мне нужно сделать — это указать что к реле1 подключен холодильник, к реле2 подключен скважиный насос, к реле3 подключен свет на кухне, кнопка1 — выключатель света на кухне, кнопка2 — я ушел. Это всё что нужно моему умному дому знать. На основе этих данных он включает свет на кухне при нажатии кнопки «свет на кухне», отключает скважинный насос и свет на кухне если нажата кнопка «я ушел», оставляя холодильник подключенным. Более того, даже если я перекоммутирую например скважинный насос с реле2 на реле4 — ничего не изменится, т.к. когда «я ухожу» отключать надо не реле а скважинный насос. Чувствуете в чем разница ?
Ни в коем случае не хотел обидеть никаких производителей. Вы все молодцы и делаете то, что делаете, получая прибыль. Для этого бизнес и создается.
На данный момент в железе и софте сделано 14 блоков с разным назначением.
Речь идет только об автоматизации загородного дома. Каждый блок создан под конкретные задачи и обладает своей логикой для их решения. Обо всех блоках я напишу отдельные статьи. Как обычно, если кого-то заинтересовала эта идея или возникли вопросы, или даже захотелось поучаствовать — я всегда открыт для общения.