Як вирішити сімейні розбіжності з допомогою 4 контролерів і 2 розумних годин за 1 місяць

image

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

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

Ну що ж, паяльник є, руки теж. Почав думати над реалізацією. Але відразу виникло дуже багато питань. Наприклад, який контролер використовувати для управління? У мене був досвід програмування контролерів лінійки від Atmel AVR. Виглядає все досить просто: реле, транзистор для розв'язки і управління одним піном контролера. Завдання стало дві. По-перше, контролер і реле треба плекати, а по-друге, потрібно контролером керувати. З харчуванням було три варіанти. Найпростіший — живлення від батарейок, але батарейки будуть сідати, і їх доведеться міняти, а це незручно. Другий варіант — розміщувати перетворювачі 220 -> 5 прямо поруч з контролером в кожній розетці. Відмінний спосіб, але готових компактних перетворювачів я не знайшов, а самому возитися з перетворювачем не хотілося, та й боявся накосячілі і спалити квартиру. Третій варіант — підвести живлення ззовні до кожної розетки. Питання управління контролером розпався на два принципових шляхи: управління по радіо і управління по дроту. Варіант з проводом виглядає найпростішим, але знову вимагає підведення шнура до кожної розетки. Для себе я вирішив, що, коли буду робити наступний ремонт у квартирі, заздалегідь предусмотрю це й підведу до кожної розетки провід, наприклад UTP 5-ї категорії. Але поки треба було розбиратися з наявними непов'язаними розетками.

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

image

Я почав вивчати наявні готові системи, на яких можна було б побудувати «розумний будинок». Я відразу вирішив, що зв'язок модулів повинна бути бездротова. Залишилося вибрати технологію. Спочатку було два варіанти — Wi-Fi і Bluetooth. Вони дуже поширені, під них багато готових рішень. Але Wi-Fi, який працює на 2,4 ГГц, не дуже зручний з точки зору організації мережі. Високе поширення і відсутність будь-якого регулювання при встановленні точок доступу робить цю частоту сильно зашумленою, а хочеться мати більш-менш стабільну систему, щоб у мене не подвисало перемикання розеток, коли працює сусідський роутер. Але це виявилося не самою серйозною проблемою. Набагато страшніший ворог Wi-Fi — мікрохвильовка. Її магнетрон випромінює на частоті 2,45 ГГц, тому, коли включається моя домашня мікрохвильова піч, навколо не працює нічого. Гасне стрімінг Bluetooth-аудіо, гасне стрімінг відео по Wi-Fi, файли не хитаються, сторінки не відкриваються — нічого. Причому неважливо, який конструкції у вас мікрохвильовка — вбудована або окремо стоїть, вона по-любому буде вносити перешкоди.



Тому від використання Wi-Fi і Bluetooth я теж відмовився.

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

image

Всі пристрої, які хочуть отримати значок «Сумісно з 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, виглядає вона так:



Ставиться на порт розширення Raspberry Pi:



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



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





Одна з переваг Z-Wave.Me — проект відкритий, ось посилання на GitHub github.com/Z-Wave-Me/home-automation. Команда розробників розкидана по різних країн — Росія, Німеччина і Швейцарія, «з офісом в інтернеті», як вони самі про себе пишуть. Інтерфейс можна безкоштовно завантажити з GitHub, при бажанні можна щось самому перезібрати.

Все це прекрасно управляється з адмінки, але це не всім зручно:



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

А рік тому, в лютому-березні 2015 року, компанія Pebble запустила збір коштів на створення нової версії годин, яка отримала назву Pebble Time. Я підтримав проект, і до жовтня години вже були в моєму розпорядженні. Я подумав, що це чудова штука для управління «розумним будинком». Адже телефон не лежить завжди в кишені, вдома я просто кладу його куди-небудь, а годинник зазвичай на руці. До того ж Pebble, на відміну від годинника на Android Wear або Apple Watch, підключається до iphone ам (яким я користувався до того часу) і до телефонами на базі Android.

Pebble
У Pebble досить багато переваг.



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

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

Роботу Pebble забезпечує операційна система на базі OpenRTOS. Програми для годин нагадують веб-додатки. Фронтенд виконується на годиннику і пишеться на C, а бекенд працює в телефоні і пишеться на JS. Розробники веб-додатків зараз прийшли в жах: де це бачено — фронтенд, а бекенд на JS? Але це легко з'ясувати: C, як найбільш компактний для компіляції мову, дуже зручний для створення вбудованих додатків, а плюс JS в тому, що він однаково добре виконується на iPhone і Android. JS працює всередині телефону і забезпечує інтерфейс для виходу в інтернет і доступу до GPS. Самі годинники мають вбудований акселерометр, гіроскоп і магнітний компас, тобто базовий набір заліза.

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

imageimageimage

imageimageimage

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



Після того як я написав програму, я виклав його в офіційний магазин додатків і забув про нього. Його встановили 40 чоловік, і я почав отримувати відгуки.

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

Виявилося, що у нього близько 54 логічних пристроїв — вимикачі, датчики, причому один фізичний модуль може бути відразу декількома логічними пристроями. У мене, наприклад, вдома є датчик, який одночасно датчик руху, температури, вологості і освітленості, і в системі його видно як чотири датчика. А у данця більше 50, і він скаржився, що для виключення чого-небудь йому доводиться на годиннику дуже довго гортати весь список. Я подумав рівно один вечір і придумав одну штуку. В адмінці Z-Wave.Me можна вішати на пристрій теги, і я вирішив додати тег Pebble. А в налаштуваннях годин ввести режим, коли на екрані відображаються лише ті пристрої, які позначені цим тегом. Тобто користувач сам вибирає, що він хоче бачити, і позначає цим тегом відповідні пристрої. Товариш написав, що це просто чудово. Тепер у нього п'ять пристроїв, якими він управляє прямо з годин, і він дуже задоволений.

Потім мені написав інший користувач моєї програми, у нього була інша проблема. Додаток вміло відображати датчики, а керувати могло тільки вимикачами, причому вимикачами типу Вкл/Викл. Але існує багато інших керованих пристроїв, наприклад диммери, для яких можна встановлювати значення від 0 до 100%. Або RGB-модулі, на яких можна виставляти будь-який колір. Додати підтримку подібних пристроїв я погодився, але попрохав його структуру мережі, щоб подивитися, як вони виглядають живцем. Він прислав, я подивився — виглядають класно, але незрозуміло, що з цим робити. Я полізла в налаштування і з'ясував, що в Z-Wave.Me є віртуальні пристрої. Такого пристрою можна виставити тип, наприклад, Multilevel Switch, і воно перетворюється у віртуальний диммер.



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

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



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

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



Тоді ми пишемо HTTP-запит на включення: адреса, який потрібно смикнути, запит на вимикання і запит, який потрібно надіслати, щоб отримати статус пристрою. Найімовірніше, пристрій, що не підтримує Z-Wave, не підтримує і відповідь у форматі On/Off.
Для його підтримки можна ввести Inline JavaScript, який буде перетворювати відповідь з вашого пристрою в on або off. А маючи віртуальне пристрій, ми далі можемо робити все що завгодно. Наприклад, інтегрувати в цю систему будь-який пристрій на базі контролерів ESP8266. Тобто ми робимо три кінця, на які пристрій вміє реагувати, а далі будь-яку обв'язку.

Сцени
Це набір станів логічних пристроїв. Сцену не можна увімкнути або вимкнути, її можна тільки активувати. У мене, наприклад, зроблена сцена Away, яку я активую, виходячи з дому.



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

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

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



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

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

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

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.