Алиса для дома своими руками

Содержание
  1. Как сделать умный дом своими руками на Arduino и Яндекс.Алиса — пошаговая инструкция
  2. Как сделать умный дом своими руками на Arduino и Яндекс.Алиса — пошаговая инструкция
  3. Как работает такой умный дом?
  4. Какие устройства можно интегрировать в умный дом?
  5. Аппаратная и программная часть
  6. Получение веб-хуков
  7. Настройка навыка «Домовёнок Кузя»
  8. Настройка Алисы
  9. Алиса, Ардуино и Blynk — делаем собственное устройство
  10. Содержание
  11. Что такое blynk?
  12. Собираем «умный» выключатель
  13. Итак, blynk.
  14. Подготовка Arduino IDE и прошивка
  15. Способы управления через Blynk
  16. С помощью вебхуков
  17. С помощью мобильного приложения blynk
  18. Подключаемся методом webhooks к Умному дому Яндекса
  19. Приложение «Яндекс»
  20. Важный нюанс по управлению через 0 и 1
  21. Через Интернет? А как же безопасность?
  22. При создании кнопки я заметил(а), что есть платные функции в виде покупки энергии для элементов управления
  23. Можно только по Wi-Fi?
  24. Почему не использовать готовые решения?
  25. Что еще можно сделать по этой технологии?
  26. А считывать состояния Blynk умеет?
  27. Насколько это надежно? (Китай долго не проработает. )

Как сделать умный дом своими руками на Arduino и Яндекс.Алиса — пошаговая инструкция

Как сделать умный дом своими руками на Arduino и Яндекс.Алиса — пошаговая инструкция

Уже больше года Яндекс развивает систему управления умным домом через Алису. Благодаря ей вы сможете включать свет, переключать каналы телевизора, заваривать кофе, изменять цвет подсветки, будить умные пылесосы и контролировать температуру в помещении.

Чтобы создать такую продвинутую экосистему умных устройств, совсем не обязательно штурмовать магазины электроники. Яндекс предоставляет API для интеграции ваших собственных решений через платформу навыков.

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

Как работает такой умный дом?

Чтобы создать умный дом своими руками, потребуется навык Домовёнок Кузя. Через него можно не только контролировать умный дом, но и интегрировать виртуальные устройства напрямую в Яндекс.Алису. Это значит, что вам не придётся постоянно открывать навык, чтобы просто выключить лампочку. С микроконтроллером навык будет связываться через веб-хуки.

Для веб-хуков отлично подходит платформа Blynk — панель управления устройствами на Arduino и Raspberry Pi. Там вы сможете без труда создать графический интерфейс, через который можно будет управлять устройством по Wi-Fi (а ещё по Ethernet, USB, GSM и Bluetooth).

Какие устройства можно интегрировать в умный дом?

Через навык можно взаимодействовать с обширным количеством устройств: лампочки, розетки, шторы, замки, роботы-пылесосы, термостаты, очистители воздуха, кондиционеры и чайники. Кроме этого, можно переключать каналы на телевизоре (через универсальный пульт) и менять цвета RGB-ламп.

Все устройства имеют базовую пару функций: включение и выключение (открытие и закрытие для штор и замков). Некоторые из устройств могут работать с диапазоном значений (яркость лампы, температура поддержки тепла для чайника).

Аппаратная и программная часть

Для того, чтобы собрать умный дом своими руками, мы будет использовать Wi-Fi модуль ESP8266. Процесс разработки на нём почти не отличается от традиционной разработки на Arduino.

Для начала нужно скачать приложение Blynk из GooglePlay или AppStore и зарегистрироваться в нём. После этого нужно создать новый проект и выбрать соответствующий микроконтроллер. Перед вами появится пустая панель, на которой можно размещать элементы управления. Это могут быть кнопки, иконки, слайдеры, индикаторы, выпадающие списки и многое другое.

После создания проекта на вашу почту придёт токен доступа. Его нужно будет указать в скетче и веб-хуках.

К элементам управления можно подвязать физический пин микроконтроллера или же виртуальный порт. При взаимодействии с каким-либо элементом, его новое значение будет сразу отправляться на микроконтроллер.

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

На этом сайте можно найти много примеров кода для Blynk под разные платформы микроконтроллеров. Ниже приведён скетч, который будет управлять пином. Тот, в свою очередь, будет управлять реле, к которому будет подключена лампа:

Для этого скетча в панели управления Blynk нужно добавить элемент «Button». В его настройках OUTPUT выставить V0, а режим работы переключить в Switch.

Читайте также:  Автомобильные акустические колонки своими руками

