История создания децентрализованного умного дома от LOOK.in

11 янв. 2019 г.

С чего все начиналось

Всем привет!

Меня зовут Дмитрий и я один из основателей проекта LOOK.in.

Наша цель - сделать систему «Умный дом» доступной.

В далеком 2014 году во время планирования ремонта в квартире я решил, что стоит запланировать управление климатом. Приточная вентилляция, отопление, кондиционер - вот это вот все. Изучил рынок, и остановившись на Z-Wave, с песнями, плясками и бубном помчался в сторону автоматизации. Проект удалось реализовать не полностью - к сожалению, например, полноценное управление отоплением сделать не удалось из-за внешних ограничений, но, в целом, худо-бедно у меня появился «умный дом». Лампочки управляются, датчики срабатывают, пол греется, электроприборы «вкл / выкл» делают, планшеты управляют, зайчаток мультирума есть. Задал сценарии, написал скрипты, собрал, подключил и с визгом порося понесся радоваться достижениям человечества.

Но радость была не долгой. Умный дом сейчас - это тихий ужас. Чуть более, чем полностью. 

Мои ощущения ниже по тексту. Думаю, что они знакомы многим из вас.

WTF?! Проблемы

Самая главная и первая проблема, с которой я столкнулся — это постоянные перебои в работе дома.

Вот сидишь ты на важном совещании или находишься в другом городе и тут срочный звонок. На проводе супруга, которая говорит: «Свет опять не работает». В следующий момент ты уже несешься к ноуту, чтобы открыть консоль и выполнить пару магических команд или советуешь «перезапустить фибару», чтобы жена смогла хотя бы что-то в квартире разглядеть. В простейших случаях это просто зависание, которое решается ребутом, но это было бы слишком просто.

За 4 года я сменил 3 контроллера. Они просто умирали. Умирал стик, умирал разбери, сейчас Home Center Light, но он тоже пару раз зависал наглухо. Последний раз после его зависания меня перестало пускать под рутом. Что с этим делать пока непонятно.

Нет, я сам из ИТ-мира и понимаю, что устройства могут виснуть и дохнуть, но когда речь идет о том, что у тебя умирает контроллер, на котором завязан весь дом — это потеря потерь. Ладно, если температуру не знаешь или пол холодный, это можно пережить, но вот полную темноту и невозможность разглядеть кота, перед тем как наступить ему на хвост — это уже слишком. Я, конечно, пряморук и поковырявшись с фонариком в зубах в щитке свет могу включить, но осадочек остался. При свечке душ принять не получается - тухнет.

Вот и выходит, что не смотря на 21-ый век, чуть что пойдет не так, нужно доставать запас свечек и фонариков. Конечно, все можно продублировать кондовыми выключателями, но это какой-то совсем не тру путь.

Второе — сложность настройки. Удобных редакторов сценариев пока не встречал. Думаю, такие все-таки существуют в природе, но в основной массе настроить тот или иной сценарий — еще тот квест. Нужно либо обладать минимальными знаниями в программировании, либо делать это через большое количество абсценентной лексики. В том же вышеупомянутом Home Center Light невозможно без проблем сделать сценарий «Если сработал датчик движения и время с 7:30 по 9:30, то включить свет в квартире», нужно городить огород с переменной и только потом появляется возможность реализовать задуманное.

Третье - стоимость. Как ни крути, а стоимость автоматизации сейчас относительно высока. При долларе «за 30» все было по-другому. Да, в последнее время на рынке появилось большое количество Xiaomi и других китайских устройств, но они не могут обеспечить всех требуемых функций. Поэтому стоимость полноценной автоматизации жилища зачастую составляет от 1400 рублей за квадрат. И, зачастую, большую часть из нее составляют затраты на контроллер. Это как с умными часами. Когда в 2016 году на рынке появились вполне функциональные устройства с доступной стоимостью - продажи на рынке выросли скачкообразно. Такие девайсы выступили драйвером всего рынка, появилась конкуренция и покупатели только выиграли.

Требования к умному дому

Исходя из предыдущего списка я сформировал свои требования к умному дому и его составляющим:

Надежность

