Это случилось обычным воскресным вечером, лет 15 назад. Завтра - понедельник, на работу, значит пора ложиться спать. По всей квартире горит свет, надо идти выключать, но лень! Хочу чтобы одной кнопкой все выключалось! Знакомая ситуация, не правда ли?

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

Это был долгий путь, все начиналось с изучения базовой схемотехники, основ языка C и микроконтроллера STM32F100, к которому, при помощи развешанной по всей квартире витой пары, были подключены 1-Wire устройства, способные кое-как управлять друг другом, по жестко запрограммированной схеме. Позже F100 был заменен на F4 c ethernet и первым неуклюжим web-интерфейсом, позволявшим жутко неудобно настраивать логику поведения устройств. В конечном итоге я пришел к выводу, что центральное устройство умного дома на микроконтроллере - это слишком сложно. Так на свет появился HOMEd.

первая версия конроллера
первая версия конроллера
и вторая, в процессе отладки
и вторая, в процессе отладки

Что же такое HOMEd?

Это, в первую очередь, программный комплекс для умного дома. Он состоит из отдельных небольших приложений, каждое из которых выполняет свою конкретную функцию. Все приложения написаны на C++ с использованием фреймворка Qt5 для работы под Linux/OpenWRT, распространяются в виде apt и opkg пакетов для большинства популярных архитектур, а также в виде docker-образов. Исходный код приложений я публикую на github. Приложения общаются друг с другом посредством MQTT-брокера, что ощутимо упрощает интеграцию с другими сервисами.

Почему Qt?

Hidden text

Ведь это же фреймворк для GUI-приложений, скажете вы. А я отвечу - это не мешает ему быть шикарным кроссплатформенным фреймворком и для "консольных" приложений. Тем более, я довольно хорошо изучил его на текущем месте работы и активно использую в своем коде многие фичи, такие как мета-объекты и сигналы/слоты.

А теперь давайте по порядку. Сильно вдаваться в детали не буду, вместо этого постараюсь донести самую нужную информацию. Поехали!

HOMEd ZigBee

Думаю, из названия понятно что это - программный шлюз для работы с ZigBee-сетью. Зачем, ведь есть же Zigbee2MQTT? Да, есть. Но я не очень люблю интерпретируемые языки программирования и огромных монстров, написанных на этих языках. Тем более, на момент, когда я узнал о существовании ZigBee, у меня уже была сформирована некая идеология и Zigbee2MQTT в нее никак не вписывался.

HOMEd ZigBee на данный момент умеет работать с адаптерами (координаторами) на базе чипов Texas Instruments CC2530/2531/2538/1352/2652 с прошивками Z-Stack, Silicon Labs EFR32MG1/MG2 с прошивками EZSP v8+ и NXP JN5168/5169 с прошивками ZiGate. Как через локальный порт, так и по сети, через RAW-сокет.

Примерно полгода назад по многочисленным просьбам немногочисленных пользователей была реализована функция Home Assistant MQTT Discovery, благодаря которой устройства автоматически "залетают" в HA.

Библиотека поддерживаемых устройств сейчас, навскидку, содержит около 300 моделей, в основном это популярные устройства от Aqara/Xiaomi и TUYA, доступные в массмаркетах РФ и на Aliexpress. Сама по себе библиотека - это псевдо-декларативное описание устройств в формате JSON, позволяющее, в большинстве случаев, добавлять новые устройства без перекомпиляции кода приложения. Вот пример описания среднестатистического датчика температуры:

{
  "description": "Sonoff Temperature and Humidity Sensor SNZB-02",
  "modelNames":  ["TH01"],
  "properties":  ["batteryPercentage", "temperature", "humidity"],
  "bindings":    ["battery", "temperature", "humidity"],
  "reportings":  ["batteryPercentage", "temperature", "humidity"],
  "exposes":     ["battery", "temperature", "humidity"]
}

Кроме библиотеки устройств в HOMEd ZigBee реализован механизм автоматического "распознавания" для неизвестных устройств. Этот механизм создает функциональные элементы на основании списка ZigBee-кластеров устройства, как если бы оно было описано в библиотеке. Да, эта фича работает не безупречно и не в состоянии "распознать" какой-нибудь навороченный термостат, но простая лампочка или датчик температуры почти наверняка "заведутся" без проблем.

HOMEd Modbus

Это небольшое приложение для работы с Modbus RTU устройствами через локальные (в перспективе - и через удаленные) последовательные порты. Приложение пока находится в стадии тестирования и официально не опубликовано, но это ненадолго. В текущий момент реализована поддержка совсем небольшого количества устройств, а именно - счетчиков электроэнергии Wiren Board WB-MAP и устройств собственной разработки. Как и в HOMEd ZigBee, настройки и данные устройств "прокидываются" в Home Assistant посредством функции MQTT Discovery.

Что касается устройств собственной разработки - это шлюзы и контроллеры для установки на din-рейку (в основном), но о них я лучше напишу отдельную статью.

HOMEd Automation

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

Триггеры:

  • изменение состояние устройства (например, кнопка была нажата или показания датчика вошли в заданный диапазон)

  • telegram-сообщение (пока работает только конкретный текст, например, "включить свет в гараже")

  • mqtt-сообещние (так же как в предыдущем пункте, конкретное сообщение в конкретный топик)

  • рассвет/закат (с вознеможностью корректировки, например, за полчаса до рассвета)

  • время суток (включаем кофеварку в 7 утра)

Условия:

  • текущее состояние устройства (включаем кофеварку, только если в берлоге прохладно)

  • конкретная дата или диапазон дат

  • конкретное время суток или диапазон времени суток

  • определенные дни недели

Действия:

  • изменить состояние устройства (включить реле, открыть шторы и т.д.)

  • отправить telegram-сообщение

  • отправить mqtt-сообщение

  • выполнить shell-команду

HOMEd Web

Одно кольцо, чтобы править всеми. Это приложение является самостоятельным http-сервером и позволяет настраивать автоматизации, добавлять/удалять устройства и управлять ими прямо в браузере.

Почему это отдельное приложение? Да потому что так проще, не нужно настраивать отдельные порты для каждого приложения, а с учетом того, что обмен данными осуществляется через MQTT, каждое приложение может работать вообще на отдельном контроллере, нужен лишь общий брокер.

Заключение

Наверняка вы хотите спросить, а зачем мне все это? Ведь есть популярные решения: Zigbee2MQTT, Home Assistant, OpenHAB и прочие! Я отвечу коротко - да просто так, потому что могу. Мои приложения самобытные, шустрые и могут работать на "слабом" оборудовании.

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

Все и ничего вознеможно!

