Технология Thread разработана специально для умных домов, с целью улучшения коммуникации между устройствами. С недавних пор устройства совместимые с HomeKit, могут «общаться» не только используя Wi-Fi и Bluetooth, но и Thread.

Большое преимущество этой технологии в том, что Thread создает меш-сеть (mesh-network). В ней лампочки, термостаты, розетки, датчики и другие устройства могут «разговаривать» друг с другом без ограничений централизованных мостов и хабов. Это потому, что Thread не нуждается ни в мостах, ни в хабах. Если какое-то устройство выходит из строя, пакеты данных просто перешлются на другое устройство в сети. По сути, чем больше в Thread-сети устройств, тем эластичней и надежней становится вся сеть.

Давайте познакомимся с Thread поближе.

Wi-Fi, Bluetooth и Thread

Прежде, чем говорить о Thread как таковом, давайте немного углубимся в историю. Изначально HomeKit поддерживает два нативных способа коммуникации между устройствами: Wi-Fi и Bluetooth Low Energy.

Обе эти технологии — это компромисс: хоть Wi-Fi обычно позволяет устройствам «общаться» на большем расстоянии и с меньшими задержками, за это приходится платить высоким энергопотреблением, что делает ее неподходящей для устройств с аккумуляторами, да и для устройств с постоянным питанием это не лучший выбор - работа таких устройств потребляет много электроэнергии. К тому же, с увеличением количества Wi-Fi-устройств в доме, для некоторых роутеров оно может оказаться неподъемным, а то и вовсе может закончиться диапазон выделяемых IP-адресов. А устройства, использующие Bluetooth Low Energy (BLE), наоборот, полностью отвязаны от нагрузки домашней сети и крайне эффективны с точки зрения питания. Однако, из-за ограничений протокола, Bluetooth-коммуникация становится медленнее с увеличением количества устройств и способна работать на меньшем расстоянии, так как потребляет меньше энергии.

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

Thread — это peer-to-peer меш-сеть, а это означает, что устройствам в этой сети не нужно подключаться к центральному хабу, чтобы «общаться» между собой. Кроме того, она устроена таким образом, чтобы быть самоподдерживаемой и самовосстанавливаемой, так что даже если какие-то устройства появляются или пропадают, сеть, по необходимости, автоматически себя перенастроит сама. И, наконец, она спроектирована специально для умных домов, что означает особое внимание было обращено к продолжительности работы от аккумулятора и энергопотреблению для устройств, которые не имеют постоянного питания.

Thread-сеть
Thread-сеть

Углубимся в Thread

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

Роли

Сеть Thread составляют компоненты двух ролей: роутеры (Routers) и энд-пойнты (Endpoints), причем эти роли не фиксированы - если устройство способно быть роутером, оно может выбрать любую из этих ролей, в зависимости от текущего состояния и требований сети. Каждое устройство в Thread-сети называется «узлом» (Node).

Идем дальше. Узлы-роутеры нужны, чтобы перенаправлять пакеты с информацией по сети. У роутеров могут быть свои энд-пойнты - в этом случае такие узлы считаются родителями (Parent nodes). Устройства, которые подключены к постоянному источнику питания, которые включены всегда, могут становиться роутерами-родителями в Thread-сети и передавать пакеты с данными.

Узлы-роутеры
Узлы-роутеры

Энд-пойнты (их также называют «конечными устройствами» (End Devices) или «детьми» (Children nodes)) — это те устройства, которые подключаются к узлам-роутерам и не участвуют в передаче пакетов другим устройствам, но сами умеют посылать и принимать пакеты. Устройства, которые «умеют» быть роутерами, могут быть и энд-пойнтами, в то время как устройства, которые созданы быть только энд-пойнтами (т.н. Minimal Thread Device) - например, устройства, работающие от аккумулятора - не могут быть роутерами.

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

Энд-пойнт
Энд-пойнт

В Thread-сети существует еще и т. н. узлы-лидеры (Leader node), задача которых «повышать» энд-пойнты до роли роутера и «понижать» их обратно. Это не встроенная или статичная роль - любой роутер может стать лидером. Лидеры выбираются в некотором роде случайным образом в зависимости от текущего состояния сети.

Особо важная сущность в Thread-сети называется пограничный роутер (Border router). Так называют такой узел-роутер, который подключен к домашней сети и «знает», как передавать пакеты c данными между Thread-сетью и вашей локальной сетью. Без пограничного роутера устройства в вашем умном доме не смогут создать Thread-сеть, потому что так они не смогут «общаться» с внешними устройствами, например, вашим Айфоном. Вместо создания Thread-сети, они станут использовать обычную Bluetooth-коммуникацию (да, вы все правильно поняли - все устройства, которые «умеют» работать по Thread, имеют два способа коммуникации - Thread и Bluetooth).

