Category Archives: Home Assistant

Знайомимось з вимикачем NSPanel і прошиваємо ESPHome

Минулого року китайська компанія Sonoff розпочала краудфандингову кампанію, де представила цікавий розумний девайс. Вже наприкінці 2021 року Sonoff представила світу NSPanel. Цей девайс являє собою прямокутний пристрій з кольоровим сенсорним дисплеєм розміром 3,5 дюйма та двома фізичними клавішами.

Сенсорний дисплей теж було виготовлено компанією Sonoff, це модель Nextion.

Існує дві версії NSPanel, вони відрізняються лише розмірами. Одна призначена для американського ринку, інша, для європейських країн. Силова і логічна частини девайсів однакові. В якості “мозку” компанія обрала Espressif ESP32-DOWD V3, що дозволило працювати в мережах 802.11n/g/n WiFi 4. Bluetooth 4.2/5.x використовується тут лише для першого налаштування девайсу.

Підключаємо NSPanel до електромережі.

Для налаштування та керування пристроєм необхідно завантажити додаток eWeLink, він має бути вже знайомим для власників продукції Sonoff. Якщо у вас ще немає облікового запису, створіть його, або увійдіть до власного аккаунту. eWeLink дозволяє керувати приєднаними пристроями з будь-якої точки світу де є з’єднання з мережею інтернет.

Отже, для додавання NSPanel на телефоні необхідно увімкнути bluetooth, після цього необхідно підключити девайс до електромережі.

При роботі з високою напругою дотримуйтесь правил безпеки!

В програмі eWeLink натисніть в додатку “додати новий девайс”. Пізніше, на екрані ви побачите новий пристрій, виберіть його для додавання. Далі, можливо, необхідно буде ввести облікові дані вашої Wi-Fi мережі. Після під’єднання до мережі NSPanel скоріш за все “попросить” оновити власну мікропрограму. Зробіть це, адже оновлення може містити покращення роботи чи виправлення помилок. Оновлення може зайняти чимало часу.

Силова частина вимикача містить два реле, які здатні витримати струм до 16А. А це значить, що до нього можна підключити два електричних пристрої. Це можуть бути не лише освітлювальні прилади, а й, наприклад, контролер теплої підлоги. Нижче, на зображенні схема підключення вимикача.

Налаштовуємо NSPanel в eWeLink

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

Щоб перейти до екрану термостата на вимикачі свайпніть по його екрану праворуч. Ще один свайп переведе вас до екрану віджетів. Це піктограми, за допомогою яких можна керувати іншими розумними девайсами. Так ви можете керувати розетками чи лампами, а також їхніми групами. Крім того, ви можете створити віджети для завантаження сцени.

Віджети необхідно створювати в додатку eWeLink. Максимальна кількість віджетів – вісім.

Щоб керувати девайсом за допомогою голосових асистентів Google чи Alexa створіть відповідну інтеграцію в додатку eWeLink. Крім того, Sonoff дозволяє керувати вимикачем в локальній мережі, що дає можливість інтеграцій до альтернативних систем управління розумним домом. Увімкніть відповідний пункт в налаштуваннях девайсу.

Підготовка до завантаження ESPHome

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

Як я вже казав вище, логічна частина вимикача – це дисплей Nextion, який підключений до контролера ESP32. Такий тандем дає нам надію на можливість легкого завантаження альтернативної прошивки Esphome. І дійсно, вже існує прошивка tasmota для NSPanel, також кипить робота по створенню компоненти “NSPanel” для Esphome

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

Далі необхідно викрутити два гвинти які тримають захисну пластину. Акуратно зніміть пластину, після цього ви побачите друковану плату з мікросхемою контролера esp32.

Ви можете побачити п’ять контактів в нижньому куті друкованої плати, вони позначені як 3V3, ESP_TX, ESP_RX, GND та IO0. Останній контакт – це “нульовий” пін контролера. Для того, щоб перевести контроллер в режим прошивки треба приєднати його до нульового дроту.

Для прошивки контроллера вам знадобиться перехідник usb2uart (usb – ttl converter). Перш ніж приєднувати його до комп’ютера, необхідно поставити перемичку на напругу 3,3v, це дуже важливо!

За допомогою дротів Dupont під’єднайте контакти перехідника з друкованою платою NSPanel: vcc – 3V3, GND -GND, RX – ESP_TX,TX – ESP_RX. Контакт IO0 на друкованій платі приєднайте до нульового проводу на контактному майданчику (зелений дріт на фото)

Зверніть увагу: якщо контакти дротів Dupont вийдуть за межі контактних отворів на платі, вони будуть торкатись металевої пластини дисплея. А це може призвести до короткого замикання і виходу зі строю як usb-перехідника так і мікросхем NSPanel. Щоб цього уникнути, відєднайте шлейф дисплея та вийміть друковану плату з корпусу.

Завантажуємо ESPHome на NSPanel

Тепер можна сміливо завантажувати прошивку esphome. Приєднайте usb-перехідник до комп’ютера, а в диспетчері пристроїв подивіться який com-порт він отримав. Тепер, в інтерфейсі Esphome можна створити новий вузол. Насправді достатньо буде завантажити порожній код на esp32, а далі працювати зі створеним вузлом через WiFi. Для цього виберіть варіант прошивки підключеного до комп’ютера esp-контролера. Далі, у спливаючому вікні, виберіть com-порт. Завантаження прошивки відбуватиметься декілька хвилин. Важливо щоб контакти в процесі прошивки не відєдналися.

Від’єднайте дроти та зберіть вимикач після закінчення завантаження . Після того, як підключите NSPanel до мережі з вимикачем можна працювати як зі звичайним контролером esp32. Тепер давайте завантажимо підготовлений код.


Після перезавантаження вимикач матиме знайомий інтерфейс. Єдине, хочу попередити, тут ще немає офіційної підтримки термостатів, тому я не додавав його в код. Термостат, як і деякі віджети, можна додати за допомогою json запитів. Який формат повинен мати json можна прочитати тут. А тут ви знайдете ще один варіант коду, вже з деякими віджетами і термостатом. Єдине, вам необхідно буде замінити ID пристроїв на ваші.

Для прикладу роботи віджетів-сцен я додав код, який вимикатиме мелодії на вбудованому в NSPanel бузері (п’єзодинамік). Ви можете додавати і завантажувати будь які власні сцени з HomeAssistant.

Відразу після офіційного виходу компоненти NSPanel для esphome я планую актуалізувати статтю, слідкуйте за оновленнями. Крім того, існує спосіб повністю поміняти інтерфейс на дисплеї і повністю відмовитись від NSPanel Protocol, адже на борту вимикача Nextion Display і ESP32, але то вже тема для іншої статті.

Налаштовуємо інтеграцію пристроїв Nest в Home Assistant

Трохи більше місяця тому, я робив огляд на розумний термостат Nest Learning Thermostat. Це дуже зручний та корисний девайс, який буде підтримувати комфортну температуру всередині вашого помешкання і при цьому заощадить ваші кошти на опаленні.

Як ви вже знаєте, зараз торгова марка Nest належить корпорації Google, і як, часто буває у великих компаніях, не всі напрямки виробництва встигають за запитами користувачів. А те, що Google частково закрив Nest API стало дуже сумною звісткою для незалежних розробників. Якщо ви користуєтесь додатком Nest, який керує виключно власними пристроями, то, мабуть, звернули увагу, що додаток досить давно не оновлювався. Та й девайсів там не так вже й багато.

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

Хочу попередити, для того, аби ви отримали доступ до Nest Smart Device Management API вам доведеться заплатити $5. Це одноразовий платіж за доступ до API

Після завершення налаштувань через Home Assistant ви отримаєте доступ до таких сутностей: Climate, Sensor, Camera

Реєстрація доступу пристрою

На цьому етапі ви ввімкнете Nest API та створите облікові дані, що необхідні Home Assistant для обміну інформацією з Nest API.

Створення та налаштування Cloud Project в Cloud Console:

  • Перейдіть до Google Cloud Console.
  • Якщо вперше в консолі, вам потрібно створити новий проект в Google Cloud. Натисніть «Create Project», а потім «New Project».

  • Дайте назву вашому проекту та натисніть Create.
  • Перейдіть до APIs & Services > Library, тут ви зможете ввімкнути API.
  • В полі пошуку введіть «Smart Device management» і натиснвть Enable.

  • Тепер в полі пошуку бібліотеки API введіть «Cloud Pub/Sub API» і натисніть Enable.

Тепер у вас є проект, що вже готовий до налаштування аутентифікації за допомогою OAuth.

Налаштування OAuth в Cloud Console Consent Screen

В цьому розділі ви налаштуєте OAuth consent screen, він необхідний для надання Home Assistant доступу до вашого проекту.

  • Перейдіть до Google API Console
  • Натисніть OAuth consent screen та почніть налаштовувати його.
  • Виберіть External (це єдиний варіант, якщо ви не є користувачем G-Suite), а потім натисніть Create.

  • На екрані «App Information» потрібно ввести App name (назву додатку) та User support email, а потім ввести електронну адресу в розділі «Developer contact email». Вони відображаються лише під час проходження процедури OAuth, щоб надати Home Assistant доступ до вашого облікового запису. Натисніть Save and Continue. Не додавайте непотрібну інформацію (наприклад, логотип), щоб уникнути додаткових перевірок з боку Google.
  • На кроці Scopes натисніть Save and Continue
  • На кроці «Test Users» вам потрібно додати свій обліковий запис Google (наприклад, вашу адресу @gmail.com) до списку. Натисніть «Save» у своєму тестовому обліковому записі, а потім «Save and Continue», щоб завершити процес.

  • Поверніться до OAuth consent screen і натисніть «Publish App», щоб встановити статус «In Production».

  • У попередженні говориться, що ваша програма буде доступна для будь-якого користувача з обліковими записами Google, що ви ввели на екрані інформації про додаток. Це не компрометує ні ваш обліковий запис Google ні ваші дані в Nest.
  • Переконайтеся, що не встановлено статус Testing, інакше ви будете виходити з облікового запису кожні 7 днів.

Налаштування OAuth client_id і client_secret в Cloud Console

Наприкінці цього розділу ви отримаєте client_id і client_secret, які потрібні для подальших кроків.

  • Перейдіть на сторінку Credentials і натисніть Create Credentials

  • В випадаючому списку виберіть OAuth client ID

  • Оберіть Desktop App в полі Application type
  • Дайте зрозумілу назву для ваших облікових даних
  • Тепер ви побачите повідомлення, створене клієнтом OAuth. Зверніть увагу на Client ID та Client Secret, вони знадобляться на наступних кроках.

Створення доступу до пристрою для project_id в Device Access Console

Тепер, коли у вас налаштовано аутентифікацію, ви створите Nest Device Access Project, який вимагає 5 доларів США. Після завершення у вас буде доступ пристрою до project_id, який необхідний для подальших кроків.

  • Перейдіть на сторінку Device Access Registration. Натисніть кнопку Go to the Device Access Console.
  • Установіть прапорець «Accept the Terms of Service» та натисніть «Continue to Payment», де вам буде необхідно сплатити 5 доларів США.

  • Тепер Device Access Console має бути відображена. Натисніть Create project
  • Дайте назву вашому проекту і натисніть Next.

  • Далі вам буде запропоновано ввести OAuth client ID, який ви створили раніше в попередньому розділі. Натисніть «Next».

  • Увімкніть «події», натиснувши «Enable and Create project».

  • Зверніть увагу на Project ID. На даний момент у вас є project_id, client_id і client_secret, які необхідні для Home Assistant.

Налаштування Home Assistant

Тепер у вас є все необхідне для налаштування Nest в Home Assistant. Відкрийте файл configuration.yaml і запис згідно зразку що бачите нижче.

# Example configuration.yaml entry
nest:
  client_id: CLIENT_ID
  client_secret: CLIENT_SECRET
  # "Project ID" in the Device Access Console (not Cloud Project ID!)
  project_id: PROJECT_ID

Обов’язково перезавантажте Home Assistant в розділі «Server Controls».

Налаштування пристроїв

Після того, як ви додали в configuration.yaml запис про конфігурацію Nest і перезавантажили Home Assistant вам потрібно через інтерфейс користувача додати інтеграцію Nest. Для цього можна скористатися кнопкою «My»:

Можна те саме зробити вручну:

  1. Перейдіть до інтерфейсу вашого Home Assistant.
  2. На бічній панелі натисніть «Configuration».
  3. У меню конфігурації виберіть: Integrations. (в верії 2021.12 Devices & Services)
  4. У нижньому правому куті натисніть кнопку Add Integration.
  5. Скористайтесь полем пошуку і виберіть «Nest» та далі дотримуйтесь інструкцій.

Налаштування Nest integration проведе вас через етапи авторизації вашого Home Assistant для доступу вашого облікового запису до пристроїв Nest.

Налаштування OAuth для Device Authorization

У цьому розділі ви дозволите Home Assistant отримати доступ до вашого облікового запису, згенерувавши токен аутентифікації.

  • Виберіть OAuth or Apps, оскільки вище, в Google Cloud Console, ми створили облікові дані для комп’ютерних програм.

  • Натисніть посилання authorize your account

  • Відкриється нова вкладка, на якій можна обрати ваш обліковий запис Google. Це має бути той самий обліковий запис розробника, який ви налаштували раніше.
  • Екран дозволів Google Nest дозволить вам обрати, які пристрої налаштувати, і вибирати пристрої з кількох ваших осель. Можливо, ви захочете ввімкнути все, однак ви можете пропустити будь-яку функцію, яку не бажаєте використовувати в вашому Home Assistant.

  • Ви будете перенаправлені на іншу сторінку вибору облікового запису.
  • Ви можете побачити екран попередження про те, що Google не перевірив цю програму, оскільки ви щойно налаштували непідтверджений developer workflow. Натисніть Continue, щоб продовжити.

  • Потім вам буде запропоновано надати доступ до додаткових дозволів. Натисніть Allow.
  • Підтвердьте, що ви хочете надати постійний доступ для Home Assistant.

  • Скопіюйте токен

  • Вставте токен в діалогове вікно Home Assistant Link Account Google.

  • Наступним кроком є введення Cloud Project ID, щоб отримувати оновлення з ваших пристроїв. Відкрийте Cloud Console і скопіюйте Project ID.