Комментарии (40)


  1. pOmelchenko
    12.09.2023 11:21
    +1

    А matter будет?


    1. lenz1986
      12.09.2023 11:21

      Я бы тоже не отказался. Как раз на efr мультипротокольном


    1. voznemozhno Автор
      12.09.2023 11:21
      +2

      хотелось бы, да все руки не доходят :)


  1. kirovilya
    12.09.2023 11:21
    +3

    Yet Another софт для автоматизации... чем лучше? чем хуже других?
    Кто потенциальный пользователь, кроме автора?
    Чем стимулируется развитие?


    1. pOmelchenko
      12.09.2023 11:21
      +2

      Я отвечу коротко - да просто так, потому что могу

      В конце статьи )


    1. lenz1986
      12.09.2023 11:21
      +6

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


  1. Iron_Butterfly
    12.09.2023 11:21

    Тоже прослойка в виде mqtt, как у zigbee2mqtt? Следовательно, в скорости уступает тому же ZHA?


    1. lenz1986
      12.09.2023 11:21

      Вот кстати нет. Прям достойный конкурент zha.


      1. Iron_Butterfly
        12.09.2023 11:21

        За счет чего?


        1. lenz1986
          12.09.2023 11:21

          скорость передачи по mqtt тут мизерная, и нет медленной обработки как в Z2M. Z2m не из-за mqtt тормоз... а сам по себе )


        1. lenz1986
          12.09.2023 11:21

          рекомендую попробовать. Z2M я выкинул давно, остался ZHA и HOMEd


          1. Iron_Butterfly
            12.09.2023 11:21

            Переезжать с z2m с 50+ устройствами будет очень больно. Да и далеко не уверен, что все они будут с HOMEd работать.


            1. lenz1986
              12.09.2023 11:21
              +1

              HOMEd для попробовать можно для примера на perenio peacg01 развернуть. По цене примерно как стик.


              1. Iron_Butterfly
                12.09.2023 11:21

                Не могу придумать причину, для чего мне это может понадобиться. В z2m все устраивает :)


                1. mihmig
                  12.09.2023 11:21
                  +1

                  Меня например в Z2M не устраивает лаг:
                  После нажатия кнопки на zigbee-пульте лампочка загорается (иногда!) секунды через 2.

                  Я не знаю что происходит в "кишках" у этого nodejs-монстра, но повлиять на это я никак не могу...


            1. sirota
              12.09.2023 11:21
              +3

              С большей вероятностью почти все заведется, что не заведется - быстро фиксится.

              Переезд - да он будет не прост, но это в очередной раз пересмотреть автоматизации в целях их упрощения. Это мой 2-й переезд (первый был внутри z2m когда я понял что не переименовывать идентификаторы устройств была очень глупая идея) и я очень много что пересмотрел в сторону упрощения (к примеру вместо таймера на выключение освещения с ДП я просто увеличил таймер отключения сенсора присутствия на самих ДП).

              А так совсем другая концепция открывается. У меня 4 зигби сети. 2 уже целиком переехали на homed. Что же я получил в замен? Локальную работу. На каждом шлюзе (в моем случае это homed pico + есть в наличии те же перешитые шлюзы перенио, но пока они только бриджами в z2m) установлен homed zigbee, homed automation, homed web и mqtt брокер. Весь софт завернут в локальный брокер, на брокере поднят бридж в сторону центрального mqtt брокера на который уже натравлен ХA. Это дало возможность часть автоматизаций не требующих чего-то сверхъестественного перенести целиком на шлюз (например переключение освещения (в том числе и групп и логика работы с группами) с зигби "кнопок" или по датчикам присутствия или движения). Т.е. выход центрального узла умного дома (сервера и любой его составляющей) позволяет пользоваться благами УД, пусть и в ограниченном объеме. Можно усложнить бриджи у брокера и тогда и работа между сетями будет возможна, но я пока этим не занимался.


    1. voznemozhno Автор
      12.09.2023 11:21
      +1

      если не перегружать брокер мегабайтными сообщениями 200 раз в секунду, он работает быстрее, чем та же ZigBee-сеть :)


    1. vvzvlad
      12.09.2023 11:21

      И какую же ужасную задержку вносит mqtt?


      1. Iron_Butterfly
        12.09.2023 11:21

        Сравнение было с зха. Там нет этой задержки, потому что нет прослойки мкутт.


        1. Iv38
          12.09.2023 11:21

          Ну или по какой-то ещё причине. Потому что это две совершенно разные системы. Я сомневаюсь, что брокер вносит сколь-либо заметную задержку. Особенно, если обмен данными полностью локальный.


  1. a9d
    12.09.2023 11:21
    -1

    Для автоматизации жилых помещений лучше не использовать ZigBee. Лучше BLE Mesh. Тогда будет решена проблема с подключением мобильников/планшетов/пк. Также разработка и установка будет проходить проще, можно с мобильником походить по помещению, и проверить уровень сигнала.


    1. sirota
      12.09.2023 11:21

      А какая проблема у зигби с подключением мобильников и прочего?


      1. a9d
        12.09.2023 11:21

        много мобильников знаешь с интерфейсом zigbee ? Без посредника не обойтись. А в случае BLE все проходит без костылей.


        1. sirota
          12.09.2023 11:21

          А зачем мне на мобильнике зигби? Если вы о том чтобы проверить уровень сигнала, так это просто не нужно делать. Первое что обычно автоматизируется - это освещение, а значит как минимум 1 роутер в каждом помещении у вас будет.


          1. a9d
            12.09.2023 11:21

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


            1. sirota
              12.09.2023 11:21
              +2

              "Все" зигби устройства питающиеся не от батарейки - роутеры.

              И у меня уже скоро 2 года как уд на зигби и он управляет сам собой, мне мобильник для этого не нужен.


            1. ColdSUN
              12.09.2023 11:21
              +2

              Проблема BLE в том, что там стандартов никаких нет. С ними там ещё хуже чем в Zigbee. Куча производителей и каждый делает что-то своё. Поэтому собирать всё в единую точку всё значительно сложнее. А без единой точки не будет единых автоматизаций, где можно учитывать все параметры.
              Нафига мне управление светом только через приложение на мобильнике. А так же отдельно приложение для штор, и отдельное для отопления.
              В этом большое преимущество Zigbee. Да приходится иметь какой-то центральный хаб, но так он мне в любом случае нужен, где-то же должны крутиться автоматизации. И лучше бы этот хаб был у меня дома, а не где-то в китайском облаке.


    1. Iv38
      12.09.2023 11:21

      Нипанятна! Шлюз-то всё равно понадобится, иначе как устройства будут взаимодействовать с контроллером автоматизаци? А при наличии шлюза зачем подключаться мобильником куда-то?


      Устройств BLE Mesh крайне мало.


    1. shaggyone
      12.09.2023 11:21

      Это когда выбор и доступность устройств будет сравним с тем что уже есть на zigbee, можно будет обсуждать.


    1. Le0Wolf
      12.09.2023 11:21
      +2

      Дла автоматизации не нужны мобильники/планшеты/пк. Они нужны для ручного управления отслеживания параметров. Но для этих целей Zigbee шлюз обычно подключается к WiFi сети и имеет либо Веб интерфейс, либо приложение. При этом, Zigbee устройства +/- совместимы между собой и поэтому не привязаны к приложению вендора и могут между собой взаимодействовать (т. е. можно настроить полноценную автоматизацию почти всего, после чего она будет работать без каких либо приложений) , в отличии от устройств Bluetooth, которые хорошо, если хотя бы в рамках одного вендора смогут взаимодействовать (но скорее всего, самый максимум - это настройка расписания для каждого устройства в отдельности и управление им через приложение, а-ля пульт от телевизора)


  1. Berkseo
    12.09.2023 11:21
    +4

    Хочу такой датчик


    1. mihmig
      12.09.2023 11:21

      REST-запрос с хабра?


  1. dr_Sergeus
    12.09.2023 11:21
    +1

    Идея - хорошая, реализация - хорошая. Но в том же Z2M овер 350 сontributors. ZHA - немногим меньше. А в этом деле - один в поле не воин.


    1. voznemozhno Автор
      12.09.2023 11:21
      +1

      Как говорится - Москва не сразу строилась :)


      1. dr_Sergeus
        12.09.2023 11:21

        Я уже задавал вам вопрос, аналогичный тому, что задал kirovilya выше более полугода назад. :)


        1. voznemozhno Автор
          12.09.2023 11:21
          +8

          Мне, если честно, совершенно непоняен смысл таких вопросов. Это некий призыв бросить страдать фигней и начать пользоваться «правильными» решениями с 350+ контрибьюторами? Или что? Я уже нашел своих двух с половиной пользователей, да и сам, как не сложно догадаться, успешно пользуюсь своими поделками. Если пользователей станет немного больше, это будет прикольно, а нет - так нет, мой мир от этого не рухнет. Не вижу смысла дальше развивать тему.


          1. dr_Sergeus
            12.09.2023 11:21
            +1

            Вы идеально ответили на наш вопрос, спасибо.



  1. mihmig
    12.09.2023 11:21

    Как можно сделать предзаказ на HOMEd Gateway Nano?


    1. voznemozhno Автор
      12.09.2023 11:21

      Напишите мне в телеграм @voznemozhno