Як запустити в своїй квартирі «розумний дім»

Вадим Балашов, iOS-розробник з команди мобільного «Пошти Mail.Ru», розповів vc.ru, як він створив в своїй квартирі «розумний будинок» і розробив додаток для годин і бота для Telegram, щоб управляти системою пристроїв.

Як запустити в своїй квартирі «розумний дім»

«Розумний будинок» все впевненіше мігрує зі сфери гик-екзотики в напрямку досить доступних технологій, за допомогою яких можна зробити своє житло комфортніше, зручніше, енергоефективніше і взагалі «нічосі!». Хочу поділитися з вами досвідом створення системи «розумного будинку» в своїй квартирі.

Трохи про розетках

Моя дружина дуже любить вимикати все з розеток. Йдучи, вона все висмикує, а я потім повертаюся додому і вставляю назад. Мені це не подобається. Я пробував різний: просив, умовляв, переконував, погрожував - ніщо не допомогло. І тоді я вирішив, що треба знайти високотехнологічний спосіб залагодити конфлікт - якимось чином коммутировать розетки, щоб не потрібно було фізично витягувати штекери по всій квартирі.

Ну що ж, паяльник є, руки теж. Почав думати над реалізацією, але відразу виникло дуже багато запитань. Наприклад, який контролер використовувати для управління? У мене був досвід програмування контролерів лінійки AVR від Atmel. Виглядає все досить просто: реле, транзистор для розв'язки і управління одним піном контролера.

Завдання встало дві. По-перше, контролер і реле треба живити, а по-друге, контролером потрібно управляти. З харчуванням представилося три варіанти.

  • Найпростіший - живити від батарейок. Але батарейки будуть сідати, їх доведеться міняти, а це незручно.
  • Розміщувати перетворювачі з 220 в 5 вольт прямо поруч з контролером в кожній розетці. Спосіб відмінний, але готових компактних перетворювачів я не знайшов, а самому возитися з перетворювачем не хотілося. Та й боявся накосячіть і спалити квартиру.
  • Підвести харчування ззовні до кожної розетки.

Останнє, що змусило мене остаточно відмовитися від розробки власної системи управління, - це «тестування на живих». Налагоджувати дрібні баги архітектури і прошивки довелося б прямо під час експлуатації, що, безумовно, викликало б невдоволення оточуючих.

Як запустити в своїй квартирі «розумний дім»

Я почав вивчати наявні готові системи, на яких можна було б побудувати «розумний дім». Відразу вирішив, що зв'язок модулів повинна бути бездротова. Залишилося вибрати технологію. Спочатку варіанту було два - Wi-Fi і Bluetooth. Вони дуже поширені, під них багато готових рішень.

Але Wi-Fi, який працює на 2,4 ГГц, не дуже зручний з точки зору організації мережі. Висока поширення і відсутність регулювання при установці точок доступу робить цю частоту сильно зашумлений. Хочеться мати більш-менш стабільну систему, щоб у мене не підвисає перемикання розеток, коли працює сусідський роутер.

Як запустити в своїй квартирі «розумний дім»

Почав вивчати, які ще існують рішення. Наприклад, у ZigBee декілька стандартів частоти: є 2,4 ГГц, а є в районі 1 МГц. Але тут я натрапив на статтю на «Хабрахабр», де розповідалося про Z-Wave. Вражений. Базові модулі Z-Wave зараз випускають лише дві компанії в світі - Sigma і Mitsumi. Його розміри - приблизно сантиметр на сантиметр. По суті, це мікроконтролер з приймач. Його навіть можна перепрошивати, але частіше за все в готовому вигляді монтують зверху на плату, підключають до нього UART, і він працює як приймач.

Як запустити в своїй квартирі «розумний дім»

Всі пристрої, які хочуть отримати значок «Сумісно з Z-Wave», повинні пройти сертифікацію. Платформа закрита, що дає деяку перевагу з точки зору сумісності. Для порівняння: у продажу дуже багато Bluetooth-рішень для будинків, і майже всі вони не сумісні між собою. А всі пристрої Z-Wave сумісні - завдяки єдиному закритому стандарту, який тим не менш еволюціонує. Доступна платна SDK, коштує приблизно $ 2 тисячі. Якщо ви збираєтеся одну штучку будинку спаяти - це дорого. А якщо маєте намір налагодити виробництво 2 тисяч пристроїв, то отримаєте всього долар різниці на кожне - цілком непогано.

