Node-RED Alice: различия между версиями

17 192 байта добавлено ,  2 месяца назад
 
(не показано 77 промежуточных версий 3 участников)
Строка 1: Строка 1:
{{Draft}}
{{DISPLAYTITLE: Настройка Алисы на контроллере Wiren Board}}
{{DISPLAYTITLE: Настройка Алисы на контроллере Wiren Board}}
[[Image: yandex-application.png |300px|thumb|right| Список устройств в приложении Яндекс ]]
== Описание ==
{{note|info|Обмен данными между контроллером и Яндексом будет идти через сторонний сервис, который мы не контролируем и не можем гарантировать конфиденциальность. Если это вам не подходит, используйте метод описанный в статье [https://habr.com/ru/post/465537/ Яндекс: умный дом по взрослому] — он сложнее и требует затрат, но безопасней. Форк yandex2mqtt с исправлениями: https://github.com/lasthead0/yandex2mqtt}}
Алиса — это облачный голосовой помощник от Яндекс, который с помощью навыков может управлять устройствами умного дома. Все добавленные устройства будут видны в приложении [[Yandex-smart-home |Дом с Алисой]], что позволит вам управлять ими удалённо со своего смартфона, умных колонок с Алисой, Яндекс.Модуля и т.п.
Описанный здесь способ не требует наличия своего домена и сертификата — это на себя берёт сайт https://node-red-alice.ru/, где также перечислены тарифы за использование.
В инструкции используется сторонний модуль с платной подпиской '''node-red-contrib-alice''' у которого есть свой Телеграм-канал, где вы можете задать вопросы и поделиться опытом: [https://t.me/nodered_home_chat NodeRed Home Chat].


== Подготовка ==
== Подготовка ==
Для настройки голосового помощника Алисы от Яндекс на контроллере [[Wiren Board]] нам понадобится:
{{YouTube
* установленный [[Node-Red | Node-RED]],
| link= https://youtu.be/dtObx94vM3s
* настроенный модуль [[Node-Red#WB_Nodes |WB Nodes]],  
| text= Как настроить Алису на контроллере Wiren Board
* модуль [https://flows.nodered.org/node/node-red-contrib-alice node-red-contrib-alice]
| width= 350
* и созданный Telegram-бот.
}}
Для настройки Алисы на контроллере [[Wiren Board]] с помощью Node-RED нам понадобится:
* установленный Node-RED и [[Node-Red | настроенный модуль WB Nodes]],  
* модуль [https://flows.nodered.org/node/node-red-contrib-alice node-red-contrib-alice] — его мы установим ниже,
* Яндекс-аккаунт и мобильное приложение Яндекс.


{{Wbincludes:Node-RED Intro}}
На контроллере должен быть доступ к интернету — Алиса без него не работает.


{{Wbincludes:Node-RED Intro}}
{{Wbincludes:Node-RED Intro}}


== Установка модуля ==
== Установка модуля ==
[[Image: installing node-red-contrib-alice.png|300px|thumb|right| Установка модуля node-red-contrib-alice]]
Чтобы Node-RED мог работать с Алисой, установите модуль <code>node-red-contrib-alice</code>:
{{Node-RED Installing plugin
|search= contrib-alice
|name= node-red-contrib-alice
}}
После установки, в левой панели появится секция ''alice''.
== Настройка учётной записи для модуля ==
Перед тем, как передавать данные из контроллера в Алису, нам нужно настроить ноду '''alice-service''':
# Перетяните в рабочую область ноду '''On_Off'''.
# Дважды кликните на ней — откроется окно '''Edit On_Off node'''.
# В поле '''Device''' нажмите на кнопку с карандашом, откроется окно ''Edit alice-device node''.
# Теперь в поле '''Credentials''' нажмите на кнопку с карандашом, откроется окно ''Edit alice-service node''.
# Здесь нужно настроить учётную запись на сервере модуля <code>node-red-contrib-alice</code>:
#* Если у вас нет учётной записи:
#*# нажмите кнопку '''Register''',
#*# заполните поля ''Email и ''Password'',
#*# нажмите по очереди на кнопки '''Signup''' и потом '''Add'''.
#* Если у вас уже есть учётная запись:
#*# заполните поля ''Email'' и ''Password'',
#*# нажмите на кнопку '''Add'''.
# Вы вернётесь в окно ''Edit alice-device node'' в котором заполните поля и добавьте новое устройство или нажмите '''Cancel''' для выхода.
Настройка учётной записи завершена, теперь можем добавлять новые устройства, которыми можно будет управлять с любого устройства с Алисой или через приложение Яндекс.
<gallery mode="packed" heights="150px" caption="Настройка ноды alice-service">
Image: edit-on_off-node.png | Редактирование ноды ''On_Off''
Image: add-alice-device-node.png | Редактирование ноды ''alice-device''
Image: add-alice-service-node-1.png | Переход к созданию учётной записи
Image: add-alice-service-node-2-register.png | Ввод Email и пароля
Image: add-alice-service-node-3-register.png | Подтверждение введённых данных
Image: add-alice-service-node-4.png | Окончание настройки
</gallery>
== Добавление устройства ==
=== Как это работает ===
Добавление новых устройств в общем случае выглядит так:
# Описываем на контроллере виртуальное Яндекс-устройство.
# Прописываем логику, которое это устройство реализует, например, включение зуммера.
# Публикуем флоу кнопкой ''Deploy''.
# В мобильном приложении Яндекс обновляем список устройств.
В примере ниже мы добавим переключатель, который будет управлять зуммером контроллера.
=== Виртуальное Яндекс-устройство ===
Сперва настраиваем виртуальное Яндекс-устройство — так как у нас переключатель, то выберем ноду '''On_Off''':
# Перетяните в рабочую область ноду '''On_Off'''.
# Дважды кликните на ней — откроется окно '''Edit On_Off node'''.
# В поле '''Device''' нажмите на кнопку с карандашом, откроется окно ''Edit alice-device node'', где:
#* В поле '''Credentials''' выберите созданную ранее учётную запись.
#* И заполните поля:
#** Name — имя устройства, которое будет видно в приложении Яндекс.
#** Room — виртуальная комната, в которой находится устройство.
#** Type — тип устройства.
# Нажмите на кнопку '''Add''', чтобы сохранить изменения.
# Вы вернётесь в окно '''Edit On_Off node''', в котором поставьте флажок '''Always answer Alice with success''' — эта настройка позволит Алисе не ждать ответа от устройства после отправки команды. Это нужно нам, так как мы не задействуем вход ноды '''On_Off'''.
<gallery mode="packed" heights="150px" caption="Настройка Яндекс-устройства">
Image: edit-on_off-node.png | Редактирование ноды ''On_Off''
Image: add-alice-device.png | Редактирование ноды ''alice-device''
Image: add-alice-device done.png | Окончание настройки
</gallery>
=== Управление устройствами умного дома ===
[[Image: edit-wb-out-node.png |250px|thumb|right| Настройка ''out node'' ]]
Чтобы управлять устройствами, подключенными к контроллеру, нам понадобится '''WB Nodes''', который должен быть установлен и настроен заранее.
Подключим встроенный зуммер контроллера:
{{Node-RED Tuning wb-out
|name = Buzzer
|mqtt-topic = buzzer/enabled
}}
[[Image: change-node-converter-bool-to-number.png |250px| thumb | right|  Настройка ноды ''change'']]
Теперь, когда у нас настроены виртуальное Яндекс-устройство и один из mqtt-топиков контроллера Wiren Board, нам нужно их связать между собой.
Перед связыванием нужно учесть, что:
# виртуальное Яндекс-устройство на выход отправляет сигнал '''true/false'''
# mqtt-топик контроллера принимает сигнал '''1/0'''.
Поэтому нам понадобится конвертер сообщений:
# Перетяните в рабочую область ноду '''change''', которая находится слева в группе '''function'''.
# Дважды кликните на ней — откроется окно '''Edit change node''', укажите имя и настройте правила в блоке '''Rules''':
#* Change → msg.payload → Search for, boolean: false → Replace with, number: 0
#* Change → msg.payload → Search for, boolean: true → Replace with, number: 1
# Нажмите кнопку '''Done'''. Конвертер готов.
[[Image: alice-flow.png |250px| thumb | right|  Внешний вид флоу со связями]]
Теперь соедините ноды между собой в таком порядке: выход ноды '''On_Off''' → '''Конвертер''' → вход ноды '''out'''.
Чтобы опубликовать изменения, нажмите в правом верхнем углу кнопку '''Deploy'''.
=== Обратная связь ===
[[Image: nr-alice-feedback-1.png |250px|thumb|right| Настройка ноды ''in node'' ]]
[[Image: nr-alice-feedback-2.png |250px|thumb|right| Настройка ноды ''change'' ]]
[[Image: nr-alice-feedback-3.png |250px|thumb|right| Настройка ноды ''On_Off'' ]]
В примере выше мы настроили управление устройством умного дома, но не сделали считывание его состояния — дополним наше флоу и добавим отправку состояния зуммера Алисе.
Настраиваем получение значений из mqtt-топика:
{{Node-RED Tuning wb-in
|name = Buzzer
|mqtt-topic = buzzer/enabled
}}
Полученное значение мы отправим в ноду '''On_Off''', которая передаст информацию в облако, но перед этим нужно учесть три момента:
# нужно включить в ноде '''On_Off''' контроль устройства по сигналу на входе,
# виртуальное Яндекс-устройство на вход принимает сигнал '''true/false''',
# нода '''in''' отдаёт сигнал '''1/0'''.
Сперва включим контроль устройства в ноде '''On_Off''':
# Дважды кликните на ноде '''On_Off'''.
# Снимите флажок '''Always answer Alice with success''' — теперь Алиса будет ждать ответа от устройства при обращении к нему.
# Нажмите кнопку '''Done'''.
Теперь настроим конвертер сообщений:
# Перетяните в рабочую область ноду '''change''', которая находится слева в группе '''function'''.
# Дважды кликните на ней — откроется окно '''Edit change node''', укажите имя и настройте правила в блоке '''Rules''':
#* Change → msg.payload → Search for, number: 1 → Replace with, boolean: true
#* Change → msg.payload → Search for, number: 0 → Replace with, boolean: false
# Нажмите кнопку '''Done'''. Конвертер готов.
Теперь соедините ноды между собой в таком порядке: выход ноды '''in''' → '''Конвертер''' → вход ноды '''On_Off'''.
[[Image: flow feedback.png |600px| Внешний вид флоу с обратной связью ]]
Чтобы опубликовать изменения, нажмите в правом верхнем углу кнопку '''Deploy'''.
== Настройка интеграции со стороны Яндекс ==
=== Объединение аккаунтов ===
Теперь свяжем Яндекс-аккаунт с аккаунтом, созданным в модуле ''node-red-contrib-alice''.
Это делается один раз через мобильное приложение:
# Откройте '''приложение Яндекс'''.
# Перейдите в раздел '''Устройства'''.
# Откроется страница '''Мой дом''', нажмите '''+''' и выберите '''Устройство умного дома'''.
# На странице '''Добавить устройства''', выберите '''NodeRed Home''' из списка производителей.
# Нажмите на кнопку '''Привязать к Яндексу''', откроется сайт node-red-alice.ru с формой для ввода учётных данных.
# Введите в поле Email и пароль данные, которые вы использовали в разделе [[#Настройка учётной записи для модуля|Настройка учётной записи для модуля]].
# Нажмите кнопку '''Объединить''', откроется страница '''Яндекс.Паспорт''', где нужно разрешить доступ к учётной записи Яндекс.
# Если объединение аккаунтов прошло успешно, появится кнопка '''Обновить список устройств'''. Нажмите на неё.
# Через пару секунд вы увидите устройство, которое создавали в разделе [[#Виртуальное Яндекс-устройство|Виртуальное Яндекс-устройство]].
Объединение аккаунтов завершено, теперь можно управлять умными домом через устройства с Алисой или приложение Яндекс.
<gallery mode="packed" heights="200px" caption="Настройка в приложении Яндекс">
Image: mobile-yandex-1-devices.png | Главный экран
Image: mobile-yandex-2-home.png | Мой дом
Image: mobile-yandex-3-dev.png | Поиск NodeRed Home
Image: mobile-yandex-4-nrhome.png | Привязка аккаунта
Image: mobile-yandex-5-nralice-site.png | Авторизация на сайте сервиса
Image: mobile-yandex-6-confirm.png | Подтвердить доступ
Image: mobile-yandex-7-update-device-list.png | Обновление списка устройств
Image: mobile-yandex-8-success.png | Устройства подключены
</gallery>
=== Добавление новых устройств ===
После объединения аккаунтов добавлять новые устройства просто:
# Создайте виртуальные Яндекс-устройства в Node-RED на стороне контроллера и опишите логику.
# Обновите список устройств на стороне Яндекс:
#* Откройте '''приложение Яндекс'''.
#* Перейдите в раздел '''Устройства'''.
#* Откроется страница '''Мой дом''', нажмите '''+''' и выберите '''Устройство умного дома'''.
#* На странице '''Добавить устройства''', в разделе '''Связанные аккаунты''' найдите '''NodeRed Home''' и нажмите кнопку '''Обновить'''.


== Создание ноды для Алисы ==
После этого в приложении Яндекс появятся новые устройства.


== Полезные ссылки ==
== Полезные ссылки ==
* [https://yandex.ru/support/smart-home/third-party/turn-on.html Яндекс.Справка: Установка и настройка умных устройств]
* [https://support.wirenboard.com/t/dimmer-wb-mdm3-i-plagin-node-red-contrib-alice/10315/4 Диммер WB-MDM3 и плагин node-red-contrib-alice]
* [https://t.me/nodered_home_chat Телеграм-канал автора модуля].
translator, wb_editors
4256

правок