Якщо все пройшло добре, ви побачите налаштовану інтеграцію Nest

Використання автоматизації та тригерів

Інтеграція Nest робить доступними тригери пристроїв, та можливість увімкнення автоматизацій в Home Assistant. Щоб отримати повну інформацію, перегляньте посібник із початку роботи з автоматизаціями в Home Assistant.

Ви можете використовувати службу nest/set_away_mode, щоб встановити режим «Home» або «Away» :

# Example script to set away, no structure specified so will execute for all
script:
  nest_set_away:
    sequence:
      - service: nest.set_away_mode
        data:
          away_mode: away

Керування термостатом

Кліматична платформа Nest дозволяє керувати термостатом від Nest. Але зауважте, що через обмеження європейського термостата Nest E інтеграція з Home Assistant для цього термостата неможлива.

Після налаштування інтеграції та додавання картки з термостатом до інтерфейсу Lovelace з’явиться можливість керування вашими Nest девайсами через Home Assistant

Також, тепер є можливість додавати нові сутності climate в тригерах і автоматизаціях, викликаючи відповідну службу за допомогою раніше створених конфігураційних файлів. Шаблони таких налаштувань можна переглянути в інструментах розробника Home Assistant

Як навести лад в файлі конфігурації Home Assistant

Колись в моїх файлах конфігурації Home Assistant був повний хаос, і пройшло трохи часу перш, ніж я впорядкував їх. Файл configuration.yaml був перенасичений кодом і дезорганізований. Мої автоматизації були в одному файлі, а я маю понад 100 автоматизацій. Всі мої сценарії були в подібній ситуації. З часом, я створив десятки шаблонів для датчиків і binary_sensor, усі у своїх configuration.yaml файлах. Після того, як я почав плутатися в конфігурації і налаштуваннях, я наважився на “генеральне прибирання”.

Преамбула

Я хочу сказати, що ця стаття не є обговоренням найкращих способів організації файлів конфігурації Home Assistant. Тут буде вказано декілька пунктів, на які варто звернути увагу. Буде загострено увагу на тому, що і як я вирішив зробити в процесі створення конфігурації для Home assistant. Сподіваюся, мій досвід допоможе декому з вас.

Початковий стан файлів конфігурації Home Assistant

Я використовую Home Assistant протягом майже трьох років. За цей час я значно розширив можливості Home Assistant у своєму розумному домі, створивши численні автоматизації та додавав нові інтеграції. Що я не робив, так це не планував і не скорочував конфігураційні файли.

Усі мої автоматизації були в одному великому файлі (automations.yaml). Також, в одному файлі (scripts.yaml) були і всі мої сценарії. Мій configuration.yaml був наповнений великою кількістю сенсорів, ламп, вимикачів і ще багато іншого. Стало важко щось знаходити та керувати файлами.

Я хотів зробити кожен із пунктів конфігурації більш керованим. Не хотів прокручувати й шукати щось в довгих файлах лише для того, щоб зробити невеликі правки. Хочеться, щоб було легше відстежувати помилки (зазвичай, друкарські) в моїх конфігураціях. Необхідно, щоб було зрозуміло, куди потрібно додавати новий код.

Параметри організації файлів конфігурації Home Assistant

Home Assistant має кілька варіантів розділення коду. Їхня документація детально пояснює ці варіанти.

Ви можете використовувати include, щоб просто перемістити всю інтеграцію в новий окремий файл або файли.
Можете використовувати більш розширені версії include, щоб перемістити цілі інтеграції в папки з файлами.
Приклади допоможуть пояснити ці варіанти.

Основи параметра include

Почнемо з найпростішого прикладу:

automation: !include automations.yaml

Цей рядок, розміщений у вашому configuration.yaml файлі, повідомляє Home Assistant, що ваш код автоматизації знаходиться у файлі, який називається automations.yaml, що розміщено в тій же папці конфігурації. Аналогічно, ви можете розбити більше частин вашого configuration.yml файлу:

automation: !include automations.yaml
switch: !include switches.yaml
light: !include lights.yaml

Наведений вище приклад переміщує код автоматизації, вимикачів і освітлювальних приладів в окремі файли.

Розширені параметри include

Для розширених параметрів я скопіюю пояснення безпосередньо з документації Home Assistant:

  • !include_dir_list поверне вміст каталогу у вигляді списку, при цьому вміст кожного файлу буде записом у списку. Записи списку впорядковано на основі алфавітно-цифрового порядку імен файлів.
  • !include_dir_named поверне вміст каталогу у вигляді словника, який відображає ім’я файлу => вміст файлу.
  • !include_dir_merge_list поверне вміст каталогу у вигляді списку шляхом об’єднання всіх файлів в один великий список.
  • !include_dir_merge_named повертає вміст каталогу у вигляді словника, завантажуючи кожен файл і об’єднуючи його в один великий словник.
    Давайте розглянемо приклад кожного з них:
automation: !include_dir_list automations/

У цьому випадку кожна окрема автоматизація містилася б у власному файлі YAML всередині каталогу automations/. Таким чином, у вас можуть бути файли turn_on_lights.yaml та turn_off_lights.yaml в каталозі автоматизації, у кожному з них є своя автоматизація.

Порівняйте це з:

automation: !include_dir_merge_list automations/

У цьому випадку кожен файл YAML у каталозі automations/може мати кілька автоматизацій всередині. Ви можете написати правила для вмикання та вимкнення світла у файлі під назвою lights.yaml. Ключова річ, яку слід пам’ятати під час використання директиви merge_list, полягає в тому, що всі автоматизації у всіх файлах мають бути у форматі списку (з дефісом), наприклад:

- alias: "Turn on Light"
  trigger:
    - platform: state
      entity_id: device.iphone
      to: "home"
  action:
    - service: light.turn_on
      target:
        entity_id: light.living_room

але не:

alias: "Turn on Light"
trigger:
  - platform: state
    entity_id: device.iphone
    to: "home"
action:
  - service: light.turn_on
    target:
      entity_id: light.living_room

!include_dir_named та !include_dir_merged_named працюють аналогічно, але замість того, щоб об’єднувати файли в список, вони об’єднують їх у словник. Наприклад, скрипти завантажуються до словника, тому варто використовувати такий запис замість списку, як то:

script: !include_dir_named scripts/

щоб об’єднати файли в scripts каталозі, кожен із яких містить один сценарій, або

script: !include_dir_merge_named scripts/

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