Дальність зв'язку у стандарту Z-Wave близько 30 метрів. Одне з його переваг в тому, що пристрої шикуються в порожнисту мережу (mesh) і практично в кожному модулі є таблиця маршрутизації. Піймавши сигнал, будь-який модуль знає, треба передати його далі чи ні. Тобто майже кожен модуль є ще і ретранслятором. «Майже» - тому що в Z-Wave існують «сплячі» пристрою, які не беруть участі в ретрансляції. Такі пристрої зазвичай працюють від батарейок і виходять на зв'язок при необхідності.

Щоб ваша мережа не прийняла сусідську мережу за свою, використовується токен, що генерується для кожного головного контролера. В рамках мережі є головним контролер і периферія. У контролера при першій установці генерується свій токен, після чого відбувається прив'язка: будь-виконавчий пристрій спочатку прив'язується до контролера, запам'ятовує його токен, через деякий час апарат включається в мережу.

На Amazon продається маса Z-Wave-пристроїв. Є модулі, що вбудовуються в розетку і вимикачі, є модулі для побудови системи безпеки. Замки, сирени, освітлення, датчики диму, датчики протікання води - що завгодно. Я знайшов навіть автоматичну годівницю для котів.

Що стосується робочої частоти, то вона знаходиться в районі 900 кГц. Ця частота не є відкритою для всіх країн в світі, для кожної країни потрібно проходити сертифікацію і отримувати дозвіл на використання цієї технології, тому в різних країнах несучі частоти трохи відрізняються. В Європі частота 868,42 МГц, в Росії - 869,0 МГц, в США і Канаді - 908,42 МГц, в Гонконзі - 919,82 МГц, в Австралії - 921,42 МГц.

При вибудовуванні комірчастої мережі використовується режим Explorer Frame: всі пристрої «затихають», контролер запускає сканування мережі, і пристрої починають по черзі відповідати. Відбувається своєрідна перекличка, коли кожен пристрій вибудовує свою таблицю маршрутизації. Наприклад, цей режим рекомендується включати після перестановки меблів: є ймовірність, що пересунути шафу почав екранувати сигнал між якимись пристроями, але відкрив простір між іншими.

Вважається, що стандарт забезпечує стійку роботу на відстані 30 метрів на відкритих просторах і до 10 метрів - в квартирах. Звичайно, відстань стійкого зв'язку між модулями, розміщеними в розеткових нішах, буде ще менше, але за рахунок маршрутизації все працює досить стабільно.

Тепер поговоримо про комерційні контролерах. Найбільш поширені дві марки: Fibaro і Vera. У Fibaro є серії - Home Center і Home Center Light. У Vera теж дві серії контролерів, одна дорожче, друга дешевше. Всі вони підтримують базові набори правил, і ви цілком зможете зробити так, щоб при включенні одного пристрою активувалося інше, а через якийсь час вимикалося або робило що-небудь ще. Але якщо вам потрібно реалізувати більш складну поведінку, то доведеться програмувати самостійно. В якості мови використовується Lua.

Є й третя, менш поширена марка - Zipabox, але ці контролери, судячи з опису, не підтримують розширену автоматизацію. Проте Zipabox цікавий тим, що у нього є модулі розширення, які стикуються, як конструктор.

Але ми зараз поговоримо про інший проект, що має відношення до Raspberry Pi. Це проект спільноти, яке вирішило зробити максимально дешеве «залізо». Сьогодні Raspberry Pi в роздріб коштує близько 4000 рублів. На Amazon можна купити за $ 50, при поточному курсі це майже в півтора рази дешевше. На Raspberry Pi піднімається веб-сервер з призначеним для користувача інтерфейсом, для якого можна писати автоматизацію на JS. Як «заліза» використовується плата розширення, яку назвали RaZberry, виглядає вона так:

Як запустити в своїй квартирі «розумний дім»

А ось приклад інтерфейсу панелі управління, яка називається Z-Way. Він відображається в браузері, непогано працює і на планшетах.

Як запустити в своїй квартирі «розумний дім»

Ось приклад налаштувань. Можна подивитися, де в який момент працюють всі пристрої, перевірити подключаемості, подивитися таблицю маршрутизації і так далі.

Як запустити в своїй квартирі «розумний дім»