Теперь к указанному порту можно подключать реле. Если всё правильно, то при нажатии на кнопку в панели управления реле будет открываться и закрываться.

Голосовое управление светом не мешает управлению им аппаратно. К микроконтроллеру можно подключить физическую кнопку или выключатель, которые тоже будут включать и выключать свет. Если это необходимо, то изменять состояние виртуального порта можно методом Blynk.virtualWrite(port, value) . Тогда изменения будут отображаться и на панели управления.

Примечание При работе с механическими кнопками и выключателями не забывайте про дребезг контактов.

Всё работает? Тогда можете переходить к следующему этапу.

Получение веб-хуков

От Blynk вам потребуется не панель управления, а контроль виртуальных портов через GET-запросы. Вот так выглядит веб-хук на изменение состояния порта:

Чтобы включить виртуальный порт, нужно указать как 1, чтобы выключить — как 0.

Помимо этого, значение с порта можно получить таким запросом:

Настройка навыка «Домовёнок Кузя»

Перейдите на сайт навыка и авторизуйтесь там через Яндекс. Далее жмите на Добавить правило HTTP (GET). Перед вами откроется форма настройки правила.

Активационная фраза — название запроса, которое будет отображаться в списке (например «свет на кухне, включение»). Если вы не планируете контролировать умный дом конкретно изнутри навыка, то больше фраза нигде не понадобится. Поле Ответ Кузи тоже оставляйте пустым. В поле URL вставляете соответствующий веб-хук на включение света (виртуального порта). Остальные параметры можно не изменять. После этого нужно сделать идентичное правило на выключение света.

Пример настройки правила на включение света

Дальше нужно перейти во вкладку виртуальных устройств и добавить устройство «Лампа». Тут нужно дать название устройству, по которому его будет идентифицировать Алиса. Например: свет, бра, подсветка, лампа или торшер. Место расположения — комната, в которой будет установлено устройство. Это нужно на тот случай, если в нескольких комнатах будут одинаковые по названию элементы. К тому же, одной голосовой командой можно включать и выключать все устройства в определённой комнате.

В Правило на включение/выключение из списка выбираете соответствующие запросы. В лампе имеется возможность управления яркостью. Для этого нужно создать ещё одно правило, но значение параметра value установить как . Тогда в запрос будет подставляться число от 0 до 100, которое будет обозначать требуемую яркость. Вам лишь остаётся обработать это значение в скетче.

Пример настройки виртуального устройства

Примечание Если вы планируете изменять яркость, то параметр value в веб-хуке на включение нужно изменить с 1 на 100.

Настройка Алисы

В приложении Яндекс перейдите в раздел Устройства→Управление устройствами. Нажмите на кнопку «Добавить»→«Другое устройство». В открывшемся списке найдите навык «Домовёнок Кузя».

Авторизуйтесь в нём. Возможно, нужно будет ввести код объединения устройств, указанный в панели управления умным домом. Потом нажмите на Обновить список устройств.

На этом этом этапе вы уже создали умный дом своими руками. Теперь система полностью готова к голосовому контролю. К ней имеет доступ лишь ваш аккаунт. В настройках виртуальных устройств можно расширить доступ на другие аккаунты.

Источник

Алиса, Ардуино и Blynk — делаем собственное устройство

Содержание

На данной странице размещена инструкция по простому подключению ардуиноподобных устройств, имеющих доступ к сети. Обязательно пригодится тем, кто:

  • любит «дешево и сердито»;
  • не любит готовые решения, и предпочитает мозговой штурм и пайку;
  • еще думает над своей концепцией УД (можно использовать, как пример);
  • кто «в теме», но пока имеет сложности с подключением собственных наработок к Умному дому Яндекса.

Что такое blynk?

Это облачное решение, созданное украинскими разработчиками для удалённого управления различными микроконтроллерами, с помощью мобильных устройств.

  • Обширный список поддерживаемых устройств;
  • Множество вариантов управления;
  • Широкий набор инструментов;
  • Огромный плюс — Example Code Builder, позволяющий сгенерировать нужный код с минимальными правками и знаниями в программировании.

Чтобы понять принцип работы с Blynk, а заодно рассмотреть принцип подключения Arduino к УДЯ, соберём пример управляемого реле, имитирующее. Яндекс.Розетку.

Собираем «умный» выключатель

Соединяем по схеме:

Пин NodeMcu Пин реле
VCC VCC
GND GND
D4 IN
Читайте также:  Как сделать отопление частного дома своими руками

