28

Телеграмм бот для Home Assistant'a

Друзья, в какой-то момент посетила идея сделать универсального телеграмм бота для Home Assist, чтобы не прописывать и не хардкодить все внутри .yaml конфига, и чтобы все было написано на python. Поэтому хочу показать первую (вроде рабочую :) ) версию своего бота.

Чо бот использует:
1) Python версии 3.10 и выше (это важно, поэтому если будете устанавливать на Debian, будьте внимательны, обычно там 3.9)
2) Асинхронную библиотеку aiogram версии 3.0.7b
3) PostgreSQL + SQLalcemy + asyncpg драйвер (т.е. все запросы в БД так же идут асинхронно)
4) Homeassistant-api (В первой версии пока на синхронных запросах, в планах, конечно это переделать, знаю, что там не много нужно переделывать, и, изначально все было в асинхроне, но пока я отлавливал один баг, переделал все на синхронное взаимодействие, а обратно возвращать уже не было времени).

Что бот умеет:
1) В этой версии умеет работать не со всеми сущностями, а только 'binary_sensor', 'sensor', 'button', 'light', 'switch'.
2) Для вывода в сообщениях и на кнопках использует "friendly name" сущностей, которые настраиваются на самом сервере Home Assista.
3) По команде /edit входит в режим создания и редактирования комнат, где из имеющихся сущностей можно собрать некий дашборд. (Команда доступна только тем, кто вписан в .env файл как админ, user этой командой пользоваться не может). В планах добавить БД, чтобы можно было управлять пользователями прямо из бота.
4) По команде /start выводит созданные комнаты. В тексте сообщения выводит информацию с сенсоров, а инлайн-кнопки управляют переключающимися сущностями. Пока что, кнопки умеют только нажиматься, а выключатели переключаться, т.е. диммеры регулировать не удастся.

Ссылка на репозиторий:
ChronoDi/HomeAssistBot (github.com)
Вся инструкция по установке там имеется. Если будут какие-то вопросы, пишите, постараюсь оперативно ответить.

Инструкция как получить токен для HA:
Как получить токен для API Home Assistant (bessarabov.ru)

Не забудьте включить API своего HA, прописав в configuration.yaml
api:
Home Assistant API - Home Assistant (home-assistant.io)


Как это все выглядит:
1) При старте бота он показывает созданные комнаты (если до этого они не создавались, он предлагает пройти в режим создания комнат)

Телеграмм бот для Home Assistant'a Программирование, Linux, Telegram бот, Home Assistant, Текст, Длиннопост

2) В режиме редактирования, по команде /edit он предлагает добавить, удалить или редактировать существующие комнаты.

Телеграмм бот для Home Assistant'a Программирование, Linux, Telegram бот, Home Assistant, Текст, Длиннопост
Телеграмм бот для Home Assistant'a Программирование, Linux, Telegram бот, Home Assistant, Текст, Длиннопост

3) В режиме редактирования комнат выводит уже добавленные сущности, и предлагает добавить сущности из доступных категорий:

Телеграмм бот для Home Assistant'a Программирование, Linux, Telegram бот, Home Assistant, Текст, Длиннопост
Телеграмм бот для Home Assistant'a Программирование, Linux, Telegram бот, Home Assistant, Текст, Длиннопост

4) При выборе готовой комнаты, после команды /start, комната отображается следующим образом (хочу напомнить, что все имена берутся с HA из поля "friendly name" сущности, это настраивается на самом HA):

Телеграмм бот для Home Assistant'a Программирование, Linux, Telegram бот, Home Assistant, Текст, Длиннопост

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

P.S. Знаю, что было бы хорошо все убрать в докер, так как многие сидят на haOS, это есть в планах, но руки пока не дошли.

Home Assistant

33 поста1K подписчиков

Правила сообщества

Сообщество не имеет каких-либо строгих правил для размещения публикаций за исключением офтопа (не по теме сообщества) и публикаций нарушающих правила сайта Pikabu - https://pikabu.ru/information/rules.