Home assistant telegram настройка
В настоящее время системы управления умным домом становятся все популярнее. Централизованный интерфейс, который управляет устройствами по всему дому, помогает экономить время и позволяет гораздо эффективнее контролировать ваше жилище. Реализацией своего видения подобных систем занимаются как именитые бренды: Apple, Amazon и Google, встраивая их в свою инфраструктуру, так и умельцы, собирающие подобные системы на базе платформы Arduino.
Наша же цель была следующей: создать систему, которая будет доступна на большом количестве устройств и не будет привязана к какому-либо месту. Отличный вариантом для реализации управления оказался бот для мессенджера Telegram. Telegram имеет приложения на всех основных платформах, а так же web-версию. Доступ к нему можно получить из любого места, нужно лишь иметь аккаунт.
Из модулей мы выбрали следующие:
• Управляемая RGB светодиодная лента
• Управляемая розетка
• Датчик температуры
• Датчик освещенности (он используется для автоматического включения освещения)
Что нам понадобится
1. Raspberry Pi 3
Маленький, но удаленький компьютер, не нуждающийся в представлении, его мощности нам с головой хватит для этих задач. Третья версия хороша наличием встроенного Wi-Fi модуля, так что нам не придется думать о стороннем адаптере.
2. Модули ESP8266
Их нам понадобится 4 штуки. Мы использовали ESP-12F, но вообще разницы нет: ESP-1 будет вполне достаточно. Так же готовые платы NodeMCU помогут сэкономить вам время и силы.
3. Светодиодная лента
Мы взяли управляемую RGB-ленту на контроллерах WS2812b, хотя, впрочем, тут подойдет любая лента, работающая на 5В и поддерживаемая платформой Arduino.
4. Датчики температуры и освещения
Мы использовали модуль BH1750 для определения освещенности в комнате и DS18B20 для температуры. Основными критериями были доступность, поддержка платформой Arduino и возможность работы с 3.3В логикой ESP8266.
5. Реле
Субмодуль MOD-1CH для Arduino может пропускать до 10А тока и управляется 5В, аналогов для 3.3В мы не нашли, так что для управления использовали транзистор в ключевом режиме.
6. Telegram-бот
Непосредственное управление всей системой будет осуществляться при помощи бота Telegram, запущенного на Raspberry: это позволит системе быть легкодоступной на любой платформе из любой точки мира. Создавать бота для Telegram довольно просто, благодаря развитой платформе и поддержке большого количества языков.
Таким образом вся наша система будет выглядеть примерно так:
Реализация
Первым делом протестируем модули.
Готовые печатные платы адаптируют расстояние между пинами, что заметно облегчает пайку, а также содержат в себе необходимые резисторы, соединяющие пины CH_PD и GPIO2 с Vcc.
К сожалению, модули ESP8266 питаются и работают на 3.3В, а не на 5, как Arduino. Преобразовать напряжение можно с помощью готового модуля-преобразователя, но можно и спаять схему на основе линейного стабилизатора AMS1117, как это сделали мы.
Следующий этап – программирование.
К счастью, платформа ESP8266 поддерживается Arduino IDE, что открывает нам множество возможностей. Для непосредственной загрузки прошивки на модуль мы будем использовать Arduino Nano, однако то же самое можно сделать и через обычный USB-UART преобразователь. Не следует забывать про разницу напряжений у Arduino и ESP.
Схема получилось такой:
Кнопка нужна для того, чтобы замкнуть пин GPIO1 на GND при подаче питания на модуль и, тем самым, перевести его в режим программирования.
Далее настраиваем Arduino IDE, чтобы она понимала ESP (подробная инструкция со всеми ссылками) и пробуем записать тестовый скетч на моргание светодиодом.
После удачного мигания мы приступили к пайке всех модулей. С датчиком температуры и освещения все довольно стандартно.
А вот лента и умная розетка вызвали некоторые трудности.
Простое подключение управляющего входа ленты к ESP результата не дало. Оно и не удивительно, ведь WS2812b требует на управляющий вход минимум 70% от входа VCC (5x0.7=3.5), и 3.3В платы явно недостаточно. Однако мы нашли костыль интересный способ запустить их без использования повышающего преобразователя. Если диоду требуется минимум 0.7xVcc для реакции на сигнал и мы не можем увеличить уровень этого сигнала, то надо уменьшить Vcc! Да, светодиоды будут гореть не так ярко, однако нам не надо запитывать таким образом всю ленту; хватит и одного диода. Передавая сигнал далее по цепочке, светодиод использует уже уровень Vcc для формирования сигнала, чего вполне хватает для «нормального» светодиода. Таким образом, подключив первый диод в ленте к питанию через диод, который «съедает» около 0.6В, мы получаем отлично работающую ленту, напрямую управляемую из нашего модуля ESP8266. А чуть более тусклый первый светодиод мы оставили для отладочных нужд: отображать состояние подключения к сети.
Нашу умную розетку мы хотели разместить полностью в корпусе от старой розетки с таймером. Туда должны были влезть: сам ESP-12F, блок питания для него и реле, управляющее розеткой. Однако, разместив там реле и блок питания, мы так и не смогли вместить там еще и модуль ESP. Поэтому пришлось приделать снизу еще маленькую коробочку.
Итог получился не таким элегантным как мы хотели изначально, зато это было цельное устройство, которое надо было просто воткнуть в розетку.
Для осуществления этого плана мы использовали два пакета:
- hostapd – позволяет использовать встроенный wi-fi модуль как точку доступа
- dnsmasq – объединяет в себе DHCP и DNS сервера.
Мы пытались добиться относительной независимости кода и устройств, поэтому все запросы выполнялись не на ip-адреса, а на имена из придуманной зоны .sh (light.sh, socket.sh и т.д.). Для этого мы для каждого модуля настроили статические ip-адреса и добавили на эти адреса DNS записи, соответствующие модулям. Благо dnsmasq очень легко конфигурируется (подробная инструкция по настройке этой системы).
И, наконец, непосредственно бот.
Мы писали бота на Python, используя библиотеку python-telegram-bot. Нами был разработан кнопочный интерфейс, что упрощает управление, превращая устройство в своеобразный пульт ДУ:
Исходный бота код можно изучить здесь.
И, чтобы им не пользовался кто попало, мы поставили защиту паролем.
Вывод
Конечно, мы не создали какой-либо революционной системы, существует огромное количество более целостных и продуманных реализаций. Модули температуры и освещения можно было бы сделать автономными, благо у ESP8266 есть специальный режим ожидания, в котором она потребляет очень мало энергии. Можно было бы добавить легкую пользовательскую расширяемость, не требующую изменения исходного кода и перенастройки сетевых подключений и еще много чего. Однако цель всего этого проекта была совсем не в этом. В первую очередь мы хотели создать простую систему, которая могла вполне быть создана кем угодно у себя в доме и не требовала бы серьезной подготовки и затрат. А самое главное: мы хотели научиться многим вещам, пока мы делали этот проект. И если практичность и функциональность нашего решения можно еще долго дорабатывать, то знания, полученные нами в процессе планирования и воплощения в жизнь этой системы, определенно стоили потраченных усилий.
Подготовка
Добавим включения в configuration.yaml отдельными внешними файлами
Найдите бота @userinfobot и нажмите /start, в ответ вы получите собственный telegram ID, скопируйте его. Повторите эту процедуру и с другими членами семьи, если хотите чтобы и они могли получать информацию от домашнего телеграмм бота. Заполните информацию в файле /config/includes/telegram.yaml полученными ранее данными по образцу
Создаем оповещения и даем им названия, для каждого члена семьи в файле /config/includes/notify.yaml
Добавление автоматизаций для работы с Telegram
Создадим первую автоматизацию которая будет действовать при старте home assistant (или нажатии /start)
В окне телеграмм мы увидим что-то подобное
Теперь добавим еще одно правило, которое будет действовать при нажатии кнопки в окне Telegram например кнопки «Weather»
Аналогичные правила и действия можно «повесить» и на другие кнопки «панели управления», а также сделать древовидную структуру действий и команд. После всех настроек, поделитесь с членами вашей семьи ссылкой на домашнего бота. И пользуйтесь с удовольствием.
Краткое описание:
Система домашней автоматизации Home Assistant.
Описание:
Home Assistant-это open-source платформа для автоматизации, работающая на Python 3. Позволяет отслеживать и контролировать все устройства в доме и автоматизировать действия. Идеально может работать на одноплатном компьютере Raspberry PI. Так же может работать на платформах Windows, Linux. Интерфейс построен через браузер работа возможно на любом устройстве Android, iOS.
Личный опыт:
Свою домашнюю систему я строю на данной платформе. Уже больше полугода система находится в штатном режиме и все функционирует.
Не получается настроить присутствие устройств (членов семьи). Использую компонент device_tracker: Keenetic NDMS2 Routers (У меня Zyxel keenetic lite с прошивкой NDMS 2). Ошибка при загрузке в логе (home-assistant.log):
Denn1982, Приложи файл конфигурации посмотрю что делаешь ни так. У тебя тут жалуется еще на плагин yahoo_finance. В своем случае я настроил с помощью SNMP модуля. HA SNMP
Да не знаю, что тут можно делать не так.
Все как в мануале:
- platform: keenetic_ndms2
host: !secret router_ip
username: !secret router_username
password: !secret router_password
хост в секретах: 192.168.1.1
Еще тут одна проблема нарисовалась, после некоторого времени невозможно подключиться по ssh к апельсинке, причем HASS работает, но например некоторые выключатели не работают.
device_tracker:- platform: keenetic_ndms2
host: !secret router_ip
username: !secret router_username
password: !secret router_password
interval_seconds: 10
consider_home: 180
track_new_devices: yes
Так же смотри после запуска в папке появится known_devices.yaml в нем тоже нужно настроить устройства которые будешь отслеживать. Вот мой пример одного из устройств.
bhughes_nexus6:
name: Phone
mac: AC:CF:85:D4:2B:93
icon: mdi:ninja
track: yes
hide_if_away: no В том то и дело, что файл не появляется автоматически, я его пробовал в ручную создавать, но тоже не прокатило. Еще интересно, что когда вставляю эти строчки в configuration.yaml, судя по логу еще и розетки не может найти, хотя в HASS они работают.
А если удалить секцию device_tracker то лог чистый.
UPD: Не, наврал - с розетками все время такая фигня.
Мониторинг и управление различными домашними устройствами в рамках концепции "умного дома" - одна из "модных" нынче тем. Я опишу свой простейший прототип "умного дома".
В настоящее время в моем "умном доме" реализованы такие функции:
- мониторинг температуры;
- получение снимков с веб-камеры.
В качестве центра управления "умным домом" можно использовать нетбук или ноутбук под управление ОС Windows.
Общение с "умным домом" производится через Telegram бота (требуется наличие интернет-подключения, например, через 3G-модем).
Измерение температуры
Для измерения температуры я использую цифровой датчик DS18S20.
Интерфейс этого датчика - однопроводная шина 1-Wire:
VCC - + 5 В
GND - земля
DQ - данные
Датчик DS1820 позволяет измерять температуру в пределах - 50. + 125 °C.
Существуют три разновидности таких датчиков:
Тип | Описание |
DS1820 | устаревший вариант в удлиненном корпусе, маркируется DS1820; напряжение питания 4,3 - 5,5 В |
DS18S20 | программно совместим с DS1820, маркируется DS1820, но корпус короче (стандартный TO-92, высота около 5 мм), чем у DS1820; напряжение питания 3 - 5,5 В |
DS18B20 | маркируется DS18B20, корпус TO-92; максимальная разрядность значения температуры расширена с 9 до 12 бит; напряжение питания 3 - 5,5 В |
Я подключаю датчик к компьютеру через переходник USB-UART (на микросхеме CP2101):
Схема подключения:
Для снятия показаний датчика я использую программу digitemp.exe (версия 1.7) от Brian C. Lane (сайт проекта).
Сначала необходимо инициализация посредством команды:
где 2 - номер COM-порта, к которому подключен USB-UART переходник;
digitemp.cfg - имя создаваемого файла конфигурации
Номер COM-порта можно посмотреть в "Диспетчере устройств":
При этом производится поиск доступных устройств на шине 1-Wire и отображаются их идентификаторы:
Для снятия показаний датчика температуры я использую команду:
а результатом ее работы будет текущая температура в градусах Цельсия:
Работа с веб-камерой
Для наблюдения за обстановкой в доме можно использовать веб-камеру (встроенную в нетбук/ноутбук или внешнюю, подключаемую через USB).
Для получения снимков с веб-камеры я использую программу RobotEyez.exe от Ted Burke (проект доступен на GitHub).
Для вывода списка камер используется команда:
результатом которой служит список доступных веб-камер:
Для сохранения снимка в файл применяется команда
1 - задержка;
640 - ширина кадра в пикселях;
480 - высота кадра в пикселях;
1 - номер устройства (веб-камеры)
При выполнении этой команды кадр с выбранной веб-камеры сохраняется в файле frame.bmp:
Telegram бот
Я написал бота на языке программирования Go (golang).
Предварительно необходимо скачать и установить:
Перед компиляцией проекта необходимо установить дополнительные Go-библиотеки, выполнив команды:
Для компиляции бота необходимо запустить командный файл build.cmd или выполнить команду
При успешном завершении компиляции будет создан файл home_bot.exe с разрядностью, соответсвующей разрядности установленного компилятора.
Перед запуском бота необходимо запустить команду
(x - номер COM-порта, к которому подключен преобразователь UART-COM с датчиком температуры)
для создания файла конфигурации digitemp.cfg следующего вида:
Для запуска бота следует использовать команду:
где XXX:YYY - токен бота;
ZZZ - идентификатор пользователя, которому разрешено общение с ботом;
W - номер используемой камеры.
Для получения токена необходимо обратиться к боту BotFather с командой /newbot, затем задать имя бота (name), а затем имя пользователя для бота (username), заканчивающееся на bot. В результате получаем токен для созданного бота:
/start - начало общения с ботом:
/help - список команд бота:
/about - информация о боте:
/temp - получение сведений от температуре:
Для получения значения температуры бот запускает командный файл temp.cmd:
/cam - получение снимка с камеры:
Для получения снимка бот запускает командный файл spy.cmd:
Читайте также: