Когда мы только планировали дизайн проект новой квартиры, я сразу решил, что хочу её автоматизировать. Если начать гуглить проекты умного дома, то чаще всего это не самая простая коммуникация с сервером на антрисолях. И, соответсвенно, не самая дешевая. Это не мой вариант — я хотел дешево и с поддержкой Apple Homekit, чтобы можно было управлять домом через часы на руке. Допускаю, что такая автоматизация дома не самая надежна и безопасная, но рассказать про другую я не смогу.
Признаюсь честно, я просто хочу донести мысль, что сделать базовую автоматизацию квартиры сегодня очень просто. В первой части я подробно расскажу про то, какие девайсы я использовал, как все подключил, с какими проблема столкнулся и сколько всё это стоило. Во второй — какими настройками автоматизации пользуюсь и зачем всё это нужно было. Если первая часть вам не интересна — переходите сразу ко второй, там меньше технической информации.
Часть 1. Запчасти умного дома и цены.
Сразу скажу, что мне всё обошлось не больше 1000$ — в рамках полного ремонта трехкомнатной квартиры это сравнительно не большая сумма. В качестве системы я использовал саббренд Xiaomi Aqara в комбинации с Apple TV.
Умный дом Xiaomi. Как все работает? Настройка и опыт использования
Итак, с большего все держится вот на этом малыше:
Это хаб Aqara, который я купил в Минске за 56$. Он работает точно также, как хаб Xiaomi с маленьким дополнение — Apple Homekit признаёт его как устройство умного дома. А это значит, что все устройства, которые я к нему подключаю автоматически попадают в инфраструктуру HomeKit.
Для работы HomeKit вам также необходимо устройство хаб (это может быть iPad, AppleTV или умная колонка). По сути это устройство всегда должно быть дома (через него уходят и приходят запросы на те или иные действия с умными девайсами). Поэтому планшет мне не подходил и я взял Apple TV (тем более, что я итак планировал им пользоваться для скринкаста с ноута и смартфона).
Сейчас к хабу Aqara подключены 23 умных выключателя, датчик открывания двери, термостат, датчик движения, умная кнопка и пылесос.
UPD. Пол года назад я поменял хаб на третью версию хаба Xiaomi. У него появилась интеграция в Apple Homekit, он поделючается не напрямую в розетку, а с помощью microUSB и по ощущения он шустрее. А также добавил HomePod mini в качестве хаба Apple.
Но самая главная вещь во всей системе это, конечно же, выключатели. Я заказал их посылкой на Али и они обошлись мне в 464$. Часть из них однокнопочные, часть двухкнопочные и все с нулевым проводом (если у вас новостройка, то именно такие вам и нужны).
Вообще выключатели очень красивые, на мой вкус, но имеют не привычную для наших широт особенность — у них нет нажатого состояния. Т.е. когда вы нажимаете на кнопку, она автоматом отскакивает обратно. А ещё у них нет рамок, т.е. они отдельностоящие. И, скорее всего, если бы я не заказал их с самого начала, меня бы уговорили от них отказаться. Сначала дизайнер квартиры, которая не могла придумать, как ставить эти выключатели в одну линию с розеткой, а затем электрик, который в принципе не сторонник современных технологий.
В итоге, дизайнер нашла не самый дешевый модельный ряд розеток у Schneider и оказалось, что они идеально сочетаются с выключателями.
А в качестве остальных розеток, рядом с которыми нет выключателей, мы использовали польские бюджетные Ospel Sanata. В некоторых случаях вынесли выключатель немного отдельно:
Важный момент: есть необоснованный страх, что если хаб отключиться от интернета или питания, то выключатели перестанут работать. Это совсем не так: у каждого выключателя собственное питание и контроллер, который помнит запрограммированную на них автоматизацию. Так что если хаб отключить они все равно будут управлять светом при физическом нажатии.
Еще один нюанс: это использование Aqara Switch для управления маркизами и роллетами на терассе. Родные выключатели открывали или закрывали роллету только пока держишь их нажатыми. Отпустил палец, они автоматом вернулись в исходное положение и перестали подавать питание. В выключателях Aqara все по другому, они подают ток, пока ты повторно не нажмешь на него и не отключишь.
Соответсвенно, можно случайно либо забыть отключить ток, который подаётся на двигатель роллеты (а это не гуд), либо, что ещё хуже, подать ток на движение двигателя в обратном направлении. Этот момент напряг, но в итоге получилось разрулить с помощью автоматизации — об этом во второй части.
Все остальные датчики Aqara супер простые и понятные. Могут крепится на обычный двухсторонний скотч или магнититься. С ними никаких проблем точно не возникнет.
Я достаточно долго выбирал замок на входную дверь и остановился на Danalock c поддержкой Apple HomeKit. Мне понравились отзывы на него и обзоры. Купил в Минске и самостоятельно заменил. В принципе это было не сложно даже для такого рукожопа, как я.
Пылесос Xiaomi конектится через приложение Xiaomi, а не Aqara и только с настройками под китайский рынок. Это немного геморройно. Я повесил все выключатели на других настройках и теперь мне их все надо переподключить, чтобы добавить пылесос. Пока что лень =)
Термостат также подключается через приложение Xiaomi. Я планировал настроить его на автоматизацию с кондиционером, но промахнулся. Монтаж под кондиционер делали на этапе черновой отделки. Когда пришло время выбирать кондиционер, оказалось что все коммуникации сделаны под европейские кондиционеры, а китайский Xiaomi имеет другой диаметр для подключения.
Переделывать коммуникацию желания не было, поэтому я взял обычный кондей c WiFi. Так у меня появилось пятое приложение для управления умным домом. К счастью первые 3 необходимы только для настройки, а пользоваться всем кроме кондиционера можно через HomeKit. Решение получилось не самое удобное — рекомендую продумывать этот момент заранее и ставить кондиционер, которым можно будет управлять через HomeKit.
Часть 2. Что автоматизировано и зачем.
Скажу сразу, автоматизация квартиры — это удобство а не необходимость. Потому что самый частый комментарий, это “тебе что сложно жопу поднять и свет выключить?”. Проще всего это сравнить с телвизором с пультом. Переключить канал не сложно, но я что-то не припомню у кого-то из знакомых телек без пульта =)
Самое крутое это свет и двери. Установленный замок Danalock мне в целом нравится, хотя у него случаются глюки и он может долго не закрываться или открываться через Homekit. В этом случае, можно зайти в его родное приложение, что случается на самом деле редко.
Замок я либо закрываю голосовой командой через часы, либо использую Siri шорткат, вынесенный ярлыком на главный экран: Hello (открытие) и Buy-buy (закрытие).
Опасения: самое частое опасение, связанное с замком, это что разрядиться телефон. Скажу сразу, у меня такого почти не бывает, но даже если и произойдет, я могу открыть замок с помощью часов. Разрядить и то, и другое сложно. Ну а для совсем параноиков этот замок можно открыть и с помощью обычного ключа (который я с собой не ношу).
Для того, чтобы полностью отказаться от ключей, мне нужно было поставить ещё один замок в дверь тамбура и придумать как я буду открывать дверь подъезда. В итоге в тамбуре был успешно установлен замок Xiaomi с отпечатком пальца, кодовой панелью и интеграцией в Homekit. В целом, достаточно только первого – отпечатка пальца.
Кодом мы с соседом договорились не пользоваться вообще, т.к. это супер не безопасно. А открывать через Homekit все равно дольше чем отпечаток. Плюс я добавил отпечатки даже родителей, на всякий случай.
Ну а для открытия двери подъезда я заказал себе и супруге RFID браслеты у нашей обслуживающей организации. Браслеты запрограмированы на открытие подъезда и калиток во двор.
Свет. Конечно, этим я пользуюсь больше всего. Во первых, двойные выключатели Aqara могут использовать как тройные: можно настроить автоматизацию при одновременном нажатии двух клавиш. Так у меня например отключается весь свет и вентилятор в ванной (подсветка зеркала, декоротивная подсвветка, общий свет и вентилятор) и весь свет в спальне (включая прикроватные лампы).
Самая крутая фича: это отключение всех выключателей, когда я ухожу из дома. Эта часть автоматизации шортката Buy-buy, т.е. я одновременно закрываю замок и выключаю весь свет в квартире. Этот же шорткат я использую, когда ложусь спать.
Датчик открывания/закрывания двери отправляет команду включить свет в корридоре на 5 минут при каждом открытии входной двери. Спусть 5 минут свет сам выключается. Также этот датчик нужен для безопасности, т.к. моя квартира находится на первом этаже. Такие же датчики я планирую поставить на все окна (это примерно 10$/штука).
Шорткат Hello помимо открытия замка, также включает внешнюю подсветку окна (это я настроил на время зимы, когда вечером после работы на улице уже темно — лампочки по периметру создают отличную атмосферу в квартире.
Как я решил вопрос с роллетами и маркизами? На каждый выключатель я сделал две команды:
1) отключить второй выключатель если нажат первый и наооборот (это позволяет не сжечь двигатель маркизы или роллеты);
2) отключить выключатель через 12 или 15 секунд после нажатия (это позволяет отключить подачу тока на двигатель, после того, как роллета или маркиза открылась/закрылась полностью).
Конечно, со светом гораздо больше кейсов использования: от выключения света в комнатах, когда забыл выключить с помощью голосовой команды в часы, до беспроводного дублирования выключателей там где это надо.
Также в ближайших планах добавить под раковину, стиральную машину и посудомойку датчики протечки воды. Есть мысли на счёт камер наблюдения, но тут возникают вопросы безопасности.
В целом, получившаяся система меня вполне устраивает, и вряд ли я ее буду менять в ближайшее 5–10 лет. Скорее наооборот буду добавлять в эту инфраструктуру дополнительные девайсы. Например датчики протечки воды или камеры наблюдения на террасу.
Ложка дегтя: буду откровенен несмотря на то, что я в полном восторге от такой автоматизации — она понравится далеко не всем. Например, моя супруга почти не пользуется этими благами нашей квартиры, а первые пару месяцев продолжала открывать умный замок глупым металлическим ключом =) иногда выключатель или замок срабатывает с большой задержкой, иногда может и вовсе не сработать, иногда может сработать, а Сири говорит, что “нет ответа”, бывает такое. Связано всё это с дешевыми устройствами Xiaomi Aqara или с качество WiFi я не в курсе. Пока меня это устраивает, меня это устраивает.
Источник: adtech.medium.com
Конструктор Xiaomi: собираем полный комплект гаджетов бренда для умного дома
В теме
Умный дом — уже не будущее, а наша с вами реальность. Xiaomi — известнейший китайский бренд — позволяет собрать в своей квартире полную смарт-систему, в которую будут входить все необходимые для быта и развлечений гаджеты. Пожалуй, это самый бюджетный способ обустроить свой дом с умом — в прямом смысле этих слов.
Преимущество покупки устройств одного бренда состоит в их идеальной совместной работе, кроме того, в хорошем качестве товаров от Xiaomi убедился уже весь мир. Давайте же посмотрим, чем на сегодняшний день нас радует именитая компания. Кстати, идею этого обзора считаем уникальной — таких конструкторов пока никто не делал! Всё гениальное — просто, а в нашем смысле — ещё и удобно. Начнём!
Комплект умного дома Smart Home
Сперва присматриваемся к существующему набору маленьких, но необходимых для умного дома и весьма функциональных устройств, которые даже сами по себе очень упрощают жизнь. Этот комплект создан для управления гаджетами в фирменной экосистеме Mi Home: как раз то, что нам нужно! Сюда входят следующие приборы: блок управления, датчик открытия дверей и окон, датчик движения, умная розетка и беспроводная кнопка.
Многофункциональный шлюз Smart Home Gateway
Шлюз используется как ночная лампа и работает как будильник с любимой музыкой и лёгким светом. Это устройство также автоматически реагирует на другие приборы умного дома, переводя их в разные режимы работы. Производитель приводит пример с окном: если вы открываете его, чтоб проветрить помещение, увлажнители и очистители воздуха выключаются за временной ненадобностью — их работа в этот момент всё равно будет неэффективна. Датчик дверей и окон для сонастройки — наш следующий прибор из комплекта: благодаря ему и шлюзу можно включить режим охраны дома.
Беспроводная кнопка
Она же дверной звонок с возможностью музыкальных уведомлений через главный блок. Кнопкой можно отключить питание всей умной техники в доме — и не придётся бегать по дому, чтобы всё проверить. Этой же кнопкой можно включить будильник в другой комнате. Соединение кнопки со шлюзом позволяет быть в курсе дел, даже если вы не дома.
Умная розетка
Управляется через приложение, где можно назначить для неё расписание работы: когда включится, когда выключится — это делает её безопасной. Программа Mi Home вообще собирает в себе все смарт-гаджеты, которые у вас есть, и каждому можно дать свою иконку. Розетка также работает со шлюзом и датчиком открытия дверей, и тогда розетка может автоматически включить свет, как только вы вошли в дом.
Датчик движения
Пригодится для включения ночника, когда вы заходите в комнату, где установлен шлюз. А вообще — установить его можно, где угодно — например, около входной двери, чтобы включать свет, когда вы входите в дом, либо для уведомлений о том, что кто-то другой вошёл в дом.
Умный чайник Xiaomi Mi Smart Kettle Bluetooth
Стильный чайник с датчиком температуры: функциональный и безопасный. Все рабочие элементы модели защищены от попадания воды, но даже если жидкость проникнет прямо в подставку, прибор не ударит человека током. Чайник защищает и себя: если в нём нет воды, но кто-то случайно его включил, прибор выключится сам — и не сгорит.
Наличие выбора температуры очень ценно для любителей разных чаёв, так как даже сорта одного вида чая требуют разных параметров заварки. Как подобает умному устройству, оно управляется через мобильное приложение: это супер удобно, ведь нам всем вечно лень идти в кухню и включать чайник, а чаю-то выпить хочется. После закипания можно поддерживать воду в горячем состоянии. Сам корпус устройства снаружи не сильно нагревается, так что обжечься нереально.
Индукционная плита Xiaomi Mijia Induction Cooker
Находка для любого дома, а особенно — если у вас небольшая кухня. Компактная плита только выглядит простой, в действительности же модель способна работать в сотне разных режимов, так что приготовить можно буквально что угодно — благодаря выполнению тех или иных температурных требований. Такая плитка ещё и является безопасной: защищена от перегрева корпуса, отключается, если на ней нет посуды.
Увлажнитель воздуха Xiaomi Smartmi Zhimi Air Humidifier 2
По-хорошему, хотя бы один увлажнитель должен быть в каждом доме, потому что и зимой, и летом воздух в помещениях сильно сушится. Вслед за этим мы испытываем проблемы с кожей, волосами, дыханием, получаем головную боль, усталость и кашель. Любой из увлажнителей Xiaomi заслуживает внимания, а сегодня мы решили выбрать Zhimi Air Humidifier 2. Модель расходует 240 мл воды в час, а пополнить запас жидкости можно прямо через решётку. В вопросе конструкции производитель как всегда придерживается принципов безопасности, поэтому моторный блок отделён от резервуара с водой. Если корпус будет хоть немного сдвинут на стыках, устройство отключится.
Робот-пылесос Xiaomi Mi Robot Vacuum EU
Одно из любимых пользователями устройств для дома — пылесос, который убирается сам. Не удивительно, ведь он экономит время и силы, при этом делать такую уборку можно хоть каждый день. Не каждая модель работает так же эффективно как та, в которую встроены навигационные датчики. Mi Robot Vacuum EU способен создавать карты помещения, а значит — и прокладывать маршруты для уборок.
Скорость вращения щёток можно настраивать, да и вообще — пылесосом можно управлять на расстоянии. Модель избегает столкновения со стенами и препятствиями. Высота корпуса робота-пылесоса Mi Robot Vacuum EU — меньше десяти сантиметров, а значит, большинство пространств под диванами, тумбами, кроватями тоже могут быть очищены. По завершении уборки устройство возвращается на базу и начинает заряжаться. Если очистка помещения не была завершена, то пылесос доберётся до 80% заряда батареи и продолжит уборку, вернувшись на то место, где прервался.
Потолочная лампа Yeelight LED Ceiling Lamp
Отличный способ заменить несколько источников света всего одним. Это возможно благодаря многообразной настройке режимов освещения. Производитель заморочился и добился идеального (по мировым стандартам) температурного режима — он имитирует натуральный солнечный свет.
Регулируя яркость в разное время дня, можно сохранять уютное и комфортное для глаз освещение: может, только начинает смеркаться, может вы присели почитать книгу вечером, может делаете мейкап или готовитесь ко сну — для всего у Yeelight найдётся режим. Кроме смартфона и планшета лампу можно подключить к умному браслету Xiaomi, если он у вас есть, и с него настраивать параметры освещения. Это удобно, если вы спите, не снимая трекер (для отслеживания сна): в этом случае, как только вы уснёте (специально или задремав за книгой), свет погаснет.
Датчик воды Xiaomi Aqara Flood Sensor
Мы все немножко боимся затопления, а особенно — залить соседей. Вот для этого и придуман датчик воды Xiaomi Aqara Flood Sensor: он срабатывает, когда уровень воды поднимается всего на пол миллиметра! В случае протечки датчик включает систему световых и звуковых оповещений, а также сигнализирует о ситуации через мобильное приложение. Если вода уйдёт, то сигнализация отключится. В отличие от обычных современных датчиков, Aqara выглядит миниатюрно и стильно, при этом ни одна протечка в помещении от него не скроется.
Датчик дыма Xiaomi Mijia Honeywell Smoke Detector
Раз пошла такая тема, давайте не забывать и о датчике дыма — он решает проблемы похуже, чем испорченный соседский потолок. Модель имеет сертификат CCCF (от Национальной Пожарной Академии) и способна точно отслеживать концентрацию дыма в воздухе, вовремя сообщая об опасности. Разумеется, при чрезвычайной ситуации сразу включается сигнализация и в приложении появляется уведомление. Помните: пожар легче предотвратить, чем потушить.
Удлинитель Xiaomi Mi Power Strip
Очень нужная в хозяйстве штука! А вы знаете, что именно удлинители являются одними из самых пожароопасных приборов в доме? В Xiaomi тоже об этом знают, поэтому нашинковали устройство всеми возможными датчиками: от скачков тока, перегрева и перенапряжения. Возникновение какой-то из этих проблем маловероятно, но если случится, устройство моментально отключится.
Корпус прибора выполнен из огнеупорного материала. Здесь установлено три стандартных розетки и есть 3 выхода USB. Все отверстия защищены шторками, поэтому не подвергаются загрязнению, а также безопасны для детей и животных.
Электрический водонагреватель Xiaomi Viomi Internet Electric Water Heater
Нагреватель пригодится всем, кто стакивается с отключением воды, а также он незаменим в загородном доме. Вода с таким устройством нагревается быстро и равномерно. При том, что в работе модель превышает все стандарты эффективности, она ещё и умудряется экономить электроэнергию. Приложение позволяет запустить режим высокотемпературной дезинфекции воды: перед тем, как кто-то примет ванну, она прогреется до 80 градусов, устранив все вредоносные бактерии. «Привыкнув» к расписанию использования воды в доме (когда обычно умываетесь, принимаете душ, моете посуду), нагреватель будет готовить её специально к отслеженным временным интервалам.
Универсальный ИК-пульт Xiaomi Mijia Universal Remote Controller
Этот прибор удобен в использовании с устройствами, которые оснащены ИК-портами. Для управления всеми подсоединёнными к контроллеру гаджетами используется встроенный голосовой помощник Xiaomi Mi AI Speaker или умный пульт. Если вы представляете, какое расписание работы домашних приборов вам подходит, его можно настроить в приложении.
Умное мусорное ведро Ninestars Sensor Trash Can
Никто не хочет лишний раз трогать мусорное ведро, а ещё не всегда оно стоит в укромном месте — тогда ему нужна крышка. Вот поэтому Xiaomi и создали смарт-ведро: само откроется, само закроется — за всё отвечает сенсор. Объём ведра составляет 8 литров, в нём удобно закреплять пакет так, чтоб он не соскальзывал при каждом срабатывании крышки. Бренд исполняет все свои изделия в красивом минималистичном стиле и, не поверите, но к мусорному ведру это также относится.
Умный дверной видео-звонок Xiaomi Smart Video Doorbell
Звонок имеет много полезных функций для защиты дома. Например, если человек будет стоять возле вашей двери (отдаление до трёх метров), то на ваш телефон поступит уведомление с этим роликом. Также можно заблаговременно записать аудио сообщение (наподобие автоответчика), которое услышит гость за дверью. Если человек только постучался, система это «услышит» и включит звонок.
Помимо всего этого вы всегда видите, кто стоит за дверью, и можете не открывать незнакомцам. Также, если ваши дети дома одни, можно проделать такую штуку: связать умный замок с колонкой и записать сообщение:»Никому не открывайте дверь». Тогда, если кто-то позвонит в дверь, колонка включится и дети услышат ваше сообщение.
Для безопасности человека в квартире придумана также функция SafeSound, которая может естественно изменить тембр голоса человека — сделать его взрослее, серьёзнее, ниже: этот голос и услышит человек за дверью, если вы решите ему ответить. Далее, звонок работает с распознаванием лиц, так что система всегда знает, если пришёл незнакомый человек или тот, кто не входит в список своих.
Умная крышка-биде для унитаза Xiaomi SmartMI
Переходим к менее серьёзному, но очень даже полезному устройству — умной крышке для унитаза! Почему нет? Прибор оснащён встроенным биде с системой нагрева воды: там есть режим равномерного нагрева, а есть и контрастный — ну мало ли. Направление и напор струи можно отрегулировать, также есть насадка — по типу душевой.
Здесь работает система регулярной очистки насадок с помощью воды и ультрафиолета. Проблема прохладного сиденья тоже отменяется — оно тут с подогревом. Кроме всего, умная крышка никогда не хлопает — потому что не падает, а опускается плавно.
Колонка Xiaomi AI Speaker HD
У Xiaomi много умных колонок — выбирайте любую: например, Xiao Ai Speaker HD. Модель предлагает хорошую проработку всех частот и эффект объёмного погружения — иными словами, всенаправленное звучание и покрытие звуком всего пространства. Колонка работает с фирменным голосовым помощником, так что можно включить музыку или аудио книгу, просто «попросив».
Умные весы Xiaomi Mi Body Composition Scale
Обычные весы — интересно, но не очень. Если вы правда заботитесь о своём здоровье, в самый раз обзавестись более продвинутым устройством, которое сможет отслеживать разные показатели организма. Данная модель приглянётся любителям спорта, ведь она может рассчитать точный индекс массы тела — количество жировой массы в организме. Весы способны рассчитать с десяток различных показателей, которые нужны для понимания правильной работы со своим телом. Так, пользователь поймёт, каков объём его мышечной массы, обмен веществ, количество воды в организме, костная масса и другие показатели.
В завершение
Как видите, Xiaomi позаботились о каждом уголке дома, чтобы повысить комфорт и заставить каждую вещь работать на нас. Бренд придерживается своего фирменного стиля — это простые красивые линии, минимализм и белый цвет: таким образом гаджеты идеально сочетаются между собой и могут быть гармонично вписаны в любой интерьер. Создав уютное и функциональное пространство с умными устройствами от Xiaomi, остаётся только удивляться, каким удобным может быть ваш дом.
Если вам интересны подобные обзоры, добавляйте нас в закладки, чтоб не потерять. Ежедневно мы публикуем самые любопытные материалы на темы, которые нас всех волнуют и увлекают: новинки гаджетов, игры и гейминг, аксессуары и современные технологии. Мы готовим анонсы, новости, обзорные и сравнительные статьи и распаковки. Все публикации удобно собраны по разделам, чтобы навигировать по сайту было комфортно. Заглядывайте!
Источник: gadgetpage.ru
Умный дом xiaomi правильнее, чем home assistant, но можно еще правильнее
Со временем накопилось понимание как устроены разные инкарнации умных домов, с точки зрения реализации сценариев и протоколов взаимодействия. С этим знанием я наделал устройств и реализовал для них «правильную» распределенную среду программирования для IoT с lisp-ом, криптографией и сборкой мусора. Под катом поведаю о ходе и результате процесса.
Особенности сред
- Простой udp прокол взаимодействия с легким налётом криптографии
- Устройства активно общаются между собой, не требуя центра
- Сценарии выполняются на самих устройствах, а не на центральной машине
- Считает все устройства тупыми исполнителями, неспособными ни на что без него
- Собирает все данные и раздаёт все команды
- Сценарии не подразумевает прямого общения между устройствами, минуя Home Assistant
- Single Point of Failure
Главная проблема в централизованном подходе home assistant — имущественный ценз. При покупке умной розетки ~1000руб, для её работы с Home Assistant придётся докупить Raspberry PI ~4000руб, ведь Home Assistant надо на чем-то запускать. Такие натяжки бюджета резко охлаждают пыл желающих отведать умных домов и тормозит всю индустрию.
Через несколько абзацев выяснится, что устройства умного дома почти всегда оснащены совсем не детским CPU, силы которых хочется использовать, а не загонять в рамки «Я — начальник, ты — дурак» им. Home Assistant.
В то же время xiaomi реализовали правильный децентрализованный протокол, но зачем-то сузили возможности устройств ограничив их стрёмным, но развесистым json-based dsl (личное впечатление составлять тут).
В голове созревало видение «правильной» среды для управления умным домом, но без реального приложения реализовывать протокол задумка пустая. Я изучал соседние протоколы zigbee/ble и контроллеры esp32/nrf51 и собирался с мыслями, разбирался и собирался снова…
Внезапно во мне самозародилась потребность измерять качество воздуха в окружающей среде.
У Xiaomi не нашлось измерителя CO2, ломать еще одного китайца, чтобы он заработал с home assistant не хотелось, а с прошлой серии во мне дребезжал гештальт, что неплохо бы научиться паять….
Следуя зову паяльника, я решил вручную, то есть самостоятельно, породить устройств для умного дома, а заодно ознакомиться с микроконтроллерами, arduino-ide (мимо меня прошло как-то), понять достаточно ли моих знаний физики, чтобы использовать мультиметр во благо, но без инструкции, а также потешить самолюбие реализацией «правильного» умного дома.
Под этим предлогом была зачата секретная лаборатория
Что хотелось создать в качестве Proof of concept:
- Устройство измеряющее CO2 — сенсор 1шт
- Устройство получающее и демонстрирующее данные с сенсора — дисплей 1шт
- Создать прошивки для этих устройств — 2шт
- Создать интеграцию устройств в home assistant — 1шт
- Создать cli инструменты для работы с устройствами — 1шт
- Устройства должны иметь возможность работать как с центральным сервером, так и позволять прямое взаимодействие друг с другом
Контроллер
Логи home-assistant при подключении к устройствам Xiaomi сдали их компонентную базу строчкой лога «chuangmi.plug.v3 1.3.0_92 ESP8266 detected». Разведка сообщила, что ESP8266 — это дешевый (~100руб/шт) китайский микроконтроллер, нежно любимый и горячо поддерживаемый всеми и каждым. Этот чип умеет общаться без проводов по Wi-Fi, а с проводами по I2C/SPI/UART/GPIO. Также ESP8266 оснащен довольно мощным вычислительным ядром Xtensa 80/160Mhz 32-битный 112Кбайт памяти разработки калифорнийской компании Tensilica (там какая-то мутная история, tensilica была распущена в 2013, а esp8266 был замечен общественностью в августе 2014), а еще там есть 1Мб флеш памяти, которого по легенде должно хватать на всё.
Вот и прекрасно фокусируюсь на них. ESP8266 продается в модулях с разными формфакторами. Для простоты ручной сборки взял модули esp201 — они удобнее других тем, что уже распаяны на гребенку 2.54mm. В ожидании доставки вникаю в примеры кода arduino и даташиты…
В процессе прокачиваются навыки работы с паяльником и мультиметром…
Всплывает минус ESP8266. Xtensa и Wi-Fi очень прожорливы — настолько, что устройства делающие что-либо отличное от сна будут выжирать батарейку за недели в лучшем случае. Для батареечных устройств надо брать например nrf51 (~150руб/шт). Обидно досадно, но ладно. Будем втыкать устройства в розетку.
Датчик CO2
На просторах Aliexpress нашлось несколько типов сенсоров CO2 (подробнее тут). Мой выбор псевдослучайным образом пал на CCS811 (дрова тут). Они оказались довольно дорогими (~500руб/шт) и прожорливыми, так как для замеров CO2 и TVOC сенсор содержит нагревательный элемент, подогревающий воздух перед анализом, греется он не мгновенно и ощутимо жрет энергию до 60мА, что практически исключает применение CCS811 в батареечных устройствах.
Экран
Для экрана подойдут LED модули 8×8 пикселей на max7219 (~100руб/шт). Тоже нуждаются в обильном питании.
Питание
Чтобы эти модули были показательно независимы от всего кроме розетки купил блоков питания hlk-pm03 (~200руб/шт). Это 4х-ногое устройство; две передние ноги которого суются в розетку 220v AC, а две задние подают 3.3v DC в цепь питания esp8266.
Сверху присыпать двумя щепотками резисторов, конденсаторов и кнопок. Канифоль и припой добавляем по вкусу. Припугивать паяльником до готовности (если интересна схемо-распаячная часть с мультиметром и бредбордами реквестуйте в каментах — опишу).
Устройства
В результате вышеупомянутых изысканий народилось два устройства:
- SensorPack — CCS811 примотанный к ESP201 по I2C (туда же примотаны по инерции еще несколько датчиков, но в пользу краткости описания их опустим)
- Pixel — Красноглазая LED матрица 8×8, обвязанная max7219 и доставленная на ESP201 по протоколу SPI
Так выглядит SensorPack в интерьере
А так Pixel на фоне бинокля:
В процессе сборки устройств были накостылены прошивки которые:
- Заливаются через USB/UART в устройство
- Печатают в UART «Hello world!»
- Подключаются к Wi-Fi
- Запускают CCS811 и печатают в UART показания с него
- Включают/выключают пиксели на led матрице
Это простые прошивки в 20-50 строк каждая. Их успешное выполнение доказывает работоспособность сборки и вменяемость драйверов.
Осталось создать прошивку, которая предоставит пользователю:
- Простой протокол обмена сообщениями с/между устройствами
- Хоть немножко шифрования при обмене данных с/между устройствами
- Удобный DSL для взаимодействия с/между устройствами
Протокол обмена
Основанный на udp протокол, используемый Xiaomi в их wi-fi устройствах, мне понравился своей простотой. Там сообщение — это один udp пакет, в ответ на такой пакет принимающая сторона должна кинуть на ip/порт источника пакета ответ — тоже udp пакет. Если ответа нет — перепосылка.
Очень просто, понятно — берем как есть Исходников от xiaomi нет, но есть клиенты опенсорс реализаций (например такая), воспроизводим по наитию, выкидывая непонятное и/или ненужное под лозунгом «Faster! Harder! Scooter!» «Меньше — лучше!».
В процессе для отладки зародились клиент и сервер для реализуемого протокола на python.
Сначала клиенты на python начинают общаться по реализуемому протоколу между собой, затем с устройством.
Шифрование
У Xiaomi-miio из открытых алгоритмов строится очень причудливая симметричная схема шифрования сообщений (детали тут).
Выкидываем её за борт, берем aes128-cbc и реализуем следующий формат сообщений:
- Первые 128бит пакета — Initialization Vector (IV) для расшифровки сообщения с aes128
- Остальные данные пакета — выровненное по длине блока сообщение, зашифрованное общим ключем с помощью aes128
Аналогичная логика работы с ключом, IV и пакетами реализуется в python и на устройстве через arduino api.
Вот тут для наглядности можно глянуть python реализацию
Текущая реализация использует IV, генерируемый случайным образом, поэтому подвержена replay attack. Чуть утешает, что xiaomi тоже подвержена replay attack, чем я активно пользовался 🙂 Зачинится, если часть IV сделать монотонно возрастающим и хранить на устройствах последний IV для каждого устройства, с которым велось взаимодействие. Надеюсь такие финты ушами не нарушат криптографических заповедей.
Как разговаривать будем?
К этому моменту у меня есть устройства, умеющие общаться со мной, посредством python-скриптов, и между собой, используя реализацию протокола в прошивке. Но сообщения эти никак не влияют на поведение устройств, бесцельно летают по воздуху туда-сюда. Что я хочу гонять в этих сообщениях?
В устройствах довольно много FLOPSов и есть памяти чуть, а значит их можно использоваться как программируемые устройства, чтобы такие вещи как перевод из Цельсия в Фаренгейты выполнялись прямо на сенсоре, дальше больше. Так может они и скрип выполнить могут, чтобы на каждый чих прошивку не обновлять?! Форматировать строки, анимировать картинку на led матрице, вычислять медиану для n последних замеров — это всё можно и должно делаться на устройстве.
Первой мысль было взять JS его все знают. Но ESP8266 отказался выполнять JS, ибо вменяемых реализаций в дикой природе обнаружено не было. Зато нашелся Lua, да еще с готовой прошивкой NodeMCU для ESP8266. Подходит, заодно и lua попрактикую.
Реализовал протокол и шифрование уже на lua и всё было хорошо пока…
Пока не оказалось, что:
- В 1мб доступный на esp201 много кода lua не загнать
- Пропагандируемый в NodeMCU подход реализовывать драйвера устройств прямо на lua приводил к жонглированию прошивкой, дабы она не вылетала из за нехватки памяти. Штирлица учили, что системы показавшие свою хрупкость при создании прототипа, должны в прототипе и остаться…
lua был отправлен на свалку, и начались поиски более правильного инструмента.
uLisp
- Принимает udp пакет
- Расшифровывает его
- Декодирует сообщение в строку
- Интерпретирует строку через ulisp
- Кодирует в строку ответа s-expression результата работы интерпретатора
- Шифрует ответ
- Отправляет ответ в ip/порт источника входного пакета
- Добавляет в api ulisp функции для работы с CCS811 и Max7219
В отличии от Lua прошивки, с ulisp я брал уже драйвера от arduino и заворачивал их в ulisp функции. Сам ulisp используется исключительно как клей, объединяющий высокоуровневые функции, реализованные на C++. Такой подход позволяет экономить память, сделать lisp программы более читабельными и использовать огромную базу драйверов от arduino.
В моей сети устройства адресуются так:
192.168.2.99 — IP адрес SensorBoard
192.168.2.174 — IP адрес Pixel
Как это работает в лабораторных условиях:
python tools/client.py —ip 192.168.2.99 —message ‘(+ 1 2)’ —key YOUR_AES128_HEX_KEY >> (+ 1 2)
Для получения доступных возможностей устройства можно вызвать метод discovery. Он возвращает список специфичных для устройства функций, доступных на устройстве в дополнение к стандартным функциям ulisp.
python tools/client.py —ip 192.168.2.99 —message ‘(discovery)’ —key YOUR_AES128_HEX_KEY >> (discovery)
Через эти функции читаем показания CCS811
python tools/client.py —ip 192.168.2.99 —message ‘(list (co2-read) (tvoc-read))’ —key YOUR_AES128_HEX_KEY >> (list (co2-read) (tvoc-read))
Вот такой сетевой REPL, но это слишком просто Еще у нас есть методы для прямого взаимодействия
python tools/client.py —ip 192.168.2.174 —message ‘(discovery)’ —key YOUR_AES128_HEX_KEY >> (discovery)
show — выводит на экран led матрицы бегущую строку
request — это метод, отправляющий сообщение другому устройству, используя его можно сделать инициатором сообщений, например вот так
# форматируем сообщение и отправляем его бегущей строкой на led матрицу на 30 секунд (defun show_sensor (x) (show (format nil «CO2=~a TVOC=~a» (first x) (second x)) 30000)) # раз в 33 секунды, запрашивает данные с сенсора и передает их в show_sensor (periodic 33000 (quote (request «192.168.2.99» 54321 (quote (list (co2-read) (tvoc-read))) ‘show_sensor)))
Загружаем эту программу в Pixel
$ python tools/client.py —ip 192.168.2.174 —mfile ulisp_scripts/red.ulisp —key YOUR_AES128_HEX_KEY
Наблюдаем как Pixel отрисовывает полученные с SensorPack показатели датчиков
Такая вот lisp среда позволяет работать с устройствами умного дома и реализовывать сценарии без центральной машины. И по заветам Raspberry PI — даёт пользователю возможность обучиться создавать доселе невиданное. По идее можно написать транслятор, берущий на вход автоматизации из-под Home Assistant и выплёвывающий lisp код. Это позволит избавиться от SPoF, но потребует довольно существенного вмешательства в устройство Home Assistant.
Интегрировать в Home Assistant такие устройства тоже несложно, пример тут
PoC кода прошивки, скриптов, утилит и прочих артефактов производства тут
Еще фото SensorPack с хвостом USB и антенной Wi-Fi
По ходу жизнедеятельности мне приходилось создавать базы данных, трансляторы, среды исполнения, dsl, но до сих пор не было случая применить lisp для пользы дела. Кажется здесь он вошел под правильным углом, предоставляя динамическую среду исполнения со сборщиком мусора и s-expression для кодирования структур (аналог json, но еще глубже вшиты в язык, любое выражение lisp — это s-expression).
Пойду лепить более другие устройства на этом же протоколе, на очереди ESP32 и NRF51…
И параллельно допиливать прошивку до более продуктового состояния, если вдруг интересно присоединяйтесь!
P.S. Все нападки на Home Assistant выполнены с большой любовью, я там даже чуть комитер.
Источник: temofeev.ru