Технологія 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 складають компоненти двох ролей:роутери (Ro^) і енд-пойнти (Endpoints), причому ці ролі не фіксовані - якщо пристрій здатний бути роутером, він може вибрати будь-яку з цих ролей, залежно від поточного стану і вимог мережі. Кожен пристрій у Thread-мережі називається «вузлом» (Node).
Йдемо далі, вузли-роутери потрібні, щоб перенаправляти пакети з інформацією по мережі. У роутерів можуть бути свої енд-пойнти - в цьому випадку такі вузли вважаються батьками (Parent nodes). Пристрої, які підключені до постійного джерела живлення, які включені завжди, можуть ставати роутерами-батьками в Thread-мережі і передавати пакети з даними.
Вузли-роутери
Енд-пойнти (їх також називають «кінцевими пристроями» (End Devices) або «дітьми» (Children nodes)) - це ті пристрої, які підключаються до вузлів-роутерів і не беруть участі в передачі пакетів іншим пристроям, але самі вміють посилати і приймати пакети. Пристрої, які «вміють» бути роутерами, можуть бути і енд-пойнтами, в той час як пристрої, які створені бути тільки енд-пойнтами (т. зв. Minimal Thread Device) - наприклад, пристрої, що працюють від акумулятора - не можуть бути роутерами.
Кожен вузол-роутер підключений до всіх інших роутерів, кожен енд-пойнт підключається тільки до свого роутера-батька.
Енд-пойнт
У Thread-мережі існує ще й т. зв. вузли-лідери (Leader node), завдання яких «підвищувати» енд-пойнти до ролі роутера і «знижувати» їх назад. Це не вбудована або статична роль - будь-який роутер може стати лідером. Лідери вибираються в деякому роді випадковим чином залежно від поточного стану мережі.
Особливо важлива сутність у Thread-мережі називається прикордонний роутер (Border router). Так називають такий вузол-роутер, який підключений до домашньої мережі і «знає», як передавати пакети з даними між Thread-мережею і вашою локальною мережею. Без прикордонного роутера пристрої у вашому розумному будинку не зможуть створити Thread-мережу, тому що так вони не зможуть «спілкуватися» із зовнішніми пристроями, наприклад, вашим Айфоном. Замість створення Thread-мережі, вони стануть використовувати звичайну Bluetooth-комунікацію (так, ви все правильно зрозуміли - всі пристрої, які «вміють» працювати за Thread, мають два способи комунікації - Thread і Bluetooth).
На момент написання цієї статті (вересень 2021), на ринку існують два пристрої, здатних бути прикордонними роутерами в HomeKit, використовуючи Thread: HomePod 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 енд-пойнтів.
Так що, як бачите, місткість мережі досить-таки величезна і повинна покрити більшість сценаріїв.