Як запустити в своїй квартирі «розумний дім»

Як запустити в своїй квартирі «розумний дім»

управління

Я почав думати, як реалізувати більш зручне управління системою, ніж з комп'ютера через адмінку. Це сьогодні є додатки для Android і iOS, а два роки тому офіційний клієнт під Android залишав бажати кращого: я так і не зрозумів, як ним користуватися. Знайшов, налаштував, підключився, але користуватися не зміг. У той час я був адептом Windows Phone, під який не було клієнта. «На коліні» написав клієнт для себе - коли вимикачі рассінхронізіровалісь, дружина зверталася до мене за допомогою.

Як запустити в своїй квартирі «розумний дім»

У Pebble досить багато достоїнств. По-перше, вони цілий тиждень працюють на одному заряді. Користувачі Apple Watch знають цю біль, коли вже до вечора потрібно шукати зарядку. Крім того, у Pebble екран завжди показує час, тому що зроблений на базі кольорових електронних чорнил. Є підтримка двох основних операційних систем. Годинники водостійкий. А ще вони мають апаратний порт. Підключаються «розумні» ремінці, які можна робити самому (на сайті Pebble є докладний опис).

Але за все треба платити. У годинника немає сенсорного екрану, для управління - чотири кнопки. Зате не треба постійно опитувати сенсорний екран, завдяки чому годинник так довго працюють без підзарядки. Другий недолік - дисплей відображає 64 кольору.

У підсумку я написав додаток для управління своєю системою «розумного будинку». Спочатку для останньої версії годин, а потім реалізував підтримку найпершої моделі Pebble - з чорно-білим екраном.

Як запустити в своїй квартирі «розумний дім»

Налаштування робляться у вигляді HTML-сторінки. Для розробки Pebble радять використовувати Slate Frontend Framework. Сторінка повинна бути розташована в інтернеті, що само по собі дивно, тому що без підключення до інтернету ви нічого не налаштуєте.

Після того як я написав додаток, я виклав його в офіційний магазин додатків і забув про нього. Його встановили 40 осіб, і я почав отримувати відгуки. Я давно не програмував на С і з жахом згадав, що з виділенням пам'яті - і, що ще страшніше, з її вивільненням - потрібно працювати вручну. Тому в першій версії я зробив статичний масив для восьми пристроїв, які у мене були, і все це прекрасно працювало у мене вдома.

Але в мережах, де більше восьми пристроїв, ясна річ, не працювало. І перший відгук був з Данії: «А чи можна зробити більше?» Я, звичайно, сказав, що можна, і ще за один вечір перевів додаток на динамічні масиви. Товариш був щасливий, але не дуже довго.

Виявилося, що у нього близько 54 логічних пристроїв - вимикачі та датчики, причому один фізичний модуль може бути відразу декількома логічними пристроями. Наприклад, у мене вдома є датчик, який одночасно відстежує рух, температуру, вологість і освітленість, і в системі його видно як чотири датчика. А у данця більше 50 пристроїв, і він скаржився, що для виключення чогось йому доводиться дуже довго перегортати весь список на годиннику.

Я подумав рівно вечір і придумав одну штуку. В адмінці Z-Way можна вішати на пристрій теги, і я вирішив просто додати тег Pebble, а в налаштуваннях годин ввести режим, коли на екрані відображаються тільки помічені цим тегом пристрої. Користувач сам вибирає, які пристрої він хоче бачити. Товариш написав, що це просто чудово: тепер у нього п'ять пристроїв, якими він управляє прямо з годинника.

Потім мені написав про проблему інший користувач моєї програми. Додаток вміло відображати датчики, а управляти могло тільки вимикачами, причому вимикачами типу «Увімкнути» / «Викл». Але існує багато інших керованих пристроїв - наприклад, диммери, для яких можна встановлювати значення від 0% до 100%. Або RGB-модулі, на яких можна виставляти будь-який колір.

Я погодився додати підтримку подібних пристроїв, але попросив надіслати структуру його мережі, щоб подивитися, як вони виглядають живцем. Він надіслав, я подивився - виглядають класно, але незрозуміло, що з цим робити. Я поліз в налаштування і з'ясував, що в Z-Way є віртуальні пристрої. Такому пристрою можна виставити тип, наприклад, Multilevel Switch, і воно перетворюється у віртуальний диммер.