Тут все просто. Выход из строя одного из узлов дома не должен повлиять на остальные. Никак. Сгорел управлятор теплым полом - пол холодный, все остальное работает. Если вышел из строя датчик, то со светом можно поработать альтернативным образом, например, из приложения.

Взаимозаменяемость

Если какой-то компонент вышел из строя, то я, как пользователь, хочу максимум в пару тапов ввести в эксплуатацию девайс, который заменит утраченный. При этом все сценарии и настройки должны перекочевать в новый девайс. В идеале — вообще ничего не тапать.

Простота настройки

Сейчас все очень сложно. Конечно, все начинают с существующих гуи, но очень быстро перестает хватать возможностей, которые они позволяют реализовать. И на следующий день вы уже засыпаете с мыслью, что нужно выучить JS или LUA, а через неделю — читаете книги по программированию. Быстрый скачок, но зачем он? :)

Управление с мобильных устройств

К сожалению, большинство приложений сейчас — это только витрины. У меня в квартире нет компьютера, поэтому абсолютно всю работу с системой умный дом я хочу проделывать только с экрана телефона или планшета.

Мобильность

Вот стоит дома умная розетка в виде переходника. Через нее управляется аудио-система (такой аналог будильника). Я хочу иметь возможность взять с собой эту розетку на дачу, чтобы она мне там вентилятор ночью раз в час включала. Если вентилятор работает всю ночь - простываю. Так вот, я хочу выткнуть ее дома, принести на дачу и чтобы она с вентилятором работала. Вернуть обратно домой — и вот она уже работает по правилам, заданным для аудио-системы.

Простота входа в технологию

Стоимость. Если я хочу, скажем, сделать управление теплым полом - я должен купить контроллер для автоматизации и для того, чтобы связать пол с датчиками или календарем. Или купить продвинутый контроллер теплого пола. В последнем случае он станет несовместим с дальнейшими устройствами, если я решу расширяться. Ну не хочу я переплачивать минимум $100 за контроллер.

Простота настройки. Управлять домом должен быть способен даже ребенок. Я про реализацию хотя бы базовых сценариев из коробки: условий или календарей. Вспоминаю задание переменных в Home Center Light и нервно смеюсь.

Решение

Хочешь сделать что-то хорошо - делай сам.

Решение пришло само собой  - нужно сделать набор децентрализованных устройств для  умного дома, в которых все сценарии будут храниться внутри самих устройств (Надежность), а значит будет легко заменить устройства друг с другом (Взаимозаменяемость).

Тогда и контроллер не нужен (Стоимость), а значит можно сделать и управление с мобильных устройств и сделать так, чтобы девайсы могли обмениваться информацией в рамках одной сети и получать сценарии, сохраненные в этой сети (Мобильность).

Простота настройки решается мобильным приложением, которое должно быть простым как молоток и таким же функциональным.

Сама сеть становится ниже по стоимости на стоимость контроллера, а значит - доступнее. Однако такое решение накладывает ограничения на канал передачи данных. В рамках означенной концепции это может быть только Wi-Fi или Bluetooth, иначе с телефоном не синхронизируешься. 

Wi-Fi пусть будет основным, так как может удаленное управление обеспечить. Плюс у него пропускная способность выше, чем при обмене через BLE. Для обмена информацией между устройствами это важно.

Так, а если Wi-Fi отвалиться или его просто дома нет? Не страшно, в этом случае устройства договариваются кто из них лидер и он становиться точкой доступа.

Bluetooth все-таки тоже нужен, например, для того, чтобы батарейные устройства могли нормально работать или для того, чтобы достучаться до устройства, если у него какие-то проблемы с подключением к Wi-Fi.

Есть в плане также задача сделать некое подобие ячеек, чтобы устройства цеплялись друг к другу и только узловые к Wi-Fi и mesh, но это пока не реализовано.

Так, концепт готов. Запускаем производство!

Стоп… еще же нужно проверить...

Проверка гипотезы

Первая проверка гипотезы закончилась в 2016 году, когда мы сделали свою «розетку» - Plug и всячески ее испытали. Делали тогда на ESP8266 и наши требования чип просто не потянул. Лаги большие, синхронизация долгая, памяти мало, да и Bluetooth отсутствует. 

Окей, не бросать же. Мы упертые.