Итак, blynk.

  1. Скачиваем официальное приложение blynk из GooglePlay или AppStore.
  2. Регистрируемся в приложении (рис. 1)
  3. Создаём новый проект (рис. 2)
  4. Важно правильно выбрать микроконтроллер (рис. 3)
  5. Появится пустая страница для элементов управления (рис. 4), а на адрес электронной почты придёт token от нашего проекта в blynk, который мы будем использовать для управления через webhook.

2. Создание проекта

3. Выбор устройства

4. Окно для элементов управления

Подготовка Arduino IDE и прошивка

  1. Загружаем и устанавливаем Arduino IDE.
  2. Скачиваем библиотеки Blynk для работы с сервисом.
  3. Распаковываем скачанное в папку с библиотеками Arduino IDE (обычно это C:\Users\ \Documents\Arduino\).
  4. Переходим к утилите Blynk Example Browser, выбираем/указываем:
    • микроконтроллер,
    • способ подключения,
    • token
    • пример скетча (в данном случае Virtual Pin Read).
  5. Копируем полученный код в Arduino IDE.
  6. В примере вводим фактическое название нашей WiFi-сети и пароль.

Указываем название сети и пароль

В примере также присутствует функция вида:

  • BLYNK_WRITE(V1) указывает, что функция выполнится при изменении виртуального пина 1,
  • int pinValue = param.asInt(); объявляет переменную pinValue и загружает в неё текущее состояние виртуального пина (0 — пин выключен, 1 — пин включен).

Всего можно использовать 256 виртуальных пинов (V0-V255) — это огромный запас на все случаи жизни. Например, виртуальный пин 1 принимает значение 1 — подаём питание на физический пин NodeMcu и включаем этим реле, или виртуальный пин 2 принимает значение от 0 до 255 — изменяем ШИМ-сигнал, регулируем яркость (либо цвета RGB) диодной подсветки в 255 градациях яркости.

А теперь заставим нашу функцию включать физический пин D4 NodeMcu (в функции будем использовать событие виртуального пина 0, просто для удобства):

Чтобы управлять этим выводом, в основной функции void setup() обязательно установим пин D4 как выход: pinMode(D4, OUTPUT);

В итоге получаем такой код для прошивки:

Заливаем прошивку в NodeMcu.

Наш выключатель готов к работе!

Также данную схему можно использовать и для включения ПК (имитации нажатия кнопки включения). Для этого параллельно пинам кнопки Power (на материнской плате пины POWER SW) нужно подключить линии L и L1 (указанные на схеме . НЕ 220В. ) и немного изменить скрипт, чтобы при изменении виртуального пина реле включалось на короткий промежуток времени, имитируя короткое нажатие.

В скрипте, в блоке:

мы добавили задержку delay (100); в 100 мс и выключили после нее физический пин D4 — digitalWrite(D4, LOW);

Способы управления через Blynk

На данный момент есть два варианта управлять пином:

С помощью вебхуков

  • https://blynk-cloud.com/ /update/V0?value=1 — для замыкания реле
  • https://blynk-cloud.com/ /update/V0?value=0 — для размыкания реле

С помощью мобильного приложения blynk

  1. Вернёмся к созданному ранее проекту и добавим простую кнопку с помощью иконки «+» в верхнем правом углу приложения.
  2. Выберем в открывшемся меню «Button» и разместим, где удобней.
  3. Зададим виртуальный пин, управлять которым мы будем этой кнопкой. Для этого просто тапнем по созданной кнопке.
  4. По желанию называем кнопки, задаём цвет и текст, для включенного и выключенного состояний.
  5. Тип «Push<>Switch» (кнопка или переключатель). Push — нажали и отпустили, пин выключился. Switch — нажали и отпустили, пин запомнил состояние.

1. Добавляем кнопку

4. Пин V0 включен

Подключаемся методом webhooks к Умному дому Яндекса