На момент написания этой статьи (сентябрь 2021), на рынке существуют два устройства, способных быть пограничными роутерами в HomeKit, используя ThreadHomePod mini и Apple TV 4K (2021).

Пограничный роутер
Пограничный роутер

Подключение к сети

Когда устройство, которое «умеет» использовать Thread включается после первичной установки, оно быстро проверяет, есть ли доступная Thread-сеть вокруг. Если да, устройство подключится к сети с годным идентификатором и реквизитами, которые ему выдал пограничный роутер. Сразу после успешного присоединения, устройство становится энд-пойнтом одного из существующих роутеров. Если оно способно само стать ротуером (мы такие устройства называем Full Thread Device), лидер может дать ему указание «повысить» себя до роли роутера, в зависимости от количества доступных роутеров в сети. Если в сети в данный момент менее 16 роутеров, устройство примет роль роутера. Если в сети уже есть 16 роутеров, Thread автоматически оптимизирует роли всех устройств для оптимального покрытия сети. В Thread-сети одновременно может существовать до 32 роутеров.

Если устройство неспособно принять роль роутера, оно остается в роли энд-пойнта. Оно сможет сменить родителя, в зависимости от качества соединения, которое проверяется автоматически во всей сети.

Энд-пойнты

Энд-пойнты различаются также по т. н. «интервалу сна» (Sleep Interval). Каждый энд-пойнт, в зависимости от физических характеристик, может быть «сонным энд-пойнтом» (Sleepy) или «обычным энд-пойнтом» (Regular). Идея проста: если устройство устроено так, что оно должно беречь питание, оно может «решить уснуть» на определенное время, а потом «спросить» у своего роутера - произошло ли что-то интересное, пока оно «спало» (примерно также, как нам приходилось нажимать кнопку «Проверить почту», в те стародавние времена, когда проверка не происходила автоматически). 

Например, датчик открытия/закрытия двери с интервалом сна в 5000 мс, «просыпается» каждые 5 секунд и «спрашивает» у роутера, есть ли новости. Само собой, он может «проснуться» и вне этого таймера, чтобы передать важные данные от себя - например, если открыть дверь, данные отошлются сразу, не дожидаясь конца 5-секундного интервала. Этот механизм отлично помогает беречь заряд аккумулятора.

Партиции

Что случится, если у вас дом настолько большой, что некоторые устройства не смогут поддерживать стабильное подключение друг к другу? Если у вас более одного устройства, которое может принять роль пограничного роутера (например, больше одного HomePod mini), они могут создать две независимые Thread-сети, которые вместе смогут покрыть весь ваш дом. Такие независимые сети называются «партициями» (Partitions). Если качество соединения улучшится, эти партиции снова объединятся в одну, а «лишние» пограничные роутеры примут роль обычных узлов-роутеров.

Масштабирование сети

Что насчет максимального количества устройств, которые можно подключить к Thread-сети? В сети всегда будет только один лидер и до 32 узлов-роутеров. К каждому роутеру может быть подключено до 511 энд-пойнтов. 

