В этой заметке хочу поделиться и сохранить на память: Как я автоматизировал свет на лестнице Как дом меня встречает Как я перестал пользоваться выключателем в прихожей Зачем я поставил Domoticz и при чем здесь Apple Home и Алиса Комфортный просмотр кино, не вставая с дивана Как сделать, чтобы дома было тепло, но не жарко Как сделать, чтобы дома точно было тепло, но не жарко Бюджет всего этого удовольствия Что дальше, и как сделать, чтобы свет не выключался, когда вы сидите на унитазе В августе 2018 года я переехал из квартиры в собственный дом, и практически сразу мне стал интересен вопрос внедрения технологий "умного дома". При выборе и покупке дома с супругой сразу решили покупать дом с уже сделанным чистовым ремонтом, что с одной стороны сэкономило нам кучу времени и нервов - и с другой стороны очень сильно ограничило меня в возможностях доработки моего дома (штробить стену чтобы прокинуть какой-нибудь кабель или положить датчик - уже не хочется). Знакомство с технологиями умного дома я начал с выключателей от Xiaomi - это одна из редких фирм, которые производят выключатели для света без нулевой линии - т.е. обычные кнопки, которые сейчас стоят в 99% жилых помещений в России и просто разрывают цепь - можно без изменений в проводке заменить на эти выключатели и всё будет работать. Большинство других производителей требуют "нулевую линию" - чтобы отдельно запитать именно кнопку. Заменил все выключатели в доме на "умные" от Сяоми, завел их в приложение, но "умнее" дом от этого не стал - по сути, просто появился новый вид выключения света. То есть дом не стал умным, мы просто заменили выключатели на немного более удобные. После установки выключателей - поставил на первый и второй этаж датчики движения от того же Xiaomi и сделал чтобы с 18 до 6 утра при обнаружении движения в коридоре одного из этажей - включался свет на лестнице. Удобно, но называть это "умным домом"  также считаю некорректно - по сути это просто автоматический выключатель, срабатывающий по времени суток и по движению. Того же самого можно было бы добиться, не используя никакие "умные" компоненты, на обычных датчиках движения, встроенных в обыкновенные выключатели света Первый шаг к действительно "умному" дому я сделал, когда обнаружил в приложении возможность автоматизации по GPS датчику, встроенному в смартфон. Жена у меня в это время работала дома, и в комнате, которая использовалась как её мастерская, стоял один из шлюзов Xiaomi.  Я настроил автоматизацию - если в вечернее время я (т. е. мой телефон) въезжал в круг радиусом 500 метров от дома - включался уличный свет, и у жены в мастерской загорался шлюз Xiaomi - таким образом она знала, что я скоро буду дома, и меня всегда встречала освещенная парковка и теплый ужин :-)  Окей, это была простая автоматизация. Следующим шагом захотелось сделать что-то более сложное - чтобы когда я захожу в прихожую - в ней тоже свет загорался сам.  Для того, чтобы полноценно реализовать эту автоматизацию, мне понадобилось уже 3 дополнительных компонента: два датчика открытия дверей (с улицы в прихожую и с прихожей в дом) датчик движения (совмещенный с датчиком света) Если уровень освещенности в прихожей менее 80 люкс Если открылась одна из дверей или в прихожей замечено движение - включить светЕсли обе двери закрыты и в течение 15 минут не было никакого движения - выключить светЕсли открывается дверь из прихожей в дом  и уровень освещенности в доме менее 80 люкс - включить свет на лестнице В принципе, можно было бы обойтись и одним датчиком движения - но в таком случае пропадает "магия" того, что свет включается когда ты только начинаешь открывать дверь, и к моменту полного открытия двери - свет внутри уже горит. Также дополнительная "магия" включает свет внутри дома, когда переходишь из прихожей в коридор первого этажа, до того как тебя заметит датчик движения на 1 этаже. Эту автоматизацию я настроил примерно 2 года назад, и с тех пор вот уже 2 года как я ни разу не пользовался выключателем света в прихожей - свет сам включается и выключается. При этом благодаря уходу от ограничений типа "работать после начала сумерек" или точной настройки времени, как у меня было на лестнице - свет хорошо срабатывает и в течение дня, если например солнце ушло за тучи и идет сильный дождь - датчик освещенности позволяет "заметить", что в прихожей темно, и включить свет даже в полдень. Такая работа света в прихожей уже максимально близка к тому, что я считаю "умным домом" - дом сам разбирается в ситуации, и создает для меня максимальный комфорт вообще без какого либо участия меня в этой схеме (т.е. я не управляю им голосом, не нажимаю ни на какие кнопки на стене или в телефоне и т.д.) - я просто выполняю свои обычные повседневные действия, а дом следит за тем, чтобы мне при этом не было темно. Реализовать такой алгоритм работы, используя встроенные средства автоматизации от Xiaomi у меня не получилось - поэтому я поставил контроллер умного дома Domoticz, в который завел все шлюзы и устройства Mi Home - также этот контроллер пригодился для моих дальнейших доработок, потому что он позволяет "подружить" инфраструктуру Xiaomi с внешними устройствами, работающими по другим протоколам (например MQTT). Кроме Domoticz есть еще другие решения, например Home Assistant, но я выбрал Domoticz просто потому что это было первое полностью работоспособное решение которое я нашел, и он меня полностью устраивает. Также с помощью Domoticz я переписал и автоматизацию лестницы - сделал, чтобы она зависела от освещенности дома, а не включалась по времени. Кроме того, Domoticz с помощью Homebridge я подключил к Apple Home, а homebridge с помощью G-On я подключил к Алисе - теперь я могу удобно управлять всем светом дома используя айфон, а также голосом. Ну и автоматическое включение света я тоже переделал - теперь оно включается не через автоматизацию в Mi Home, а через автоматизацию в Apple Home - работает в целом быстрее и надежнее, потому что не использует китайские серверы в своей работе, а также не требует перезахода в приложение после каждого его обновления (видимо, Mi Home это нужно чтобы обновить права на доступ к GPS в фоновом режиме). Диван в гостиной я оборудовал контурной подсветкой с умной светодиодной лентой от Xiaomi - она умеет менять цвета, и может включаться программным способом через Domoticz или Mi Home (ну и Apple Home конечно и даже Алисе можно сказать "Алиса, включи диван и сделай его зеленого цвета"). Выглядит примерно вот так (почему-то угол засветился): На специальную кнопку я завел автоматизацию - при первом нажатии выключается весь свет на первом этаже, и включается контурная подсветка дивана. Это я назвал "режимом просмотра кино". При следующем нажатии - подсветка дивана выключается и включается свет в гостиной.  Позже мы с женой обнаружили, что для комфорта той яркости света, которую дает подсветка дивана - недостаточно, и стали включать еще лампочку на вытяжке. У нас гостиная совмещена с кухней, вытяжка стоит вдалеке и добавляет немного приятного света. Ну а потом я заморочился, вскрыл вытяжку и переделал выключатель на еще один Sonoff - чтобы вытяжка включалась сама при переходе в режим "просмотра кино", и чтобы ей можно было управлять в рамках других сценариев. Пока что, самая интересная и сложная автоматизация из всех, что есть у меня дома. Когда я переехал в свой дом - у меня стоял котел для отопления и горячей воды, который работал "сам по себе", без каких-либо внешних датчиков. При изменении температуры на улице приходилось постоянно подходить к котлу и регулировать температуру теплоносителя. Из-за этого дома постоянно было то жарко, то холодно, а котел грел и гонял по трубам теплоноситель непрерывно, тем самым увеличивая счета за электроэнергию и газ. С помощью wi-fi реле от Sonoff я подключил газовый котел Baxi к своему контроллеру умного дома Domoticz - для этого пришлось немного переделать реле, чтобы оно стало с "сухими контактами". После этого я получил возможность программно включать и выключать отопление на котле, и мне осталось только запрограммировать алгоритм его включения. Для этого я установил датчики температуры воздуха в 2 комнатах первого этажа и в спальне на втором этаже, написал первую версию своего термостата, взяв за основу вот этот код: https://gist.github.com/lourou/ab26f3718d2d5a47ab169d097f42fa7c По сути он очень простой - включает отопление, когда температура в помещении падает ниже , чем заданная минус гистерезис и потом его выключает, если температура поднимается выше заданной плюс гистерезис. В интервале +- гистерезис от заданной котел просто сохраняет свое состояние (включен или выключен).  Использование такого "термостата" уже дало серьезный плюс - температура в доме стабилизировалась, потребление газа упало почти в 2 раза и потребление электричества тоже сократилось. Температуру теплоносителя я при этом выставил на 50 градусов, и регулировать её больше не было необходимости. Есть и минус при использовании такого термостата - оказалось, что спальня это самая холодная комната в моём доме, и по сути всё отопление работало на основании показателей всегда только 1 датчика, потому что на первом этаже температура стабильно на 1.5-2 градуса выше чем на втором. Если жена днем хотела проветрить спальню, и забывала закрыть окно - котел начинал молотить как бешеный, пытаясь повысить температуру в спальне до "нормальной", прогревая при этом первый этаж до состояния "сауны". Тем не менее, одну зиму я прожил с такими настройками, оставшись в целом довольным его работой - ведь в большинстве случаев дома получалось поддерживать заданную температуру (с учетом разницы на 1 и 2 этажах), а также у меня снизилось потребление газа и электричества, и возрос комфорт от жизни дома благодаря тому, что отпала необходимость постоянно регулировать температуру теплоносителя. Этой осенью я решил всё-таки попробовать побороть недостатки первой версии моего термостата, и модернизировать его для лучше работы.  Основные проблемы, которые я хотел исправить: бесконечная работа отопления во всем доме при проветривании отдельных комнат большая разница температур между 1 и 2 этажом По идее, вторую проблему нужно решать с помощью регулировки системы отопления в доме (установки специальных клапанов, которые позволят делать разную температуру теплоносителя на 1 и 2 этаже), но т. к. я купил дом с готовым ремонтом - у меня уже нет возможности каким то простым способом добавить в систему эти клапаны, поэтому я решил пока обойтись программным методом решения этой проблемы. Для решения первой проблемы я решил оборудовать датчиками температуры все комнаты в доме, кроме ванных. Кроме того, вместо понятия "желаемая температура" я ввел понятия "минимально комфортная температура", которую установил в 23.5 градуса и "максимально комфортная температура", которую установил в 25 градусов. Также ввел понятие "критического отклонения", которое приравнял к 0.5 градуса. Проверяем температуру в каждой комнате, и смотрим, к какому из классов она относится: Критически низкая  Температура ниже комфортной Температура комфортная Температура выше комфортной Температура критически выше комфортной По каждому из 5 классов считаем количество комнат,  которые к ним относятся (всего в доме 6 комнат) Определяем необходимое действие: ЕСЛИ хотя бы в 1 комнате температура критически низкая: включить отопление ИНАЧЕ, ЕСЛИ в 3 и более комнатах температура ниже комфортной - включить отопление ИНАЧЕ, ЕСЛИ в 2 комнатах t ниже комфортной и ни в одной из комнат t критически выше - включить отопление ИНАЧЕ, ЕСЛИ в 2 и более комнатах температура выше комфортной выключить отопление Во всех остальных случаях котел сохраняет своё состояние: Либо греет пока не прогреет 2 комнаты до t выше комфортной и все выше минимальнойЛибо не греет, пока комнаты не остынут Таким образом у меня получилось решить проблему с проветриванием - если в какой то комнате открывают окно и там температура падает - система не обращает на это внимание, пока комната не станет "критически холодной".  Проблему с разницей температур на 1 и 2 этаже я решил с помощью дополнительных условий - во-первых, если второй этаж слишком сильно остывает - отопление включается, но подогревает его только до тех пор, пока на первом этаже не слишком жарко. Кроме того, я ввел разделение по времени суток - с 7 утра до 19 часов мы в основном проводим время на первом этаже, где находится гостиная, мастерская жены и пр., а с 19 до 7 утра - в основном на втором этаже, где находится спальня.  В зависимости от времени суток я уменьшаю или увеличиваю границы комфортной температуры - днем я даю второму этажу остыть немного сильнее (нижнюю границу комфортной температуры снижаю до 23 градусов), и в 19 часов снова его подогреваю, чтобы когда мы придем туда спать - там уже было комфортно. За счет этого и первый этаж днем остывает сильнее и находиться на нем комфортнее. Думаю, бюджет всех доработок - это то, что волнует многих при планировании своего "умного дома". В данный момент у меня в системе 40 различных устройств (выключатели и датчики) со средней стоимостью в районе 1000 рублей - что-то дороже (например выключатели Xiaomi или шлюзы), а что-то дешевле - те же реле sonoff, которых у меня уже 6 штук, можно купить по 350 рублей на Aliexpress.  Apple TV и Яндекс.Станцию мне подарили коллеги, за что им огромное спасибо. В принципе, у меня всё работает и без них, но станция добавила мне в дом возможность голосового управления, а Apple TV является удобным шлюзом для Apple Home. Итого на всё описанное я потратил в данный момент около 40-50 тысяч рублей. + Собственное время на настройку и программирование. Следующие мои планы - это улучшение атмосферы в доме (заказал датчики CO2 и планирую попробовать автоматизировать проветривание, скрестив его с термостатом), а также автоматизация света в санузлах. На следующее лето - автоматический полив газона. Что касается автополива - у меня уже стоят все необходимые клапаны и четырехканальный sonoff для того, чтобы их автоматически включать-выключать. Собрал я всю систему только в сентябре, поэтому этим летом полноценно ей воспользоваться не удалось, но думаю следующим летом всё получится. Для полноты автоматизации осталось добавить в систему датчик дождя, чтобы не поливать, когда идет дождь.  А вот с санузлами поинтереснее. Думаю, многие сталкивались с санузлами с датчиками движения, когда на самом интересном месте книги у вас внезапно выключается свет, и приходится хлопать в ладоши и размахивать руками, не вставая с унитаза, чтобы свет снова включился. Не самые приятные ощущения. Поэтому я пока продумываю алгоритм, который позволит раз и навсегда решить вопрос света в ванной, по аналогии со светом в прихожей.  Пока что я вижу его как комбинацию из двух датчиков движения и датчика открытия двери. Один датчик движения должен смотреть в сторону двери, а другой - от неё. Датчик открытия двери определяет моменты, когда человек мог войти или выйти из ванной.  Если дверь открыта - то свет должен гореть всегда  (при условии недостаточной освещенности в помещении).  Освещенность брать как среднее из показаний 2 датчиков. Когда дверь закрыта - надо понять, есть ли у нас человек в помещении или нет.  Для этого использовать датчики движения,  и если после закрытия двери в помещении наблюдалось какое-то движение - то считать, что в помещении есть человек, пока дверь снова не откроется. Соответственно не выключать свет. Когда в следующий раз дверь откроется-закроется - снова проверить, есть ли внутри человек, и выключать свет в случае, если в течение 5 минут после закрытия движение обнаружено не будет. Тут есть проблема, что двери душевой кабинки могут закрыть движение от датчиков движения, и система может ошибочно посчитать, что моющегося в душе человека в санузле нет. Поэтому пока думаю, стоит ли добавить в систему еще датчик протечки воды, чтобы определять, что в душе кто-то моется? Видите ли вы еще какие-то изъяны в этом алгоритме?  WEB-разработчик