Будем использовать хорошо зарекомендовавший себя навык УД «Домовенок Кузя». Для этого:

  1. Переходим на сайт навыка и авторизуемся там с помощью учетной записи Яндекс.
  2. Выбираем кнопку «Добавить правило GET».
  3. Заполняем «по вкусу». Можно похулиганить и дать устройству имя «Розетка Яндекс».
  4. Не забываем в поле «URL управления устройством, доступный из интернета» вставить ссылку на наш вебхук.
  5. Создаём ВТОРОЕ правило GET — одно на включение устройства, второе — на его выключение.
  6. Выбираем кнопку «Виртуальные устройства умного дома» и создаем новое устройство (у меня лучше всего работают «лампы»).
  7. Указываем ранее созданные «Правило на включение» и «Правило на выключение».
  8. Задаем имя устройства и комнату, в которой оно находится.

    Правило на включение

    Правило на выключение

    Приложение «Яндекс»

    В приложении «Яндекс» (раздел «Устройства») находим навык «Домовенок Кузя». При первом запуске навык попросит авторизоваться. После авторизации нажимаем единственную кнопку «Обновить список устройств». Готово! После загрузки мы увидим наше устройство в списке.

    Выбираем навык «Домовенок Кузя»

    Осталось сказать «Алиса, включи Розетку Яндекс» и услышать радостное пощелкивание реле.

    Важный нюанс по управлению через 0 и 1

    Модули управления нагрузкой бывают двух видов. Привычнее воспринимается, когда реле включается при логической «1» на входе, но часто бывает и наоборот.

    Причин управления через ноль несколько: 1. Меньше вероятность ситуаций с кратковременными переключениями выходов при старте и инициализации процессора (при pullup-подтяжках они вообще исключены). 2. Выше помехозащищённость (так как диапазон для «1» в общем случае пошире, чем у «0»), выше стабильность для ситуаций с устройствами с разными логическими амплитудами. 4. Подтяжка — это всегда дополнительные детали (внутренние или в обвесе), а «0» — это всегда просто земля. 3. И вроде можно даже как-то чуть-чуть сэкономить энергопотребление, но это не точно(с).

    Если вам попался модуль с управлением по активному нолю, то при установке пина в «1», реле будет обесточено, а когда «0» — включено. Самое простое в этой ситуации — инвертировать выход относительно входа. Есть два варианта:

    • В коде строку digitalWrite(D4, pinValue); поменять на digitalWrite(D4, !pinValue);
    • В приложении Blynk поменять местами «0» и «1» в настройках кнопки.

    Есть и третий вариант: перекинуть L1 с контакта NO («нормально разъединён») на контакт NC («нормально замкнут»). В этом варианте (впрочем, как и остальных) желательно исходить из того режима, в котором реле большее количество времени будет обесточено.

    1. Кратковременно включающийся вентилятор (свет). Лучше подключить L1 к «NO».
    2. ненадолго отключающийся компрессор в аквариуме, нагреватель, итд. В этом случае лучше подключить нагрузку на «NC», тогда напряжение будет поступать на нагрузку при обесточенном реле.

    После выбора контактов реле при необходимости корректируем управляющий уровень в коде.

    Через Интернет? А как же безопасность?

    Во-первых, для каждого устройства выдается токен, который знаете только Вы.

    Во-вторых, сервер blynk можно поднять локально. Об этом есть статья на официальном сайте (в том числе и для популярных одноплатных компьютеров).

    При создании кнопки я заметил(а), что есть платные функции в виде покупки энергии для элементов управления

    Всё верно. Разработчики хотят иметь прибыль от своего полезного и качественного продукта.

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

    Можно только по Wi-Fi?

    Нет. Подключение может любым: Wi-Fi, Ethernet, и даже COM-порт через USB компьютера. Всё зависит от целей, задач и вида микроконтроллера.

    Почему не использовать готовые решения?

    10. Именно такая цифра — делитель стоимости подобных «готовых» устройств (в некоторых случаях меньше или больше, но какой смысл переплачивать, если с равными усилиями получается дешевле и веселее?)

    Что еще можно сделать по этой технологии?

    • Управляемую подсветку (меняющую цвет, яркость, режимы работы);
    • Сбор информации с самых разных датчиков (температура, влажность, давление);
    • Умные выключатели и розетки;
    • ИК-пульт (наподобие Яндекс.Пульта);
    • Управление компьютером через Алису;
    • Голосовое управление детскими игрушками;
    • Сигнализацию с постановкой на охрану голосом (и проверкой статуса).

    А считывать состояния Blynk умеет?

    Да, ссылка на запрос состояния выглядит так:

    Так же можно считывать и состояния датчиков, но это тема уже совсем другой статьи 🙂

    Насколько это надежно? (Китай долго не проработает. )

    Ардуино (в том числе китайские версии) прошли в массах не одну проверку температурой, влажностью и временем. Лично на моем опыте собранные устройства функционируют по сей день в течение 3 лет. Что называется, слепил — и забыл.

    Кроме того, модульные сборки имеют преимущество перед «коробочными» в том, что любой модуль, датчик, реле и т.п. можно заменить (при этом недорого!) без вреда для всей схемы. Их намного легче размещать в ограниченном пространстве (в кастомных корпусах, или вообще без корпуса).

    А главный плюс — любое устройство в любой момент можно свободно развивать по функционалу в зависимости от приходящих в голову идей — бесценен!

    Источник

    Читайте также:  Декор для шалаша своими руками
Оцените статью