Захотелось мне сделать свой дом умным. И чтобы он был дешевым, простым и надежным. Как оказалось, это сделать возможно. Но... готовых умных домов я не смог найти. Те, что имелись на рынке, либо дорогие, либо нефункциональные, либо невнятные и т.д. и т.п. Вспомнил я про Arduino. И оказалось на нем можно это сделать (точнее не на нем, а на очень похожем на него контроллере ESP8266). Правда это уже будет целым хобби. Просто взять купить и поставить не получится. Нужно искать, собирать, паять, соединять и конечно же программировать. Ок, поехали!
Это первая моя статья на тему моего умного дома. В дальнейшем я буду выкладывать следующие статьи о том, что я конкретно сделал и как.
На кого рассчитана статья?
Она рассчитана на обычных прикладных программистов, которые живут в коттеджном поселке в своем собственном доме, которые радиоэлектронику знаю на уровне обычной школы. Которые в силу своей занятости не могут тратить огромное количество времени на изучение микроконтроллеров и радиоэлектроники, но хотели бы в качестве хобби сделать и обслуживать свой собственный умный дом.
Профессионалам по электронике не будет это интересно. Я рассказываю про свой путь с нуля.
Что в итоге должно получится?
В итоге должна появится база, на основе которой можно делать сложную систему умного дома и реализовать свои сценарии. Например мне интересны такие сценарии:
Соединить сетевой увлажнитель, обогреватель, кондиционер, принудительную вентиляцию, датчики температуры, датчики влажности, датчики углекислого газа в одну систему, которая обеспечила бы нормальный микроклимат в комнате.
Кнопку 'Я ушел из дома'. По которой в доме отключались приборы: например освещение, утюг, паяльник.
Датчики движения и присутствия с основным освещением комнаты. Для выключения освещения, если в комнате никого нет в течении какого-то времени.
Требования к умному дому
Итак, требования к умному дому, как хобби, такие:
Обойтись по возможности без пайки.
Не вдаваться глубоко в радиоэлектронику.
Все задачи решать в основном программированием.
Языки программирования C++ и JavaScript.
В качестве связи устройств использовать Wi-Fi, 1-Wire, I2C.
Устройства должны быть дешевле чем Xiaomi.
В общем, если заметили, требования как у программиста. Если можно, то все решать программированием. Автор все-таки программист, а не писатель и тем более не радиоэлектронщик.
Устройства
После поисков был найден микроконтроллер ESP8266. Он программируется легко как Arduino. У него есть Wi-Fi на борту. Цена начинается от 80 рублей за штуку. В общем соответствует требованиям полностью. Я бы взял Arduino, но у него, к сожалению, нет на борту Wi-Fi. Единственное что смущает это энергопотребление. Но такого требования как батарейки у меня нет. Пока нет.
Контроллер ESP8266 оказался таким дешевым, что можно на каждый датчик или исполнительное устройство ставить по такому контроллеру. Можно ли так делать или нет я пока не знаю. Это я буду проверять уже на практике. Физических препятствий этому нету.
Так как ESP8266 является весьма мощным контроллером, то к нему можно подсоединять несколько датчиков и исполнительных устройств. Поэтому можно сделать гибридную сеть (Wi-Fi + провода). Несколько ESP8266 соединяются с сервером по Wi-Fi. А на каждой ESP8266 могут быть несколько устройств, подсоединенными по 1-Wire или I2C. Например, сеть температурных датчиков.
ESP8266 можно программировать самостоятельно. Как Arduino. Я так и хотел сначала сделать, но нашел такое явление как готовые и универсальные прошивки для ESP8266. Их довольно много. Я выбрал под свои требования ESP Easy. Ее возможностей хватает для всего что мне нужно.
Сервер
Кроме ESP8266 в схеме умного дома будет сервер. Ну куда ж без него. Его можно написать полностью самому. Но ознакомившись с темой умного дома я нашел такие универсальные средства как: MQTT-брокер, средство визуального программирования Low Code Node Red и мост Homebridge. Последнее я припас для соединения своего умного дома с Apple HomeKit + Siri. Эти средства оказались настолько популярными, универсальными, простыми, надежными, что я решил на их основе и строить сервер.
Куда же размещать эти программные сервера? Можно просто на ноут кинуть или на что-то более специализированное. Можно также в облако. Особых требований у меня пока нет для выбора физического сервера, потому остановился на том, что больше все понравилось, а именно Малина. Итак, для сервера выбрал Raspberry Pi Zero W, который отвечает всем требованиям: цена 1500 рублей, wi-fi на борту, простота в программировании. И еще можно его запихнуть в DIN-корпус для установки в электрощиток.
Резюме
В итоге получилась такая схема. В электрощитке будет находиться Raspberry Pi Zero W для хранения логики работы моего дома. Без него умный дом работать не будет. Поэтому запитываться он будет от сети и от резервной аккумуляторной батареи.
Каждое устройство создается на основе ESP8266. Запитываться будет либо от сети либо от батарейки. Если батарейки не будет хватать хотя бы на полгода, то придется подумать как э��о решить (тут мне подсказывают, что ZigBee позволяет создавать более экономные устройства, чем Wi-Fi, но ZigBee более сложный, чем Wi-Fi).
В качестве голового помощника выбраны Siri и Алиса. Siri очень легко подключается. Алиса чуть сложнее. Остальные голосовые помощники отпали, т.к. информации по ним практически нет. Да и на айфоне кроме Siri и Алисы никого нету.
Что дальше?
Дальше я расскажу как собрал первое тестовое устройство. Имитация лампы освещения и кнопки. В качестве лампы будет обычный светодиод. Кнопка просто кнопка. И еще в устройстве будут два датчика DHT11 (влажность) и BMP085 (давление и температура). Все это будет подключено к Homekit и Алисе.
Продолжение: Мой умный дом на ESP8266, часть 2