Примерно к лету 2017 нам удалось сделать второй прототип на ESP32, оптимизировать прошивку, перебрать схемы питания, так как ESP32 оказался прожорливее и он «взлетел» - сразу показал хорошие результаты.

Еще несколько месяцев наша команда энтузиастов тщательно тестировала прототипы и стало понятно, что проекту жить.

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

Как часть системы - да, как полноценное устройство - нет.

Запускать решили Remote. Так как он интересен не только как часть децентрализованной системы, но и как самостоятельный гаджет.

Очередность запуска устройств на рынок

Совместимость с другими системами

Как ни крути - рынок IoT устройств довольно большой с количеством игроков, которых не перечесть пальцами одной руки. Поэтому задача стояла так, чтобы каждое наше устройство могло работать практически в любой другой системе «Умный дом», которая есть у пользователя.

Сказано - сделано.

Каждое из устройств LOOK.in реализует разработанный HTTP REST API. Данный API универсален для всех устройств и позволяет как управлять, так и получать информацию о состоянии устройства посредством Wi-Fi. Для простоты обнаружения устройства добавим MDNS.

Нужна обратная связь, точно!

Рассматривались 3 варианта - сокеты, UDP и обратная связь по HTTP/s. UDP победил. У устройства изменилось состояние - примите, мусье, UDP пакет, пожалуйста.

А если кто-то Bluetooth захочет? Не вопрос - пусть будет BLE GATT сервер.

В итоге все взаимодействие с устройством сводится к довольно простому набору команд.

Создаем на условном Home Center Light или OpenHUB (подставить нужное) виртуальное HTTP устройство и пишем :

«on»     : http://456FB113.local/commands/switch/on
«off»    : http://456FB113.local/commands/switch/off
«status» : http://456FB113.local/sensors/switch/value

, где 456FB113 - ID устройства (написан на самом устройстве) и вуаля, при условии, что девайс находится в той же сети можно включать-выключать розетку.

Краткое описание API можно смотреть здесь. Раздел постоянно обновляем и добавляем, он, так сказать, живой.

Сценарии и память

Для того, чтобы каждое из устройств могло работать самостоятельно, без участия мобильного приложения или POST/GET запросов, необходимо ввести правила автоматизации - условия, при наличии которых устройство самостоятельно может принимать решения о тех или иных действиях.

На текущий момент в проекте реализовано 3 типа сценариев:

  • Унарные условия «Если… то… »
  • Условия - таймеры «Если… то… через заданное время»
  • Условия, выполняемые по календарю «Если наступило … то… »
Да, список далек от идеала.

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

Также устройства создают общее транзакционное пространство памяти, в котором могут хранить небольшие блоки данных. Это пространство памяти едино и синхронизировано для всех устройств.

На изображении - поиск формы для Remote

Remote

Первым устройством разрабатываемой системы стал Remote, о нем есть отдельная статья.

Заходите, смотрите, задавайте вопросы, любая обратная связь по проекту это ценный вклад.

Сайт проекта


