
Протоколи розумного будинку: Matter
Matter це найсучасніший стандарт — йому лише пара років. З цього очевидно зрозуміло, що його успіх в майбутньому — за два роки в апаратній галузі нічого серйозно не змінюється, тож підтримка поки мінімальна. Але, втім, що він нам обіцяє?
По-перше, Matter містить протокол прикладного шару. Того, на якому всі питання комунікації вже вирішені, та можна зайнятися передачею змісту. Як HTTP, SMTP чи SSH. Також, Matter стандартизує всі кроки звʼязку пристроїв IoT - від виявлення та підключення до навіть конкретних типів пристроїв та їхніх команд.
Таким чином, Matter націлений на як не найголовнішу проблему розумного будинку — розрізненість. Бо без стандарту в кожного виробника була (є!) власна екосистема. Але справжні проблеми почалися із появою голосових помічників (або, іншими словами, втручанням мегакорпорацій в саме серце оселі.) Бо кожний виробник ще й мусив розробити інтеграції для кожного помічника.
(Це та галузь, де відкрите ПЗ - HomeAssistant тощо — на зусиллях ентузіастів досягло більше, ніж мегакорпорації. Втім, це покладається на технічну грамотність користувачів, та складно уявити собі HA в кожному будинку.)
Отже, (ті самі мегакорпорації зібралися та) придумали стандарт Matter, з яким будь-який сумісний пристрій можна підʼєднати до будь-якого центру керування. А також до декількох (Multi-Admin). А також навіть поєднувати пристрої між собою — наприклад, зʼєднати вимикач з лампою в самодостатню пару.
В Matter багато плюсів. Він побудований на відкритих технологіях: мережі IP (в тому числі й Thread), сертифікати PKI, виявлення mDNS. Він повністю локальний, на відміну від 99% екосистем виробників. Він звільняє виробників від розробки власної хмари та застосунку та дозволяє сфокусуватися на якісних пристроях. Через це відкриває шлях для маленьких виробників.
Мінус, очевидний — стандарт нічого не значить, поки його не підтримують. Причому якісно, а не аби як. Також, Matter містить обмежений набір категорій та функцій (який розширяється). Та він фактично потребує підтримки Thread (або Wi-Fi чи Ethernet.) Але наразі головний недолік — це дуже обмежений вибір пристроїв.
Протоколи розумного будинку: mDNS, DNS-SD, DNS-SRP
А ви замислювались колись, як взагалі пристрої знаходять один одного в мережі? Хто подумав DNS, той вгадав. Але є нюанси.
По-перше, як взагалі працює DNS? Це протокол на основі UDP, тобто асинхронний, тобто дуже спрощено, ви гукаєте у простір "підкажіть адресу вузла (або іншу інформацію)", та звідкілясь приходить відповідь. В типовому сценарії ви питаєте в конкретного вузла, але насправді відповідь часто приходить не звідти.
Але із виявленням пристроїв все ще цікавіше. Бо тут запит DNS йде на всі адреси в мережі — що називається mDNS, multicast DNS. Та відповідає на нього не роутер чи інший центральний вузол, а самі пристрої! Це називається DNS-SD - стандарт DNS для виявлення сервісів. В macOS є вбудована утиліта для нього, на Linux/Windows наче теж є аналоги. Ось, будь ласка, це команда "агов, хто в цій мережі взагалі підтримує DNS-SD?"
dns-sd -B _services._dns-sd._udp
(Взагалі звичайний dig
теж вміє робити запити до mDNS, коли не поламаний):
dig @224.0.0.251 -p 5353 -t ptr _services._dns-sd._udp.local
Я аж рот роззявив від кількості та від різноманіття сервісів. Наприклад, тут є й _airplay
, й _home-assistant
, а не тільки розумні пристрої.
Як можна здогадатися, така інформація не тільки корисна, а й небезпечна, оскільки запит може надіслати будь-яка програма чи пристрій в мережі. Нарешті зрозумів, чому свіжі версії macOS видають попередження на кшталт "Дозволити застосунку бачити пристрої в локальній мережі." Бо навіть не потрібно нічого сканувати, як Трініті в Матриці — пристрої самі все скажуть.
Для пристроїв з батарейкою такий спосіб, звісно, не підходить. Тому є інший протокол - DNS-SRP - для того, щоб реєструвати вузли на центральному сервері. Причому він цілком сумісний з DNS-SD, оскільки останньому не важливо, який саме вузол надсилає відповідь — сам за себе чи через посередника.
Протоколи розумного будинку: Thread
Спочатку цікавий факт: більшість технологій розумного будинку використовують один та той самий радіопротокол IEEE 802.15.4. (Може, хто помічав, що Wi-Fi - це "сусідній" IEEE 802.11.) Це протокол фізичного рівня, тобто відповідає за те, як дані кодуються у радіосигнали. Тому що Zigbee, що Thread, що ще декілька протоколів — це все IEEEE 802.15.4 на частоті 2.4 ГГц (Так само як і "старий" Wi-Fi та мікрохвильовки.)
🧶 Thread - так само як і Zigbee, протокол сітчастий, тобто вузли передають посилання між собою та утворюють надійну "сітку" комунікацій. Так само тут вузли з батарейками працюють економно, а вузли з дротом виступають ретрансляторами. Так само, чим більше у вас пристроїв з Thread - тим надійніше ваша домашня мережа. Звісно, це буде мережа, окрема від Zigbee, хоча багато пристроїв підтримують обидва протоколи.
Навіщо ж тоді ще один протокол? Головна особливість Thread - що вузли мають адреси IPv6. (Їх є 340 ундецильйонів — вистачить на всіх.) Це значить, що замість ізольованої мережі, Thread стає частиною локальної та глобальної мережі IP. (Головним транспортним протоколом тут є асинхронний UDP, тому, можна сказати, UDP/IP.)
Звісно ж, це суттєво спрощує архітектуру. З Zigbee чи BLE потрібний привілейований посередник, що перекладає повідомлення між застосунками в TCP/IP та пристроями в Zigbee/BLE. Причому звісно ж прямого шляху це зробити немає — потрібний принаймні якийсь API. А в Thread координатор мережі є простим шлюзом, що займається тільки маршрутизацією. Йому, наприклад, не потрібно знати зміст повідомлень, або розуміти призначення пристроїв. По-перше, так безпечніше, по-друге, шлюзи Thread мають кращу сумісність між виробниками.
З усім тим, Thread стандарт відносно новий (2014 року) та пристроїв з ним значно менше, ніж із Zigbee. На щастя, принаймні вони можуть ділити один радіомодуль, тож можна очікувати більше пристроїв з подвійним стандартом. Субʼєктивно це кращий протокол, але чи він переможе — покаже час.
(Бачите, це не зовсім так, що "було 10 стандартів, додали ще один". Еволюція простежується.)
Протоколи розумного будинку: Zigbee
Нарешті, дісталися до першого протоколу, який не є широко відомим. Мені він взагалі, плутався, здається, з помічником від Самсунгу, якого звати (перевірив) Біксбі. Втім, Zigbee - це зрілий протокол для домашніх мереж. Вийшов ще у 2005 - я трохи здивований, що тоді вже була ідеї про розумні будинки... хоча, певно, цій ідеї десь тільки ж років, скільки електрифікації.
Головних аспектів тут два. Zigbee не потребує постійно увімкненого радіо (як і BLE), тобто дозволяє використання в пристроях на батарейках (довгий термін роботи від батарейок — це навіть вимога до пристроїв.) Та Zigbee підтримує ретранслятори, тобто покриття мережі можна збільшити. Ще краще — всі нормальні пристрої, що підʼєднуються до електропостачання, також виконують функцію повторювача. Та, виходить, кожний додатковий заживлений пристрій з Zigbee підсилює надійність мережі. Це дійсно визначна особливість.
Але так, Zigbee потребує центрального вузла — координатора, так його доведеться придбати окремо. Або, наприклад, для HomeAssistant є адаптер USB. Для одного вимикача це трохи забагато витрат, але я от переконався, що коли братися за розумний будинок серйозно, то це цінна інвестиція. Бо, як бачите, Zigbee з кількістю пристроїв стає тільки краще.
Поки досліджував, знайшов величезну серію статей про Zigbee. До речі, цікаво, що цей протокол спроєктований саме як простий, що, певно, гарно для надійності, бо пристрої робляться безліччю виробників, включаючи ноунеймів.