Сегодня я расскажу вам о HomeKit устройствах для нищебродов. HomeKit это старая, но не особо распространенная концепция умного дома от Apple. Выглядит оно отлично, стандартное начиная с iOS 10 приложение,  позволяющее управлять всеми лампочками, чайниками и прочим.

Однако не особо распространен Apple Home именно из-за цен на устройства, например лампочка стоит от 3000₽, розетка — 6000₽, термостат — 12000₽ и так далее.

Энтузиасты давно придумали и внедрили homebridge — "поддержка HomeKit для нетерпеливых", сервер на nodejs, крутящийся в локальной сети и позволяющий добавлять в умный дом устройства, которые не поддерживаются официально. Минусы у этого решения есть — необходимость постоянно держать в сети запущенный сервер (для этого рационально использовать raspberry pi, моя уже в пути) и все равно нужен хаб для управления извне локальной сети — Apple TV 4, HomePod или воткнутый в розетку iPad.

Однако прогресс не стоит на месте и существуют решения для некоторых устройств, не требующие ни того, ни другого.

Взять к примеру газовый котёл для отопления дома. Обычный котел имеет регулировку температуры, но это температура носителя — воды. И котлу глубоко параллельно, что в доме температура приближается к 30 градусам цельсия — он будет жечь газ и греть воду в трубах до 40 градусов минимум (зависит от модели котла). У меня Electrolux Basic 24:

Electrolux Basic 24

У него масса настроек, он знает день недели и время, может резулировать температуру (носителя) в зависимости от этого. Умеет работать с датчиком (проводной, от 7000 рублей, под заказ), но через жопу — он ставится на улице и смотрит погоду, потом в зависимости от погодной зоны регулирует нагрев. Это мало коррелирует с температурой в доме и поэтому есть возможность подключить комнатный термостат.

Этот прибор смотрит на температуру в доме и в зависимости от нее включает или выключает горелку — намного более рационально чем смотреть погоду. Но они тоже небюджетные и либо тупые проводные (от 4000 рублей), либо проприетарные и стоят около 9000.

Прямо сейчас я расскажу как сделал из говна и палок подручных средств и с интеграцией в HomeKit, фактически это термостат для любого современного газового котла с полной поддержкой HomeKit за менее чем 1000 рублей.

Берем у разорившихся майнеров обычную релюшку Sonoff, мне в Саратове такая обошлась в 500 рублей (в Китае от 290):

Sonoff Basic

По задумке производителя это устройство получает 220в и по команде пользователя, получаемой через Wi-Fi и проприетарное приложение, передает их дальше, выдерживает 10А. Железка качественная и реально держит большие токи.

Просим друга с прямыми руками припаять (1 пиво или бесплатно) гребенку (20 рублей) на пять дырочек на плате (тут уже с проводами, сорри):

Немаловажный момент — пока друг с прямыми руками рядом, нам надо чтоб реле работало как простой контактор, по команде замыкающий цепь (aka "сухие контакты"). Для этого надо перепилить (с двух сторон, это уточнение написано кровью) одну из силовых дорожек, а потом тестером проверить результат.

Покупаем USB-UART штуковину (190 рублей в столице Поволжья, 30 в Китае) и подключаем, поменяв местами RX и TX при выключенном питании 220В, это очеь важно =). К сожаленью картинок не сохранилось, но тут поможет вот это: распиновка Sonoff basic.

Чтобы эта штука работала под Mac, нужны драйвера, которые лежат здесь. Проверяем что устройство видно (второе в списке), вытыкаем его из USB порта:

MBP:RavenCore ptath$ ls -lah /dev/cu.*
crw-rw-rw-  1 root  wheel   21,   1  7 дек 01:52 /dev/cu.Bluetooth-Incoming-Port
crw-rw-rw-  1 root  wheel   21,  13 16 дек 23:00 /dev/cu.SLAB_USBtoUART

Идём на Github и внимательно читаем про RavenCore, весьма технологичную прошивку, которая в дальнейшем будет сама себя обновлять без необходимости подключения проводов. Скачиваем бинарники.

Убеждаемся что не воткнули в розетку Sonoff, иначе все взорвется. Подключаем припаянные контакты к переходнику, зажимаем на Sonoff единственную кнопку и только тогда втыкаем в USB компьютера (режим прошивки). После этого кнопку можно отпустить.

Нам нужен python3 и esptool, все ставится через brew или ручками.

MBP:RavenCore ptath$ esptool.py -p /dev/cu.SLAB_USBtoUART --baud 115200 write_flash -fs 1MB -fm dout -ff 40m \ 0x0 rboot.bin 0x1000 blank_config.bin 0x2000 otaboot.bin

Прошивка занимает пару минут, после этого подключаемся к Wi-Fi сети OTA-чтототам и она сразу откроет браузер, в котором надо указать имя и пароль домашней, постоянной сети и ссылки на бинарники прошивки в интернете (не обязательно, но иначе придется каждый раз разбирать и прошивать руками как сейчас):

RavenSystem/ravencore
main.bin

После этого жмякаем зеленую кнопку Join и ждем около минуты пока железка перезагрузится и подключится к домашней сети. В приложении Home добавляем новый аксессуар, выбираем "Нет кода или не можете сканировать" и пишем пин 02182017. У меня ожидание заняло почти две минуты, стоит набраться терпения.

Для того чтобы оно работало как термостат, надо подключить датчик температуры. Прошивка поддерживает стандартные DHT-11 (150 рублей в Саратове) и DHT-22 (300 рублей), а также более современные и дорогие, которые я просто не нашёл в наличии. На припаянные ранее пины подключаем датчик — питание, земля и дата, один свободный. У меня от датчика до Sonoff 10 (десять) метров обычного телефонного провода:

Проверяем работу в Apple Home и лезем в сам котёл (отключив его от 220 конечно). В инструкции к котлу находим пины, отвечающие за комнатный термостат, — на них должна быть перемычка или длинные провода.

Пины термостата на котле с завода нормально замкнуты, то есть наша железка для нагрева тоже должна их замыкать, а для остановки — размыкать. Перепаянный Sonoff нормально разомкнут и только по сигналу с датчика о целевой температуре (её понижении до порога) замыкает контакты.

Питание Sonoff можно завести с самого котла чтобы не висели сопли. У меня в итоге из котла просто выходит 10 метров провода с датчиком, потом повешу где-то на стене на уровне пояса.