Що було вирішено змінити.

Я вирішив використовувати комбінацію директив include, щоб розділити свій конфігураційний файл. Організував свої автоматизації як об’єднаний список. Таким чином, можна зберігати групи автоматизації в одному файлі. Наприклад, у мене є файл irrigation.yaml для автоматизації зрошення і файл hvac.yaml для автоматизації системи опалення та охолодження. Так само для своїх сценаріїв я створив об’єднаний словник.

Для датчиків, бінарних сенсорів, ламп, вимикачів, груп, shell команд і input_numbers використовував просту директиву include, щоб зберегти їх у власних файлах. Я не налаштовую і не додаю і не змінюю їх так часто, як автоматизації, і їх не так багато, тому думаю, що окремий файл для кожного є нормальним. Ось відповідний розділ мого configuration.yaml:

group: !include groups.yaml
automation: !include automations.yaml
automation mine: !include_dir_merge_list automations/
script: !include_dir_merge_named scripts/
sensor: !include sensors.yaml
binary_sensor: !include binary_sensors.yaml
switch: !include switches.yaml
light: !include lights.yaml
rest_command: !include rest.yaml
remote: !include remote.yaml
shell_command: !include shell.yaml
input_number: !include input_number.yaml

Зверніть увагу на рядки 2 і 3 вище. У мене є звичайна директива включення та директива об’єднання списку для automations. Це дозволяє мені організувати автоматизацію, яку я пишу у файли, в той час як автоматизації, згенеровані UI, все ще зберігатимуться у automations.yaml .

А як щодо packages?

Інший спосіб організувати свої файли – це використання пакетів. Пакети дозволяють об’єднувати інтеграції (наприклад, light, switch, input_boolean тощо) разом. Ви можете комбінувати packages з директивами include для більш логічного групування функцій у вашій конфігурації. Наприклад, ви можете мати package для домашнього кінотеатру, який міститиме все освітлення, аудіо-відео обладнання та автоматизацію для кімнати в одному пакеті.

Останні думки

Сподіваюся, після прочитання статті у вас виникнуть нові ідеї про те, як організувати конфігураційні файли вашого Home Assistant. Я хотів би почути, як це робите саме ви. Дайте мені про це знати в коментарях.

Інтегруємо електромеханічний замок в Home Assistant

Сьогодні я вас познайомлю зі способом додавання звичайного електромеханічного замка Atis до системи керування розумним будинком «Home Assistant». А вже після того, коли його буде додано, спробуємо налаштувати й інтеграцію до «Google Home». До речі, перегляньте огляд замка з яким ми будемо працювати.
Але перш ніж почати, давайте ознайомимося з пристроєм, що дозволить керувати замком за допомогою безпровідної технології zigbee.

Двоканальний релейний zigbee модуль для екосистеми “Tuya Smart”

Насправді цей девайс виробляється під різними брендами, проте у кожного виробника, він має абсолютно однакову елементну базу. Простіше всього на Aliexpress знайти цей пристрій за запитом «2CH Tuya ZigBee Relay Module», але не плутайте його зі схожою Wi-Fi моделлю. Читайте опис на сторінці товару.

Як видно на фото, пристрій має два незалежні реле, які розраховані на напругу 220V та струм до 10A. Подати живлення на логічну частину девайсу можна через звичний п’яти-вольтовий USB-mini, або через затискну клемну колодку, вона знаходиться поруч. На колодку можна подавати напругу від 7 до 32 Вольт. До речі, ні полярність, ні форма струму значення не мають.

Трохи доплативши, є можливість придбати такий релейний модуль в корпусі

Режими роботи релейного модуля

Давайте познайомимось з режимами роботи модуля. Всього девайс має три режими, які можна задати першою кнопкою «MODE», дві інші кнопки керують реле, кожна своїм.

В першому режимі кожне реле буде працювати незалежно від іншого, тобто, натиснувши на середню кнопку ми замкнемо контакти «com» та «no» першого реле. Натиснемо ще раз – замкнемо «com» та «nc». Друге реле на натискання кнопки ніяк не реагує. Але якщо натиснути третю кнопку, спрацює друге реле, при цьому перше реагувати не буде.

Давайте переведемо девайс в наступний (другий) режим натисканням на кнопку «MODE». Цей режим має назву «інтерлок». У цьому режимі обидва реле пристрою знаходяться у протилежних станах. Тобто, якщо натисканням другої кнопки ми «увімкнемо» перше реле, то друге автоматично вимкнеться. Така сама поведінка буде і з третьою кнопкою – вона перемкне обидва реле в протилежний стан. В такому режимі не буває моменту коли обидва реле увімкнені чи вимкнені одночасно. Такий режим може бути корисним, наприклад, коли необхідно керувати напрямком обертання двигуна змінивши полярність напруги на його вході. Двигун підключають до релейного модуля як на схемі, що нижче.

Третій режим роботи релейного модуля схожий на перший, бо в ньому кожне реле не залежить від іншого. Але є відмінність, яку ми використаємо при під’єднанні одного з реле до електромеханічного замка. Різниця між першим режимом і третім полягає в тому, що при натисканні кнопки відповідне реле замикає контакти «com» та «no» лише на пів секунди, а потім відразу повертається в початковий стан. Те ж саме і з другим реле, воно «увімкнеться» лише на мить в момент натискання «своєї» кнопки, і незалежно від першого реле.

Додаємо релейний zigbee модуль до Home Assistant

Буду вважати, що у вас вже встановлено і налаштовано Zigbee2MQTT. Отже перейдіть до z2m та увімкніть режим з’єднання. Подайте живлення на релейний модуль. При першому ввімкненні він автоматично перейде в режим пошуку, але якщо цього не сталось, затисніть на декілька секунд кнопки «2» і «3». Через декілька секунд в Home Assistant з’явиться новий пристрій. Зверніть увагу, на зображенні пристрою, який щойно з’явився, ви побачите двох клавішний вимикач, адже логічна система і прошивка у цих пристроїв однакова. Різниця лише в силовій частині, а саме в потужності реле.

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

Під’єднуємо релейний модуль до замка Atis

Якщо ви вже знайомі з замком, або читали огляд, то мабуть вже здогадались, що одне з реле девайсу можна з’єднати з магнітною котушкою замка. Щоб котушка не вийшла з ладу, напругу на котушку можна подавати лише на час до однієї секунди. Напруга живлення у неї становить 12V. Така ж напруга влаштує нас при підключенні живлення релейного модуля через клемну колодку. А це значить, що від одного джерела ми можемо подавати напругу на обидва пристрої.

Перша електрична схема

З такою схемою все вже може працювати. Увімкнувши перемикач-реле в додатку (або в браузері) ми вже можемо віддалено відкривати двері чи хвіртку входу в двір приватного будинку.

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

Друга електрична схема

