Найти в Дзене

🔌 Голосовая доска на ESP8266: как подружить Алису с ночником

…или как мы сделали светящуюся доску, которой можно управлять голосом. Всё своими руками — и чуть-чуть магии ☁️ Начнем с технологии умных устройств. Простенько. Жил-был Ночничок. У него был любимый журнал, где он читал только любимые рубрики. Он обожал выполнять задания, которые там появлялись: А где-то в другом конце сети жила Алиса — она обожала придумывать задания, но не знала, куда их можно отправить, чтобы другие могли их прочитать. У неё был друг — Домовёнок Кузя. Кузя почесал затылок и сказал: — Есть у меня знакомый издатель журнала, по имени Кора. Давай так: ты даёшь мне задание, я его передаю Коре и та публикует. Так и договорились. Теперь, когда Алиса говорила: — Включи ночник! Кузя получал команду, передавал Коре, та публиковала запись в нужной рубрике, а Ночничок с нетерпением ждал появления нового выпуска. И как только журнал с новой записью оказывался в его руках — он тут же сиял. Но есть ещё один важный герой — почтальон Эмкьютт. Он приносил журнал каждый раз, когда п
Оглавление

…или как мы сделали светящуюся доску, которой можно управлять голосом. Всё своими руками — и чуть-чуть магии ☁️

Начнем с технологии умных устройств. Простенько.

Доску-ночник
Доску-ночник

📖 Сказка

Жил-был Ночничок. У него был любимый журнал, где он читал только любимые рубрики.

-2

Он обожал выполнять задания, которые там появлялись:

  • то включиться,
  • то цвет поменять,
  • то яркость приглушить.

А где-то в другом конце сети жила Алиса — она обожала придумывать задания, но не знала, куда их можно отправить, чтобы другие могли их прочитать.

У неё был друг — Домовёнок Кузя.

-3

Кузя почесал затылок и сказал:

— Есть у меня знакомый издатель журнала, по имени Кора. Давай так: ты даёшь мне задание, я его передаю Коре и та публикует.

Так и договорились.

-4

Теперь, когда Алиса говорила:

— Включи ночник!

Кузя получал команду, передавал Коре, та публиковала запись в нужной рубрике, а Ночничок с нетерпением ждал появления нового выпуска. И как только журнал с новой записью оказывался в его руках — он тут же сиял.

Но есть ещё один важный герой — почтальон Эмкьютт.

-5

Он приносил журнал каждый раз, когда появлялся свежий выпуск. Шустрый, быстрый, в синей сумке через плечо.

🔍 Сравнение: Сказка vs Реальность

📌 А если по-взрослому:

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

Но напрямую Алиса с платой не разговаривает — нужен посредник. Эту роль выполняет Домовёнок Кузя — навык на сайте alexstar.ru, который пересылает команды от Алисы в MQTT-брокер Яндекса (IoT Core).

А наша ESP подписывается на MQTT и читает всё, что ей прислали. Даже если она спрятана за роутером.

-6

🔧 Подробная инструкция

Для проекта я использовала инструменты Яндекс Консоли (https://console.yandex.cloud/). Можно взять любой другой сервис, где есть IoT Core.

IoT Core – это сервис для работы с «умными» устройствами. Там мы регистрируем нашу ESP как устройство и настраиваем общение через MQTT.

-7

📂 Создаём реестр

В IoT Core нажимаем кнопку «Создать реестр». Придумываем название и задаём пароль.

Реестр
Реестр

📂 Добавляем устройство

В реестре создаём устройство, задаём ему пароль.

Устройство
Устройство

🔐 Все ID и пароли сохраняем — они понадобятся в коде ESP и в настройках Кузи.

💻 Пишем прошивку для ESP8266

Берём любую плату на ESP8266 (например, NodeMCU v3) и 8 неодиодов.

Заливаем скетч из этого

В коде указываем:

  • название сети Wi-Fi (WIFI_SSID)
  • пароль (WIFI_PASS)
  • данные для подключения к IoT Core:

// ВАЖНО: устройство подключается как само устройство

const char* MQTT_USERNAME = "***";  // DeviceID

const char* MQTT_PASSWORD = "***";       // пароль устройства

const char* DEVICE_ID     = "***";  // clientId = DEVICE_ID

📂 Где взять эти данные?

Они есть в IoT Core в настройках устройства. (У каждого пароля есть свой ID, но нам нужен именно DeviceID и пароль от устройства).

Где найти ID устройства
Где найти ID устройства

Готовый код ESP: 👉 gist с кодом или яндекс.диск

🌐 Домовёнок Кузя

Чтобы Алиса научилась управлять нашей доской, идём на сайт 👉 alexstar.ru.

Это навык, который связывает Алису и MQTT.

  1. Создаём новое устройство.
  2. Настраиваем правила для него.
  3. Создаём MQTT-брокер и указываем данные из IoT Core.

📜 Правила для устройства

Для каждой команды создаём отдельное правило:

-11

📌 Все команды ESP распознаёт и в текстовом, и в JSON-виде.

-12

Создаем MQTT-брокер

В каждом правиле указываем созданный MQTT-брокер.

Там создаём MQTT-брокер:

  • host: mqtt.cloud.yandex.net
  • порт: 8883
  • протокол: SSL
  • логин: ID реестра
  • пароль: пароль реестра

ИД устройства
ИД устройства

И дальше настраиваем правила для устройства.

И прописываем топик: $devices/ИД_устройства/config

Команды для копирования:

{"on": true}

BRIGHTNESS {value}

RGB {value}

{"on": false}

Включить и отключить можно сделать одним правилом, передавая параметры иначе, здесь такой пример.

-14

Яркостью тоже управляем. Передаем значение через {value}.

-15

Цвет тоже можно менять голосом.

-16

И выключение.

-17

Далее создаем само устройство.

Выбираем устройства умного дома
Выбираем устройства умного дома
Настройки нашего устройства
Настройки нашего устройства

📲 Подключаем к Яндекс.Дому

  1. В приложении «Умный дом» Яндекс нажимаем ➕.
  2. Выбираем «Устройство умного дома».
  3. В поиске находим «Домовёнок Кузя».
  4. Входим в аккаунт и подтверждаем подключение.

После этого наше устройство появится в списке.

Настройки в приложении
Настройки в приложении

🎉 Ура! Всё работает

Теперь можно сказать:

  • «Алиса, включи доску» ✨
  • «Алиса, сделай яркость доски 50%» 🌙
  • «Алиса, включи красный свет доски» 🔴

ESP8266 получит команду, отреагирует, и доска засияет. Всё работает даже без белого IP, прямо из-за роутера.

И всё это — своими руками из ESP8266 и пары сервисов 🙌