Мы в Telegram - t.me/soprut
  1. (Schekn-Itrch)
    (Schekn-Itrch) 3 месяца назад

    в принципе доступных систем "Умный дом" и так хватает. зачем ещё одна?

    а если попробовать сделать систему «Умный дом» желанной а ещё лучше необходимой?

    • Дмитрий Лукин (thecashit)
      Дмитрий Лукин (thecashit) 3 месяца назад

      Желанной - да, над этим и работаем.

      А вот что касается необходимости - тут все не так просто. Имхо, бывает те или иные события, когда нужны девайсы, упрощающие жизнь юзера, например, видеонаблюдение при рождении ребенка или доступное управление освещением / электроприборами в случае потери человеком мобильности, тревожные кнопки для людей пожилого возраста. Думаю пока это все обеспечивается конкретными девайсами, а не умным домом в целом.

  2. Сергей Пушкин (SergeyP)
    Сергей Пушкин (SergeyP) 3 месяца назад

    Сложилось впечатление, что автор либо не умеет читать мануалы, либо просто фантазер. Ну а то, что в его руках умерло три контроллера говорит о хорошей компетенции, как IT специалисста. С помощью Z-Wave не сумел реализовать управление климатом, поэтому пошёл разрабатывать свою розетку.

    Расскажите, как на Z-Wave слелать так, чтобы при зависании коетроллера не включался свет, если все z-wave молули самодостаточные и могут работать без контроллера. Про ассоциации слышали? И какой root и консоль у Fibaro Home Center Lite, если производитель не дает root. Может в этом проблема, что всё ломаете, а потом оно почему-то зависает?

    ЗЫ если бы не наехали так нелепо со своими ESP на Z-Wave, то я просто прошел бы мимо). А так не удержался). Реклама велосипеда не удалась)

    • Дмитрий Лукин (thecashit)
      Дмитрий Лукин (thecashit) 3 месяца назад

      Я может чего не знаю, конечно, но как ассоциации помогут в случае, если в качестве выключателей используются Андроид-планшеты на стенах, а домочадцы в том числе привыкли управлять освещением с помощью телефона - достал - тыкнул? Спойлер - никак. Либо расскажите для общего развития :) Да, можно налепить Z-Wave выключателей на стены, но я описывал вполне конкретный кейс, с которым столкнулся. Датчики движения подходят не для всех комнат.

      Про консоль Home Center Light не моя фантазия - в тексте было только про перезапустить эту железку. Про Root - окей - фактическая неточность. В рамках Home Center он называется "Super user". Предполагалось, что человек, знакомый с системой поймет о чем идет речь.

      Кстати, проблема с потерей рута / админа / super user на фибаро не у меня одного встречается. Достаточно погуглить "lost admin / superuser homecenter" и далее по форумам.

      Если вы считаете, что количество вышедших из строя железок является показателем компетенции ИТ специалиста - пусть будет так, имеете на это полное право. Сгоревшие контроллеры - не вина пользователя, а его проблема. В любой хорошей системе пользователь не должен иметь возможности сломать что-то критичное для ее функционирования.

      Я субъективно описал проблемы в процессе использования и свои выводы, которые побудили к дальнейшим действиям. Z-wave неплохой протокол, с хорошим энергопотреблением, однако не в протоколе дело даже, а в его железном исполнении.

      • Сергей Пушкин (SergeyP)
        Сергей Пушкин (SergeyP) 3 месяца назад

        Налепить Z-Wave выключатели на стены это, в принципе, не так уж и плохо, тем более, что Z-Wave Mesh сеть для этого и предназначена, чтобы распределять в пространстве устройства для более надежной связи. Если Вы изначально отказались от выключателей в пользу планшетов, то это, конечно, дело вкуса, но я бы это назвал не лучшим решением, ведь очевидно, что при проблемах с контроллером теряется возможность локального управления. И получается заложили не лучшее решение, а виноват Z-Wave. Вспомнился случай, когда один горе-инсталлятор автоматизировал деревянный дом зивейвом, повесив везде батареечные выключатели, а все микромодули убрав в щит. Никакой ретрансляции не было, работало всё через пень колоду. Он то сбежал с объекта, т.к. понял свой косяк, а клиент потом искал кто-бы исправил это и естественно тоже ругал Z-Wave.

        То, что делаете что-то свое молодцы, удачи, но и Z-Wave со своим многолетним стажем и огромной армией производителей не так уж и плох, лично я сомневаюсь, что несколько  энтузиастов порвет его, как Тузик грелку, хотя начальный посыл статьи именно таким и показался). 

  3. (meta11ist87)
    (meta11ist87) 3 месяца назад

    звучит все хорошо) но розетка в виде переходника - не айс. Неужели нет вариантов сделать обычную розетку, встраиваемую в стену вместо штатной? 

    • Дмитрий Лукин (thecashit)
      Дмитрий Лукин (thecashit) отредактировано 3 месяца назад

      Верно )
      Поэтому от этого варианта отказались, остановившись на прототипе. 

      В плане розеток такой переходник имеет право на жизнь, но реле скрытой установки в монтажную коробку выглядит более привлекательней.

      Сегодня на портале будет статья про устройство, которое сейчас находится на стадии производства.

  4. (solopov)
    (solopov) отредактировано 3 месяца назад

    судя по тому что обмен идёт через http, то так или иначе будет централизация, чтобы как минимум хранить топологию. 

    не так давно встречал на Хабре идею от ДЗ, mqtt подобный протокол на udp бродкастах или мультикастах. В этом случае все устройства по сути висят на общей шине и все "слышат' что "говорят" остальные без выделенного сервера. Тогда достаточно просто настроить реле слушать датчик движения и/или выключатель и самому отрабатывать включение/отключение. А уж на сервере умного дома если он есть держать сложные сценарии и контролировать все.

    • Дмитрий Лукин (thecashit)
      Дмитрий Лукин (thecashit) 3 месяца назад

      Почти так, но все таки никакой централизации. Карта сети хранится в самих устройствах, в каждом отдельно, при этом каждое устройство периодически эту карту обновляет. Синхронизация представлена в нескольких уровнях и как раз один из них - UDP броадкаксты.

      Если я правильно понял идею, то в представленном протоколе как раз можно повесить "слушателя", если это требуется, так как UDP дублирование тоже есть и тот же датчик движения отправит UDP пакет при срабатывании.

      Идея как раз и состоит в том, чтобы полностью отказаться от контроллера. 

      • (solopov)
        (solopov) 3 месяца назад

        Если я правильно понял, то управление (команда) у вас в любом случае идет по http, то есть получается что действует не одна шина, куда можно было передать команду "выключить свет всем", а направленно.

        Имхо все же стоит подумать над 2 параллельными режимами (если http считаете необходимым): по http, но тогда и с фидбком и чисто по UDP (будет собственный протокол или нет - не важно). 

  5. (ndv)
    (ndv) 3 месяца назад

    Челябинские пользователи настолько суровы, что если система не работает, они разработают новую :-) Простите, не удержался... В целом же восхищен Вашей энергией и деловой хваткой, а  также подготовкой.  С Вашими требованиями к дому полностью согласен, но за исключением мобильности - людям будет проще и понятней купить отдельную розетку для дачи и забыть о ней, да и не сильно дороже выйдет. Ну и совсем не согласен с тем что "всё можно продублировать кондовыми выключателями, но это какой-то совсем не тру путь" - напротив, так и только так и нужно делать. И тогда сохраним возможность управления и для ничего не знающих об умном доме и для других. Отчасти хорошее владение технологиями играет тут против Вас, иногда нужно решать по-другому.

    • Дмитрий Лукин (thecashit)
      Дмитрий Лукин (thecashit) 3 месяца назад

      Челябинские пользователи они такие, да :) Но велосипед изобретать сильно не хотелось. 

      Спасибо за добрые слова.

      Насчет выключателей - да, согласен, уже начинаю приходить к мысли, что должно быть дублирование после нескольких лет использования УД и то, что порог вхождения снижает - тоже согласен. 

  6. (ndv)
    (ndv) 3 месяца назад

    Вот эту статью с портала читали?  https://sprut.ai/client/articl...
    Очень дельно.