Тепер давайте згадаємо, що в контролера доступу є контакти для під’єднання так званої «вихідної кнопки». Зазвичай це дроти чорного та жовтого кольору. При замиканні цих дротів контролер доступу відправить імпульс на котушку замка, після чого двері можна відкривати. Давайте з’єднаємо жовтий та чорний дроти контролера з контактами «com» та «no» реле zigbee модуля.

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

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

Створюємо замок в Home Assistant та прокидаємо його до «Google Home».

В Home Assistant вже є два вимикача, які з’явилися при додаванні релейного модуля. Один з цих вимикачів керує реле, що в свою чергу, відчиняє замок. Звичайно, один з цих вимикачів ви вже можете передати в Google Home, але давайте зробимо все правильно. Щоб і в Home Assistant існував саме замок, і щоб Google розумів, що треба відімкнути саме замок (а не вимикач :).

В configuration.yaml Створимо посилання на файл

lock: !include includes/lock.yaml

тепер в папці includes створіть файл lock.yaml з наступним вмістом

- platform: mqtt
  name: Frontdoor
  unique_id: frontdoor_lock
  state_topic: "zigbee2mqtt/Relay"
  command_topic: "zigbee2mqtt/Relay/right/set" #у вас може бути LEFT і інше ім’я Relay
  payload_lock: "OFF"
  payload_unlock: "ON"
  state_locked: "OFF"
  state_unlocked: "ON"
  qos: 1
  value_template: "{{ value_json.state_right }}"  #у вас може бути LEFT!!!

Після перезавантаження в «Developer Tools» з’явиться нова сутність lock.frontdoor

Тепер можна сміливо додавати новий пристрій в «Google Home» і керувати ним за допомогою голосового асистента

Огляд zigbee вимикача Aqara Opple та його налаштування в розумному будинку

Тонкі лінії, плаский білий корпус, три моделі з різною кількістю клавіш, трохи незвичне для нас горизонтальне розміщення кнопок-гойдалок – це бездротовий вимикач Aqara Opple. За задумкою китайських інженерів цей девайс мав використовуватися лише на внутрішньому ринку Китаю. Про це свідчать написи виключно китайською мовою на коробці з вимикачем «фірмового» білого кольору (виняток лише в назві моделі). Але пристрій настільки сподобався покупцям, що миттю став з’являтися на полицях магазинів в інших країнах, хоч і неофіційно. Через деякий час з’явилась його підтримка в Zigbee2mqtt, а це значить, що власники альтернативних систем керування розумним будинком теж можуть додавати вимикачі до своїх кімнат.

Зовнішній вигляд вимикача Aqara Opple

Перш ніж взяти в руки цей пристрій, давайте подивимось, що в коробці. Насправді там нічого зайвого – крім вимикача знайдемо два гвинти, три клейкі стрічки і інструкцію (звичайно ж, китайською мовою)

За допомогою клейких стрічок вимикач, (точніше його «базову» частину), можемо розмістити на рівній вертикальній поверхні, будь то стіна чи меблі. Якщо хочете замінити свій старий вимикач в монтажній коробці на цей, то можете прикріпити Opple за допомогою комплектних гвинтів. Але пам’ятайте про різницю між європейськими та китайськими монтажними коробками. Для цього девайсу потрібен квадратний китайський варіант. Ну, або доведеться щось вигадувати з кутами загвинчування гвинтів у стіну.


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

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

Тепер нам лишається приєднати вимикач до хабу. Для того, щоб перевести вимикач в режим з’єднання, затисніть кнопку на його задній частині на п’ять секунд.

Підключення вимикача Aqara Opple в Mi Home.

Після того, коли ви перевели вимикач в режим з’єднання можете додати його до додатку Mi Home з’єднавши з хабом. Проблем з додаванням пристрою не має виникнути. Єдине, не забудьте змінити регіон в налаштуваннях на «Материковий Китай».

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

Додаємо та налаштовуємо вимикач Aqara Opple в Home Assistant.

Як я вже  сказав, в zigbee2mqtt є підтримка вимикачів Aqara Opple. Давайте додамо пристрій в Home Assistant. Для цього в аддоні Zigbee2mqtt натискаємо кнопку «Permit Join»

В той же час, натиснувши кнопку на зворотному боці вимикача на 5 секунд переводимо його в режим з’єднання. Через декілька секунд девайс буде знайдено та додано в список тих, що під’єднано до Home Assistant

Задайте пристрою зрозуміле ім’я, після цього перейдіть в «Інтеграції» – «Mosquitto broker»


Тут можете подивитись стан сутностей (кнопок, батареї, силу сигналу) або скопіювати для використання в автоматизаціях їх ID

Давайте розглянемо кейс використання такого вимикача на кухні. У мене це двоклавішний варіант. Одна пара клавіш вмикає і вимикає групу з 3х ламп на стелі, інша керує світлодіодною стрічкою.

Додаємо сигналізацію Ring Alarm в Home Assistant

В одній з попередніх стате я робив огляд охоронної сигналізації Ring Alarm Security Kit, це чудовий девайс, який може зберегти вашу оселю від крадіжки. До Ring Alarm є можливість додавати різноманітні сенсори і пристрої, як то датчики руху, відкриття дверей\вікон, сенсори диму та вогню, протікання чи замерзання води, камери, розумні замки і навіть фірмові освітлювальні прилади.

Девайсами екосистеми Ring можна легко керувати за допомогою голосового асистенту Alexa. Як окремий набір Ring Alarm Security Kit дуже добрий вибір, але, якщо ви не хочете обмежувати себе пристроями одного виробника, подумайте про інтеграцію Ring до альтернативних систем керування розумним будинком.
Сьогодні я розкажу як інтегрувати девайси Ring до системи управління розумним будинком Home Assistant, на прикладі Ring Alarm Security Kit, 5-Piece другого покоління

Підготовка до інтеграції Ring Alarm в Home Assistant

Перед початком переконайтесь, що ви вже маєте аккаунт на ring.com, ви повинні знати свій логін та пароль. Можливо ви створили аккаунт при підключенні першого пристрою Ring.

В Home Assistant у вас повинен бути встановлений та налаштований плагін «Mosquitto broker». Зверніть увагу, цей плагін не потребує додаткового встановлення «Zigbee2mqtt», (якщо, звичайно, у вас немає zigbee девайсів).
Отже, будемо вважати, що ці два пункти виконано, тому перейдемо до інтеграції та її налаштування.

Інсталяція та налаштування інтеграції

Інсталюємо плагін, що має назву «Ring Devices», на момент написання статті він мав версію 4.5.5. Для того, щоб встановити цей плагін необхідно до супервайзера додати кастомний репозиторій, для цього перейдіть до вкладки «Add-on Store» і натисніть на три крапки праворуч вгорі. Оберіть пункт «Repositories»

У вікні що з’явилось додайте посилання https://github.com/tsightler/ring-mqtt-ha-addon

Тепер в списку додатків має з’явитися пункт з назвою «Ring Devices via MQTT Add-on»

Клікніть по піктограмі щойно інстальованого додатку та перейдіть до нього. Але, перш ніж натиснути «Start», увімкніть перемикач «Start on boot» потім перейдіть до налаштувань