Так что, как видите, вместимость сети довольно-таки огромна и должна покрыть большинство сценариев.

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


  1. mlu
    04.09.2021 20:03
    +4

    Без пограничного роутера устройства в вашем умном доме не смогут создать Thread-сеть, потому что так они не смогут «общаться» с внешними устройствами, например, вашим Айфоном. Вместо создания Thread-сети, они станут использовать обычную Bluetooth-коммуникацию (да, вы все правильно поняли - все устройства, которые «умеют» работать по Thread, имеют два способа коммуникации - Thread и Bluetooth).

    Не совсем верно. Без пограничного роутера устройства вполне могут создать Thread-сеть как дома, так и не дома. Функция общения с внешними устройствами - приятный бонус от пограничного-роутера, но без него всё прекрасно работает самостоятельно.

    Про bluetooth-коммуникацию вместо создания Thread-сети, простите, вообще бред написан.

    UPD. Вообще смешались в кучу и кони и люди. И транспортный уровень и прикладной) Начали с homekit, знакончили про транспорт. Говорю со знанием дела, второй год дома своя сетка с тредом в качестве транспорта.


    1. expeon Автор
      04.09.2021 21:35
      +1

      В статье речь о Thread внутри именно HomeKit (о способе подключения устройств в HomeKit-инфраструктуре). Там, если пограничного роутера нет, устройства действительно не создают Thread-сеть, а подключаются к HomeKit-хабу именно по Bluetooth.


      1. lenz1986
        04.09.2021 22:06

        вот тут я сломался совсем.... то есть тред сам по себе а потом девайсы до кучи в БТ передают?


        1. expeon Автор
          04.09.2021 22:28

          Ну как... есть платформа HomeKit. У нее есть множество совместимых устройства (и еще большее множество несовместимых), интеграция с Сири, своя автоматизация и все такое прочее. Есть HomeKit-хаб (там чутку сложнее все, но примерно так), который всем этим делом заправляет по HomeKit-правилам. И есть три способа, по которым устройства могут "разговаривать" с хабом (ну, то есть, управляться HomeKit'ом, если они в нем): Wi-Fi, Bluetooth и теперь еще и Thread.

          Есть устройства, которые умеют в Thread, но не умеют в HomeKit (которые, похоже, работают так, как описал комментатор выше). Точно также как есть устройства, которые умеют подключаться по вай-фаю, но в HomeKit их подключить не удастся. Видимо, поведение таких устройств вне HomeKit отличаются от описанного в статье.


          1. lenz1986
            04.09.2021 22:44
            +1

            на самом деле все проще

            В текущий момент времени HOMEKIT работает по двум протоколам, WIFI и BLE. Больше вариантов я не видел.

            Apple решил быть в тренде и запилил совместно со всеми остальными MATTER который работает по 802.15.4. Но устройства работающие по протоколу openthread не смогут зайти в HONEKIT без border router, по одной простой причине, грубо говоря устройства APPLE не поддерживают этот радиопротокол, поэтому они создали Homepod в который интегрировали аппартный модуль который умеет работает с 802.15.4 и он уже в свою очередь является концентратором/border router для устройств openthread


            1. expeon Автор
              04.09.2021 22:59

              Thread же использует 6LoWPAN, который использует IEEE 802.15.4.?

              То есть, да, Apple решила быть в тренде и использоватьThread и вставила модули для этого в HomePod mini и в новый TV.

              Кроме того, Eve и Nanoleaf маркетят свои устройства именно как HomeKit Thread-совместимые (эти две компании - на сегодня единственные, которые такие устройства производят, не считая Эппла) и они работают так, как описано в статье: если есть пограничный роутер - используем Thread (802.15.4), а если нет - то по-старинке, по "обычному" BLE.

              Что не так?


            1. afaronov
              05.09.2021 15:41

              Поддержка Thread в Homekit появилась не так и давно
              СДК отдельное


      1. mlu
        05.09.2021 00:27

        В статье речь о Thread внутри именно HomeKit

        Thread - самодостаточная штука, которая работает как транспорт для других. Это стандарт. Большая часть статьи (понимаю, что это перевод) - краткий (вольный) пересказ Thread Primer с сайта OpenThread. То есть в большей части статьи речь идёт именно о Thread. Партиции, эндпоинты, лидеры, роутеры, mtd, ftd и прочее - это всё чистый Thread. В выделенном/квотированном мной абзаце статьи в первоначальном комментарии тоже идёт речь именно о Thread. Так вот Thread (несмотря на то, что поверх него на уровне приложений бегают данные эппла) остаётся тем самым Thread, который ничего не знает про связь через Bluetooth и который вполне себе работает без граничного роутера. Вы вместе с автором немного путаетесь, как мне кажется.


        1. expeon Автор
          05.09.2021 00:44

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


      1. afaronov
        05.09.2021 00:41

        добавление устройств действительно идет по протоколу Bluetooth
        но только добавление (опять же можно просто ввести код авторизации вручную)
        для работы Homekit Thread устройствам Bluetooth совсем не нужен


    1. lenz1986
      04.09.2021 22:05

      это перевод ) не забывай)


      1. mlu
        05.09.2021 00:32

        Перевод или не перевод - не так важно ) Люди ведь читают статью и верят всему написанному)


  1. afaronov
    05.09.2021 00:26
    +1

    Не совсем понял зачем в статье упомянут Matter

    только по причине того что он тоже умеет в Thread ?

    это отдельный протокол и в оригинале статьи про него не упоминается

    так как ни Eve ни Nanoleaf ничего не показали еще на протоколе Matter


    1. expeon Автор
      05.09.2021 00:49

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


      1. afaronov
        05.09.2021 00:55
        +4

        Для Matter хорошо бы отдельную статью написать но так как оно все очередной раз отложилось , то видимо и статью можно написать уже потом :)


  1. PR200SD
    07.09.2021 10:39

    Кто-то знает, какие у обычного HomeKit ограничения по количеству каналов, обычных дискретных выключателей, и много ли передается информации по сети если их состояния будет обновляться раз в секунду например?