Як запустити в своїй квартирі «розумний дім»

Нічим не керує, але робить вигляд, що він диммер. Хоча чому «нічим»? Управляє сам собою. Я можу з годин виставити значення, і він покаже мені його в дашборда. Цього мені вистачило для реалізації підтримки диммеров.

Потім я взявся за RGB. Це управління світлодіодними смужками, які можуть відображати будь-який колір. RGB-освітлення з'явилося в стандарті Z-Wave не так давно, тому спочатку воно виглядало в системі як три діммера. Тобто всі пристрої рапортували, що вони три діммера, і можна було окремо управляти червоним, зеленим і синім каналом. Для зручної роботи зі старими пристроями в сучасних системах управління зробили віртуальний пристрій RGB-освітлення, в якому можна задати три діммера.

Як запустити в своїй квартирі «розумний дім»

Оскільки ми вже вміємо ставити Dummy Dimmer, то можемо зробити Dummy RGB. Це теж добре працювало, але підтримку управління кольором я поки ще не реалізував - відправив «замовнику» тільки управління диммерами. І для нього я як раз налаштовував підтримку чорно-білих годин.

Віртуальні пристрої

У чому ще міць віртуальних пристроїв в Z-Wave? Візьмемо віртуальне HTTP-пристрій, і нехай у вас є будь-яке інше пристрій, який є несумісним зі стандартом Z-Wave, але управляється за допомогою HTTP-запитів.

Як запустити в своїй квартирі «розумний дім»

Це набір станів логічних пристроїв. Сцену можна включити або виключити - її можна тільки активувати. У мене, наприклад, зроблена сцена Away, яку я активують, виходячи з дому. Вона вимикає світло у ванній і туалеті, вимикає розетки у ванній і на кухні. Активація сцени Away вимикає все, що є керованого у мене вдома. Також у мене є сцена Back. Вона включає назад дві розетки, але не світло: повернувшись, ви включите його тоді, коли він буде потрібен.

Є ідея поставити механізовані вентилі і, йдучи з дому, перекривати воду одним натисканням. Вентилі коштують досить дорого, але затоплення сусідів може обійтися ще дорожче. Знову ж таки, є автономні датчики протікання. Покладіть їх у ванній, в туалеті, на кухні - і в разі протікання вентилі автоматично перекриються.

І останнє. Z-Way на годиннику хороший, але керувати можна тільки вдома. Якщо хочеться керувати ззовні, то можна зробити бота для Telegram. Він у мене простенький: йому посилають команду Light, він запитує: «Де?» - і показує піктограмки туалету та ванної. Вибираєш місце, він запитує: «Що зробити?» - і показує світиться лампочку і чорну. Вибираєш чорну, і він каже: «Ок, світло у ванній вимкнений».

Як запустити в своїй квартирі «розумний дім»
Як запустити в своїй квартирі «розумний дім»

висновок

Це захоплення «розумним будинком» у мене відбувалося напливами. Я в якийсь момент загорівся ідеєю, замовив модулі, вмонтував один, який керував тільки світлом в туалеті і ванній. Ще замовив датчик руху, температури і вологості. Повісив у ванній і зробив класну автоматизацію: світло в туалеті автоматично відключається через 15 хвилин, якщо забули вимкнути, а світло у ванній включається при вході, по датчику руху, а вимикається через 15 хвилин. Все класно - крім того, що жити з цим неможливо. Виявилося, що 15 хвилин в туалеті - це насправді мало, особливо якщо там добре ловиться Wi-Fi. А він ловиться добре. Збільшення періоду очікування не допомогло, так що цю автоматику я поки відключив і замовив ще один датчик руху.

Автоматика в ванній проста: входиш - світло включається, виходиш - вимикається. Зручно. Але спершу я налаштував її не дуже вдало: датчик руху стояв на вході, а коли ти заходиш в душ і задёргіваешь шторку, він тебе не бачить, і через 15 хвилин світло гасне. Потрібно відкрити шторку, махнути рукою і задёрнуть шторку назад. Проблема вирішилася перенесенням датчика в середину ванній, щоб він реагував на рух по обидві сторони від шторки.

Зараз використовуємо в основному активацію сцен при виході і повернення додому. Але в майбутньому, коли керованих пристроїв з'явиться більше, стане більше і цікавих правил для управління.

Схожі статті