К списку статей

Скидки для сообщества

УЮТНЫЙ ДОМ

+7 495 797-21-74
Промокод:
SPRUT
Размер скидки:
5%

Похожие статьи

4 сент. 2018 г.
Интеграция RGB ленты на ESP8266 с прошивкой tasmota в систему HomeBridge (HomeKit)
2 нояб. 2018 г.
Кнопка звонка с уведомлениями в HomeKit
15 окт. 2018 г.
Прошивка для Sonoff c нативным HomeKit
27 окт. 2018 г.
Нативный Термостат для котла на ESP8266 с поддержкой Apple HomeKit
1 окт. 2018 г.
Нативный HomeKit на ESP8266
15 июн. 2018 г.
Охранная система в гараж на ESP8266 с интеграцией в Apple HomeKit
2 окт. 2018 г.
Установка SDK для компиляции прошивок под HomeKit
25 нояб. 2018 г.
Умное зеркало добавляем модули Airplay и Google Calendar
29 дек. 2018 г.
Ну что, в канун Нового года. Предлагаю небольшой провокационный список. Не надо его рассматривать как руководство к действию - это мои "мысли на тему". Позитива не ждите, но может кто-то сделает ответочку в позитивном стиле.
4 апр. 2019 г.
Расскажу о том за ~1 час перевезти УД с 2мя USB стиками с Raspberry PI на Synology NAS.