Захотелось мне сделать свой дом умным. И чтобы он был дешевым, простым и надежным. Как оказалось, это сделать возможно. Но... готовых умных домов я не смог найти. Те, что имелись на рынке, либо дорогие, либо нефункциональные, либо невнятные и т.д. и т.п. Вспомнил я про 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