Якщо необхідно, змініть налаштування на ті, що влаштують саме вас. На скріншоті один з варіантів, але при першому старті цього плагіна змінювати їх не обов’язково, хіба якщо необхідно вручну вказати адресу mqtt сервера

Тепер натискайте «Старт» на першій вкладці плагіна і, після його запуску перейдіть до інтерфейсу додатка натиснувши кнопку «Open web UI». У вікні плагіна введіть ваші облікові дані ring.com. Якщо раніше було увімкнено двофакторну аутентифікацію, необхідно також буде ввести код з смс-повідомлення. На наступному кроці додаток запропонує зберегти отриманий токен. Зробіть це і перезавантажте плагін.

Ще раз відкрийте веб інтерфейс плагіну та переконайтесь що він працює (It appears that this addon is already connected to Ring). Натиснувши на блакитну кнопку можемо згенерувати новий токен.

Використання сенсорів Ring в автоматизаціях Home Assistant

Аби мати можливість використовувати нові для Home Assistant сенсори, необхідно знати їх ID

Перейдіть в інтеграції та в «Mosquitto broker» оберіть посилання «пристрої»

Тепер виберіть необхідний девайс і, при необхідності змініть Entity ID на більш зрозумілий. Я, аби не заплутатись, додав в кінці «_ring». Сутність сенсора зараз має Entity ID: binary_sensor.hallway_motion_detector_ring . Тепер можемо використовувати необхідні сенсори і їх сутності в Home Assistant де це зручно та необхідно

Для прикладу покажу частину автоматизації з використанням вище вказаного сенсора:

- alias: hallwaylight_on_night
  initial_state: true
  trigger:
  - platform: state
    entity_id: binary_sensor.hallway_motion_detector_ring
    to: 'on'
  condition:
    - condition: state
      entity_id: light.hallway_lamp
      state: 'off'
    - condition: state
      entity_id: sensor.home_mode
      state: 'nightmode'
  action:
    - service: mqtt.publish
      data_template:
        topic: zigbee2mqtt/0x00178801030318a1/set
        payload: '{"state": "ON","transition": 1,"brightness": 254,"color_temp": 270,"hue_power_on_behavior": "recover"}'
        retain: true
    - service: timer.start
      entity_id: timer.hallwaylamps_5m

На сьогодні все. Побачимось.

Імітація присутності як спосіб запобігти злочину

За необхідності залишити квартиру або будинок на кілька днів, варто замислитись про можливий захист від проникнення потенційних злодіїв. Мабуть, найбільш ефективно від них можна захиститися за допомогою сигналізації, що під’єднана до пульту охоронної компанії. Але, пригадаємо знаменитий різдвяний фільм «Один вдома», коли маленький Кевін відлякує злодіїв, імітуючи присутність дорослих вдома. Ефект присутності власників – це одна з функцій системи безпеки Розумного будинку. Технології досягли такого рівня розвитку, коли імітація присутності в будинку не вимагає людської участі. Програма вмикається автоматично і може працювати по заздалегідь прописаному сценарію.

Імітація присутності за допомогою розеток і ламп

Як я вже писав в одній із статей, деякі розумні розетки та лампи можуть імітувати присутність власника квартири вдома. Вони можуть час від часу вмикати та вимикати освітлення, телевізор чи стереосистему. Зробити вигляд, ніби ви вдома, зможете за допомогою розумних пристроїв Tp-link в фірмовому додатку Kasa.

На фото можете побачити налаштування режиму «не вдома» для розеток HS100/HS110. Оберіть час початку та кінця, а також дні роботи режиму, і натисніть «старт». Тепер електроприлад, що підключений до розетки, буде час від часу вмикатися. Це, наприклад, може бути телевізор чи аудіосистема. Подібним чином режим «не вдома» працює з лампами та вимикачами Tp-link. Просто налаштуйте в додатку Kasa, коли девайси мають вмикатися. Раптово ввімкнене світло у вікні квартири може відлякати потенційного злодюжку.

Налаштування імітації присутності в Home Assistant

Ми з’ясували, що в деяких екосистемах розумного дому є можливість вмикати імітацію присутності на відповідних девайсах. Чи можливо це робити на альтернативних системах? Відповідь – так. Єдине, що необхідно зробити – встановити HACS (магазин додатків для Home Assistant). Як встановити HACS я писав в одній з попередніх статей, тому перейдемо відразу до встановлення компоненту. Перейдіть до HACS та в розділі «інтеграції» натисніть «+» та знайдіть компонент «Presence Simulation» і встановіть його. Після інсталяції перезавантажте Home Assistant.


Після перезавантаження перейдіть до Configuration > Integration і натисніть «+». В списку у спливаючому вікні знайдіть «Presence Simulation».

Далі необхідно обрати групу пристроїв чи пристрій, що буде «імітувати присутність».

Зверніть увагу, назву необхідно вказувати вручну, і вона має бути без помилок. Якщо це має буде група девайсів, створіть її заздалегідь в configuration.yaml.

group: !include groups.yaml

/config/groups.yaml

test group of lights:
    entities:
       - light.livingroom_color_lamp_1
       - light.livingroom_color_lamp_2
       - light.livingroom_color_lamp_3

Повну назву групи скопіюйте в інструментах розробника.

В налаштуваннях «симуляції присутності» ви можете зустріти параметр під назвою delta. Це кількість днів історії, яку буде використовувати симуляція для навчання. Симуляція буде використовувати інформацію з бази даних про те, як поводили себе прилади протягом delta днів. Саме тому важливо, щоб в налаштуваннях БД не було встановлено видалення інформації за період, що менший за дельту!

Додаток також створить вимикач switch.presence_simulation, коли він увімкнений – симуляція присутності працює.

Ще одним зі способів керування симуляцією є наступні сервіси presence_simulation.start, presence_simulation.stop і presence_simulation.toggle.
Використовуючи вище згаданий вимикач та сервіси, можемо написати автоматизацію з вмиканням та вимиканням імітації присутності господаря будинку. Звичайно, тут є можливість застосовувати розклади і таймери.

Налаштовуємо адаптивне освітлення у вас вдома

Протягом багатьох тисячоліть людство прокидалось з першими променями сонця. Промені жовтого теплого кольору лагідно пробуджують нас вранці. Весь день кольорова температура змінюється, приблизно ополудні промені стають білими та яскравими. Холодне яскраве світло бадьорить нас. Вже до вечора температура освітлення стає більш теплою, промені знову «жовтіють». Так Сонце посилає нам сигнали, коли час бути в тонусі і коли пора відпочивати.

Технології розумного будинку дозволяють керувати освітлювальними приладами і змінювати їхню яскравість та кольорову температуру в залежності від часу доби, пори року і, навіть, географічних координат вашого помешкання. Це називається адаптивним освітленням. В Home Assistant існує декілька компонентів для налаштування адаптивного освітлення, один з них Flux. Flux – стандартний компонент, ви легко знайдете документацію по налаштуванню на офіційному сайті. Сьогодні ми розглянемо два інших, вони встановлюються з репозиторію HACS і мають більш гнучкі налаштування.

