Node-RED Alice: различия между версиями
Matveevrj (обсуждение | вклад) |
|||
(не показано 38 промежуточных версий 3 участников) | |||
Строка 1: | Строка 1: | ||
{{DISPLAYTITLE: Настройка Алисы на контроллере Wiren Board}} | {{DISPLAYTITLE: Настройка Алисы на контроллере Wiren Board}} | ||
[[Image: yandex-application.png |300px|thumb|right| Список устройств в приложении Яндекс ]] | [[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]. | |||
== Подготовка == | == Подготовка == | ||
{{YouTube | |||
| link= https://youtu.be/dtObx94vM3s | |||
| text= Как настроить Алису на контроллере Wiren Board | |||
| width= 350 | |||
}} | |||
Для настройки Алисы на контроллере [[Wiren Board]] с помощью Node-RED нам понадобится: | Для настройки Алисы на контроллере [[Wiren Board]] с помощью Node-RED нам понадобится: | ||
* установленный | * установленный Node-RED и [[Node-Red | настроенный модуль WB Nodes]], | ||
* модуль [https://flows.nodered.org/node/node-red-contrib-alice node-red-contrib-alice] — его мы установим ниже, | * модуль [https://flows.nodered.org/node/node-red-contrib-alice node-red-contrib-alice] — его мы установим ниже, | ||
* Яндекс-аккаунт и мобильное приложение Яндекс. | * Яндекс-аккаунт и мобильное приложение Яндекс. | ||
Строка 41: | Строка 51: | ||
# Вы вернётесь в окно ''Edit alice-device node'' в котором заполните поля и добавьте новое устройство или нажмите '''Cancel''' для выхода. | # Вы вернётесь в окно ''Edit alice-device node'' в котором заполните поля и добавьте новое устройство или нажмите '''Cancel''' для выхода. | ||
Настройка учётной записи завершена, теперь можем добавлять новые устройства, которыми | Настройка учётной записи завершена, теперь можем добавлять новые устройства, которыми можно будет управлять с любого устройства с Алисой или через приложение Яндекс. | ||
<gallery mode="packed" heights="150px" caption="Настройка ноды alice-service"> | <gallery mode="packed" heights="150px" caption="Настройка ноды alice-service"> | ||
Строка 73: | Строка 83: | ||
#** Type — тип устройства. | #** Type — тип устройства. | ||
# Нажмите на кнопку '''Add''', чтобы сохранить изменения. | # Нажмите на кнопку '''Add''', чтобы сохранить изменения. | ||
# Вы вернётесь в окно '''Edit On_Off node''', в котором поставьте флажок '''Always answer Alice with success''' | # Вы вернётесь в окно '''Edit On_Off node''', в котором поставьте флажок '''Always answer Alice with success''' — эта настройка позволит Алисе не ждать ответа от устройства после отправки команды. Это нужно нам, так как мы не задействуем вход ноды '''On_Off'''. | ||
<gallery mode="packed" heights="150px" caption="Настройка Яндекс-устройства"> | <gallery mode="packed" heights="150px" caption="Настройка Яндекс-устройства"> | ||
Строка 84: | Строка 92: | ||
=== Управление устройствами умного дома === | === Управление устройствами умного дома === | ||
[[Image: edit-wb-out-node.png | | [[Image: edit-wb-out-node.png |250px|thumb|right| Настройка ''out node'' ]] | ||
Чтобы управлять устройствами, подключенными к контроллеру, нам понадобится '''WB Nodes''', который должен быть | Чтобы управлять устройствами, подключенными к контроллеру, нам понадобится '''WB Nodes''', который должен быть установлен и настроен заранее. | ||
Подключим встроенный зуммер контроллера: | |||
{{Node-RED Tuning wb-out | |||
|name = Buzzer | |||
|mqtt-topic = buzzer/enabled | |||
}} | |||
[[Image: change-node-converter-bool-to-number.png | | [[Image: change-node-converter-bool-to-number.png |250px| thumb | right| Настройка ноды ''change'']] | ||
Теперь, когда у нас настроены виртуальное Яндекс-устройство и один из mqtt-топиков контроллера Wiren Board, нам нужно их связать между собой. | Теперь, когда у нас настроены виртуальное Яндекс-устройство и один из mqtt-топиков контроллера Wiren Board, нам нужно их связать между собой. | ||
Перед связыванием нужно учесть | Перед связыванием нужно учесть, что: | ||
# виртуальное Яндекс-устройство на выход отправляет сигнал '''true/false''' | # виртуальное Яндекс-устройство на выход отправляет сигнал '''true/false''' | ||
# mqtt-топик контроллера принимает сигнал '''1/0'''. | # mqtt-топик контроллера принимает сигнал '''1/0'''. | ||
Строка 108: | Строка 112: | ||
# Перетяните в рабочую область ноду '''change''', которая находится слева в группе '''function'''. | # Перетяните в рабочую область ноду '''change''', которая находится слева в группе '''function'''. | ||
# Дважды кликните на ней — откроется окно '''Edit change node''', укажите имя и настройте правила в блоке '''Rules''': | # Дважды кликните на ней — откроется окно '''Edit change node''', укажите имя и настройте правила в блоке '''Rules''': | ||
#* Change → msg.payload → Search for: false → Replace with: 0 | #* Change → msg.payload → Search for, boolean: false → Replace with, number: 0 | ||
#* Change → msg.payload → Search for: true → Replace with: 1 | #* Change → msg.payload → Search for, boolean: true → Replace with, number: 1 | ||
# Нажмите кнопку '''Done'''. Конвертер готов. | # Нажмите кнопку '''Done'''. Конвертер готов. | ||
[[Image: alice-flow.png | | [[Image: alice-flow.png |250px| thumb | right| Внешний вид флоу со связями]] | ||
Теперь соедините ноды между собой в таком порядке: выход ноды '''On_Off''' → '''Конвертер''' → ''' | Теперь соедините ноды между собой в таком порядке: выход ноды '''On_Off''' → '''Конвертер''' → вход ноды '''out'''. | ||
Чтобы опубликовать изменения, нажмите в правом верхнем углу кнопку '''Deploy'''. | Чтобы опубликовать изменения, нажмите в правом верхнем углу кнопку '''Deploy'''. | ||
Строка 120: | Строка 124: | ||
[[Image: nr-alice-feedback-2.png |250px|thumb|right| Настройка ноды ''change'' ]] | [[Image: nr-alice-feedback-2.png |250px|thumb|right| Настройка ноды ''change'' ]] | ||
[[Image: nr-alice-feedback-3.png |250px|thumb|right| Настройка ноды ''On_Off'' ]] | [[Image: nr-alice-feedback-3.png |250px|thumb|right| Настройка ноды ''On_Off'' ]] | ||
В примере выше мы настроили управление устройством умного дома, но не сделали считывание его состояния — дополним наше флоу и добавим отправку состояния зуммера Алисе. | |||
В примере выше мы настроили управление устройством умного дома, но не сделали считывание его состояния | |||
Настраиваем получение значений из mqtt-топика: | Настраиваем получение значений из mqtt-топика: | ||
{{Node-RED Tuning wb-in | |||
|name = Buzzer | |||
|mqtt-topic = buzzer/enabled | |||
}} | |||
Полученное значение мы отправим в ноду '''On_Off''', которая передаст информацию в облако, но перед этим нужно учесть три момента: | Полученное значение мы отправим в ноду '''On_Off''', которая передаст информацию в облако, но перед этим нужно учесть три момента: | ||
# нужно включить в ноде '''On_Off''' контроль устройства по сигналу на входе | # нужно включить в ноде '''On_Off''' контроль устройства по сигналу на входе, | ||
# виртуальное Яндекс-устройство на вход принимает сигнал '''true/false''' | # виртуальное Яндекс-устройство на вход принимает сигнал '''true/false''', | ||
# | # нода '''in''' отдаёт сигнал '''1/0'''. | ||
Сперва включим контроль устройства в ноде '''On_Off''': | Сперва включим контроль устройства в ноде '''On_Off''': | ||
Строка 144: | Строка 145: | ||
# Перетяните в рабочую область ноду '''change''', которая находится слева в группе '''function'''. | # Перетяните в рабочую область ноду '''change''', которая находится слева в группе '''function'''. | ||
# Дважды кликните на ней — откроется окно '''Edit change node''', укажите имя и настройте правила в блоке '''Rules''': | # Дважды кликните на ней — откроется окно '''Edit change node''', укажите имя и настройте правила в блоке '''Rules''': | ||
#* Change → msg.payload → Search for: 1 → Replace with: true | #* Change → msg.payload → Search for, number: 1 → Replace with, boolean: true | ||
#* Change → msg.payload → Search for: 0 → Replace with: false | #* Change → msg.payload → Search for, number: 0 → Replace with, boolean: false | ||
# Нажмите кнопку '''Done'''. Конвертер готов. | # Нажмите кнопку '''Done'''. Конвертер готов. | ||
Теперь соедините ноды между собой в таком порядке: выход ноды ''' | Теперь соедините ноды между собой в таком порядке: выход ноды '''in''' → '''Конвертер''' → вход ноды '''On_Off'''. | ||
[[Image: flow feedback.png |600px| Внешний вид флоу с обратной связью ]] | |||
Чтобы опубликовать изменения, нажмите в правом верхнем углу кнопку '''Deploy'''. | Чтобы опубликовать изменения, нажмите в правом верхнем углу кнопку '''Deploy'''. | ||
Строка 167: | Строка 170: | ||
# Через пару секунд вы увидите устройство, которое создавали в разделе [[#Виртуальное Яндекс-устройство|Виртуальное Яндекс-устройство]]. | # Через пару секунд вы увидите устройство, которое создавали в разделе [[#Виртуальное Яндекс-устройство|Виртуальное Яндекс-устройство]]. | ||
Объединение аккаунтов завершено, | Объединение аккаунтов завершено, теперь можно управлять умными домом через устройства с Алисой или приложение Яндекс. | ||
<gallery mode="packed" heights="200px" caption="Настройка в приложении Яндекс"> | <gallery mode="packed" heights="200px" caption="Настройка в приложении Яндекс"> | ||
Строка 181: | Строка 184: | ||
=== Добавление новых устройств === | === Добавление новых устройств === | ||
После объединения аккаунтов добавлять новые устройства просто: | После объединения аккаунтов добавлять новые устройства просто: | ||
# Откройте '''приложение Яндекс'''. | # Создайте виртуальные Яндекс-устройства в Node-RED на стороне контроллера и опишите логику. | ||
# Перейдите в раздел '''Устройства'''. | # Обновите список устройств на стороне Яндекс: | ||
# Откроется страница '''Мой дом''', нажмите '''+''' и выберите '''Устройство умного дома'''. | #* Откройте '''приложение Яндекс'''. | ||
# На странице '''Добавить устройства''', в разделе '''Связанные аккаунты''' найдите '''NodeRed Home''' и нажмите кнопку '''Обновить'''. | #* Перейдите в раздел '''Устройства'''. | ||
#* Откроется страница '''Мой дом''', нажмите '''+''' и выберите '''Устройство умного дома'''. | |||
#* На странице '''Добавить устройства''', в разделе '''Связанные аккаунты''' найдите '''NodeRed Home''' и нажмите кнопку '''Обновить'''. | |||
После этого в приложении Яндекс появятся новые устройства. | После этого в приложении Яндекс появятся новые устройства. | ||
Строка 191: | Строка 196: | ||
== Полезные ссылки == | == Полезные ссылки == | ||
* [https://yandex.ru/support/smart-home/third-party/turn-on.html Яндекс.Справка: Установка и настройка умных устройств] | * [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 Телеграм-канал автора модуля]. |
Версия 20:13, 11 марта 2024
Описание
Обмен данными между контроллером и Яндексом будет идти через сторонний сервис, который мы не контролируем и не можем гарантировать конфиденциальность. Если это вам не подходит, используйте метод описанный в статье Яндекс: умный дом по взрослому — он сложнее и требует затрат, но безопасней. Форк yandex2mqtt с исправлениями: https://github.com/lasthead0/yandex2mqtt Алиса — это облачный голосовой помощник от Яндекс, который с помощью навыков может управлять устройствами умного дома. Все добавленные устройства будут видны в приложении Дом с Алисой, что позволит вам управлять ими удалённо со своего смартфона, умных колонок с Алисой, Яндекс.Модуля и т.п.
Описанный здесь способ не требует наличия своего домена и сертификата — это на себя берёт сайт https://node-red-alice.ru/, где также перечислены тарифы за использование.
В инструкции используется сторонний модуль с платной подпиской node-red-contrib-alice у которого есть свой Телеграм-канал, где вы можете задать вопросы и поделиться опытом: NodeRed Home Chat.
Подготовка
Для настройки Алисы на контроллере Wiren Board с помощью Node-RED нам понадобится:
- установленный Node-RED и настроенный модуль WB Nodes,
- модуль node-red-contrib-alice — его мы установим ниже,
- Яндекс-аккаунт и мобильное приложение Яндекс.
На контроллере должен быть доступ к интернету — Алиса без него не работает.
Настройка делается через встроенный в Node-Red веб-интерфейс, который доступен по адресу http://wb-ip-address:1880, например, http://192.168.42.1:1880.
В примерах мы будем создавать флоу (flows) — это блок-схемы процесса.
Установка модуля
Чтобы Node-RED мог работать с Алисой, установите модуль node-red-contrib-alice
:
- Зайдите в веб-интерфейс Node-RED.
- В правом верхнем углу вызовите меню.
- В открывшемся окне выберите вкладку Управление палитрой (Manager palette).
- Перейдите на вкладку Установка (Install), введите в поле поиска contrib-alice и нажмите на клавиатуре Enter.
- Установите пакет с названием node-red-contrib-alice.
- Закройте окно с настройками. Установка модуля завершена.
После установки, в левой панели появится секция alice.
Настройка учётной записи для модуля
Перед тем, как передавать данные из контроллера в Алису, нам нужно настроить ноду alice-service:
- Перетяните в рабочую область ноду On_Off.
- Дважды кликните на ней — откроется окно Edit On_Off node.
- В поле Device нажмите на кнопку с карандашом, откроется окно Edit alice-device node.
- Теперь в поле Credentials нажмите на кнопку с карандашом, откроется окно Edit alice-service node.
- Здесь нужно настроить учётную запись на сервере модуля
node-red-contrib-alice
:- Если у вас нет учётной записи:
- нажмите кнопку Register,
- заполните поля Email и Password,
- нажмите по очереди на кнопки Signup и потом Add.
- Если у вас уже есть учётная запись:
- заполните поля Email и Password,
- нажмите на кнопку Add.
- Если у вас нет учётной записи:
- Вы вернётесь в окно Edit alice-device node в котором заполните поля и добавьте новое устройство или нажмите Cancel для выхода.
Настройка учётной записи завершена, теперь можем добавлять новые устройства, которыми можно будет управлять с любого устройства с Алисой или через приложение Яндекс.
Добавление устройства
Как это работает
Добавление новых устройств в общем случае выглядит так:
- Описываем на контроллере виртуальное Яндекс-устройство.
- Прописываем логику, которое это устройство реализует, например, включение зуммера.
- Публикуем флоу кнопкой 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.
Управление устройствами умного дома
Чтобы управлять устройствами, подключенными к контроллеру, нам понадобится WB Nodes, который должен быть установлен и настроен заранее.
Подключим встроенный зуммер контроллера:
- Перетяните в рабочую область ноду out, которая находится слева в группе Wiren Board.
- Дважды кликните по ней — откроется окно Edit out node, где укажите:
- Name — имя, например, Buzzer.
- Server — MQTT-сервер, связь с которым настраивается при установке модуля WB Nodes.
- Channel — выберите в открывшемся списке mqtt-топик buzzer/enabled. Если список пуст, нажмите кнопку Refresh Device List.
- Command — выберите /on.
- Payload — должно быть выбрано msg.payload
- Чтобы сохранить, нажмите кнопку Done.
Теперь, когда у нас настроены виртуальное Яндекс-устройство и один из 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. Конвертер готов.
Теперь соедините ноды между собой в таком порядке: выход ноды On_Off → Конвертер → вход ноды out.
Чтобы опубликовать изменения, нажмите в правом верхнем углу кнопку Deploy.
Обратная связь
В примере выше мы настроили управление устройством умного дома, но не сделали считывание его состояния — дополним наше флоу и добавим отправку состояния зуммера Алисе.
Настраиваем получение значений из mqtt-топика:
- Перетяните в рабочую область ноду in, которая находится слева в группе Wiren Board.
- Дважды кликните по ней — откроется окно Edit in node, где укажите:
- Name — имя, например, Buzzer.
- Server — MQTT-сервер, связь с которым настраивается при установке модуля WB Nodes.
- Channel — выберите в открывшемся списке mqtt-топик buzzer/enabled. Если список пуст, нажмите кнопку Refresh Device List.
- Чтобы сохранить, нажмите кнопку Done.
Полученное значение мы отправим в ноду 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.
Чтобы опубликовать изменения, нажмите в правом верхнем углу кнопку Deploy.
Настройка интеграции со стороны Яндекс
Объединение аккаунтов
Теперь свяжем Яндекс-аккаунт с аккаунтом, созданным в модуле node-red-contrib-alice.
Это делается один раз через мобильное приложение:
- Откройте приложение Яндекс.
- Перейдите в раздел Устройства.
- Откроется страница Мой дом, нажмите + и выберите Устройство умного дома.
- На странице Добавить устройства, выберите NodeRed Home из списка производителей.
- Нажмите на кнопку Привязать к Яндексу, откроется сайт node-red-alice.ru с формой для ввода учётных данных.
- Введите в поле Email и пароль данные, которые вы использовали в разделе Настройка учётной записи для модуля.
- Нажмите кнопку Объединить, откроется страница Яндекс.Паспорт, где нужно разрешить доступ к учётной записи Яндекс.
- Если объединение аккаунтов прошло успешно, появится кнопка Обновить список устройств. Нажмите на неё.
- Через пару секунд вы увидите устройство, которое создавали в разделе Виртуальное Яндекс-устройство.
Объединение аккаунтов завершено, теперь можно управлять умными домом через устройства с Алисой или приложение Яндекс.
Добавление новых устройств
После объединения аккаунтов добавлять новые устройства просто:
- Создайте виртуальные Яндекс-устройства в Node-RED на стороне контроллера и опишите логику.
- Обновите список устройств на стороне Яндекс:
- Откройте приложение Яндекс.
- Перейдите в раздел Устройства.
- Откроется страница Мой дом, нажмите + и выберите Устройство умного дома.
- На странице Добавить устройства, в разделе Связанные аккаунты найдите NodeRed Home и нажмите кнопку Обновить.
После этого в приложении Яндекс появятся новые устройства.