Адаптивне освітлення за допомогою інтеграції Circadian Lighting.

Будьте здоровіші і краще спіть, синхронізуючи своє розумне освітлення з природним освітленням, щоб підтримувати свій добовий ритм!”- це девіз автора першого компоненту адаптивного освітлення для Home Assistant, що має назву «Circadian Lighting».
Адаптивне освітлення повільно змінює кольори та яскравість ваших світлових приладів, синхронізуючи їх із природною колірною температурою неба протягом дня. Це надає вам більш природних відчуттів.
Крім того, адаптивне освітлення може встановити для вашого світла приємний холодний білий колір на 1% у режимі «Сон», який ніби імітує зоряне світло.

Встановлюємо компонент з використанням HACS

В магазині HACS досі можемо знайти посилання на репозиторій «Circadian Lighting», але, на жаль автор не розвиває проєкт більше року. А зі зміною коду в ядрі Home Assistant цей компонент перестав працювати зовсім. На основі «Circadian Lighting» було створено інший компонент, який, на мою думку, є більш гнучким в налаштуванні. Його встановленням ми зараз займемось.

  • Зайдіть на сторінку HACS в вашому Home Assistant. (Як встановити HACS я розказував в цій статті). Натисніть три крапки праворуч в верхній частині екрану.

  • Інсталюйте новий компонент з назвою «adaptive_lighting» натиснувши кнопку «Install», після чого перезавантажте Home Assistant

  • Після перезавантаження, для того, щоб вибрати які освітлювальні прилади будуть «брати участь в адаптивному освітленні», йдемо до інтеграцій і додаємо «Adaptive Lighting» натиснувши кнопку «+». А якщо цей компонент вже є в списку, можемо перейти до налаштувань.

  • Натиснувши «Configure» оберіть лампи та налаштуйте інші параметри на ваш смак. Серед налаштувань знайдете такі: мінімальна та максимальна яскравість, мінімальна та максимальна колірна температура, яскравість в режимі «сон» та деякі інші.

  • В «Інструментах розробника» можемо знайти чотири вимикачі, що з’явилися після інсталяції «адаптивного освітлення»

  • Додайте їх в картку інтерфейсу Lovelace, для зручності керування адаптивним освітленням

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

Вимикач «Adaptive Lighting Sleep Mode» вмикає нічний режим. За замовчуванням це тепле світло з 1% яскравості. Цей вимикач зручно використовувати в парі з голосовими асистентами, коли розумна колонка, за вашою командою, вмикає нічний режим.

Встановлення HACS в Home Assistant

Для початку варто пояснити, що таке HACS і для чого він потрібен. HACS – це абревіатура від англійських слів home assistant community store. Простіше кажучи – це магазин співтовариства Home Assistant. В цьому магазині викладено різні додатки, що певним чином покращують функціонал Home Assistant.
HACS має власний сайт де є інструкція по встановленню цього магазину додатків, він має адресу https://hacs.xyz/ . Сайт влаштований за wiki-принципом, тобто, будь-хто може внести вклад до його контенту. Звичайно, тут всі зміни проходять модерацію.
Home Assistant розвивається досить швидко. Іноді змінюються варіанти інсталяції певних плагінів чи додатків та способи їх налаштувань. HACS тут не є виключенням. Хоча й встановлення HACS’у значно спростилося, для декого це все ще може бути важкою задачею. Отже, почнемо налаштування.

Підготовка до встановлення HACS

Для початку, на вашому сервері з Home Assistant необхідно встановити та налаштувати плагін SSH.

Для цього перейдіть в панель Supervisor та звідти встановіть SSH add-on (для цього необхідно активувати advanced mode у вашому профілі).

Налаштуйте SSH add-on згідно його документації, що є у відповідній вкладці плагіну. Натисніть Start для SSH add-on. В його налаштуваннях, для зручності, можна вивести іконку швидкого доступу на бокову панель.

Тим, у кого ще немає акаунта в https://github.com/ саме час його створити, адже, на одному з кроків інсталяції він нам знадобиться.

Встановлюємо HACS

На наступному кроці необхідно перейти до плагіну SSH та в його вікні ввести наступну команду:

wget -q -O - https://install.hacs.xyz | bash -


після її виконання перезавантажте Home Assistant, а потім, після його завантаження очистіть кеш браузера (CTRL + F5).

Перейдіть до інтеграцій і натисніть кнопку “+” в нижньому куті праворуч. У спливаючому вікні почніть вводити слово “hacs”, щоб знайти його, після чого, клікніть по відповідній піктограмі. Зачекайте поки йде інсталяція.

На наступному кроці поставте прапорці у вікні, що з’явилось.

Далі ви побачите вікно зі спеціальним кодом і посиланням на сторінку https://github.com/login/device .
Ви ж не забули зареєструватися на github?

Скопіюйте код та введіть його в потрібне поле на сторінці. Таким чином ви авторизуєте hacs і дозволите завантажувати вміст репозиторіїв від вашого імені.

Якщо все зроблено правильно, то на останніх кроках ви побачите підтвердження верифікації і повідомлення про успішно встановлений HACS.
Тепер, після перезавантаження серверу в боковій панелі з’явилась піктограма HACS. В списку інтеграцій теж бачимо відповідний пункт.

Отже, Магазин співтовариства Home Assistant HACS встановлено. Як бачите, додатки в ньому розділені на три основні категорії. Обирайте ті, що потрібні саме вам. Встановлюються вони, як то кажуть, в один клік. Крім того, HACS допомагає тримати ваші додатки в актуальному стані, і оновлення для них встановлюються так само легко.

В наступних статтях я розкажу про деякі корисні інтеграції з HACS та їх налаштування, але це буде пізніше.
На сьогодні все. Побачимось.

Створюємо власний external converter на прикладі Orvibo Smart sticker switch

Може трапитись ситуація, коли ви придбали нібито сумісний zigbee девайс, та він чомусь не працює, а zibbee2mqtt повідомляє, що пристрій не підтримується.

При натисканні кнопок чи отриманні показів “не сумісного” девайсу в логах можемо бачити подібні повідомлення:

Debug Received Zigbee message from '0x00124b000cc8dbf4', type 'raw', cluster '23', data '{"data":[25,0,8,3,0,0],"type":"Buffer"}' from endpoint 1 with groupID 0
Warning Received message from unsupported device with Zigbee model '51725b7bcba945c8a595b325127461e9' and manufacturer name '欧瑞博'
Debug Received Zigbee message from '0x00124b000cc8dbf4', type 'raw', cluster '23', data '{"data":[25,0,8,11,0,0],"type":"Buffer"}' from endpoint 1 with groupID 0
Warning Received message from unsupported device with Zigbee model '51725b7bcba945c8a595b325127461e9' and manufacturer name '欧瑞博'

Існує два способи, щоб зробити ваш пристрій сумісним з zibbee2mqtt. Перший спосіб – написання зовнішнього конвертера, другий – додавання вашої zigbee моделі в репозиторій zigbee-herdsman-converters. Розглянемо обидва способи.


Пишемо власний zigbee2mqtt external converter

Конвертер – це невеликий файл з розширенням js, в якому мають бути вказані атрибути пов’язані з роботою вашого девайса. Точніше – перетворення повідомлень від пристрою до координатора в “зрозумілий” формат.

Знаючи точну назву вашого пристрою, знайдемо її у вже готовому конвертері за адресою. Знаходимо тут у файлі наступний код:

// ORVIBO
    {
        zigbeeModel: ['3c4e4fc81ed442efaf69353effcdfc5f'],
        model: 'CR11S8UZ',
        vendor: 'ORVIBO',
        description: 'Smart sticker switch',
        fromZigbee: [fz.orvibo_raw_1],
        exposes: [e.action(['button_1_click', 'button_1_hold', 'button_1_release', 'button_2_click', 'button_2_hold', 'button_2_release',
            'button_3_click', 'button_3_hold', 'button_3_release', 'button_4_click', 'button_4_hold', 'button_4_release'])],
        toZigbee: [],
    },

Давайте трохи модифікуємо його і збережемо в окремому файлі, замінивши zigbeeModel на вашу з логів (‘51725b7bcba945c8a595b325127461e9’) :

const device = {
    zigbeeModel: ['51725b7bcba945c8a595b325127461e9'],
    model: 'CR11S8UZ',
    vendor: 'ORVIBO',
    description: 'Smart sticker switch',
    fromZigbee: [fz.orvibo_raw_1],
    exposes: [e.action(['button_1_click', 'button_1_hold', 'button_1_release', 'button_2_click', 'button_2_hold', 'button_2_release',
            'button_3_click', 'button_3_hold', 'button_3_release', 'button_4_click', 'button_4_hold', 'button_4_release'])],
    toZigbee: [],
};

Додайте наступний код в кінці цього файлу:

module.exports = device;

Далі нам необхідно знайти у файлі код, що починається з orvibo_raw_1, це “слово” ми вже зустрічали в стрічці

fromZigbee: [fz.orvibo_raw_1] 

Скопіюємо цю секцію в наш файл і передамо її константі fz, вставимо цей код над

const device = {... ...};

У вас має вийти подібний код

const fz = {
	orvibo_raw_1: {
        cluster: 23,
        type: 'raw',
        convert: (model, msg, publish, options, meta) => {
            // 25,0,8,3,0,0 - click btn 1
            // 25,0,8,3,0,2 - hold btn 1
            // 25,0,8,3,0,3 - release btn 1
            // 25,0,8,11,0,0 - click btn 2
            // 25,0,8,11,0,2 - hold btn 2
            // 25,0,8,11,0,3 - release btn 2
            // 25,0,8,7,0,0 - click btn 3
            // 25,0,8,7,0,2 - hold btn 3
            // 25,0,8,7,0,3 - release btn 3
            // 25,0,8,15,0,0 - click btn 4
            // 25,0,8,15,0,2 - hold btn 4
            // 25,0,8,15,0,3 - release btn 4
            // TODO: do not know how to get to use 5,6,7,8 buttons
            const buttonLookup = {
                3: 'button_1',
                11: 'button_2',
                7: 'button_3',
                15: 'button_4',
            };
            const actionLookup = {
                0: 'click',
                2: 'hold',
                3: 'release',
            };
            const button = buttonLookup[msg.data[3]];
            const action = actionLookup[msg.data[5]];
            if (button) {
                return {action: `${button}_${action}`};
            }
        },
    },
};

Додайте на самому початку коду наступне:

const exposes = require('zigbee-herdsman-converters/lib/exposes');
const e = exposes.presets;

Після цього, коли все зроблено правильно, файл має виглядати так:

const exposes = require('zigbee-herdsman-converters/lib/exposes');
const e = exposes.presets;
const fz = {
	orvibo_raw_1: {
        cluster: 23,
        type: 'raw',
        convert: (model, msg, publish, options, meta) => {
            // 25,0,8,3,0,0 - click btn 1
            // 25,0,8,3,0,2 - hold btn 1
            // 25,0,8,3,0,3 - release btn 1
            // 25,0,8,11,0,0 - click btn 2
            // 25,0,8,11,0,2 - hold btn 2
            // 25,0,8,11,0,3 - release btn 2
            // 25,0,8,7,0,0 - click btn 3
            // 25,0,8,7,0,2 - hold btn 3
            // 25,0,8,7,0,3 - release btn 3
            // 25,0,8,15,0,0 - click btn 4
            // 25,0,8,15,0,2 - hold btn 4
            // 25,0,8,15,0,3 - release btn 4
            // TODO: do not know how to get to use 5,6,7,8 buttons
            const buttonLookup = {
                3: 'button_1',
                11: 'button_2',
                7: 'button_3',
                15: 'button_4',
            };

            const actionLookup = {
                0: 'click',
                2: 'hold',
                3: 'release',
            };
            const button = buttonLookup[msg.data[3]];
            const action = actionLookup[msg.data[5]];
            if (button) {
                return {action: `${button}_${action}`};
            }
        },
    },
};
const device = {
    zigbeeModel: ['51725b7bcba945c8a595b325127461e9'],
    model: 'CR11S8UZ',
    vendor: 'ORVIBO',
    description: 'Smart sticker switch',
    fromZigbee: [fz.orvibo_raw_1],
    exposes: [e.action(['button_1_click', 'button_1_hold', 'button_1_release', 'button_2_click', 'button_2_hold', 'button_2_release',
            'button_3_click', 'button_3_hold', 'button_3_release', 'button_4_click', 'button_4_hold', 'button_4_release'])],
    toZigbee: [],
};
module.exports = device;

Збережіть цей файл з розширенням js і розмістіть його в папці zigbee2mqtt. Зазвичай вона знаходиться за адресою \config\zigbee2mqtt.

Відкрийте інтерфейс zigbee2mqtt і перейдіть в розділ “налаштування”. У вкладці “External converters” натисніть “+” та введіть назву створеного вами файла. Після цього, збережіть зміни та перезавантажте zigbee2mqtt, (в правому верхньому куті з’явиться кнопка “перезавантажити”).

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

Додаємо zigbeeModel зробивши форк в репозиторії

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

Щоб внести зміни до файлу, перейдіть за посиланням і натисніть кнопку “редагувати” (звичайно, у вас має бути аккаунт на github).

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

Відправте пропозицію на редагування натиснувши кнопку під формою.

Якщо у файлі не зроблено помилок – ви побачите підтвердження про проходження автоматичної перевірки. Максимум через добу, вашу пропозицію розглянуть вручну. Вже після затвердження змін ви можете оновити dev-версію модуля zigbee2mqtt в своєму Home Assistant, і тепер матимете робочий zigbee девайс.