Телеграм бот апгрейд в умном доме

Также можете послушать:

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

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

Понятно потом я такое логирование фактически отключаю и мне оно уже становится не нужно если все хорошо работает, но это такой основной способ использования.

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

Но когда мне хочется какую-то информацию получить о системе умного дома, то конечно можно просто зайти в приложение умного дома, это если удаленно не всегда получается, например у меня используется OpenHAB для удаленного доступа, для некоторых устройств, практически всех, тоже они у меня добавлены в Яндекс и там тоже я могу посмотреть информацию, но у меня по сути интеграции через OpenHAB сделана, но и Home Asistant конечно там удаленно не могу подключиться, поэтому через Telegram бот я тоже себе настроил так, что я могу запросить информацию, раньше у меня было так что я фактически там запрашиваю значение, а мне отдельными сообщениями присылается эта информация из системы умного дома, но я решил все-таки переделать более сгруппировано и сделал так, что за основу я примерно взял вид как в приложении Яндекса, то есть чтобы была возможность сделать там группировку по комнатам, чтобы была возможность сделать группировку по типам устройств, и там по типу датчиков и их значений, то есть конечно так гораздо удобнее будет.

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

То есть когда я подключаюсь к telegram одной командой я запускаю, у меня приходит общее меню где указаны разные комнаты, разные типы датчиков, небольшой список, и дальше при нажатии комнаты у меня выводится вся информация об этой комнате в виде такого же меню, и если это какой-то датчик или устройство позволяет провалиться в него, дополнительную информацию получить, то при нажатии этой кнопки приходит другое меню в котором там больше значений и дальше можно если это устройство или выключатель, то я могу при нажатии этих кнопок, включать или выключать эти устройства, например выключатель у меня там имеет три кнопки и есть еще одна общая кнопка которая позволяет в зависимости, что на самом деле там еще две кнопки, одна которая включает все клавиши на этом выключателе, там все реле, а вторая кнопка просто открывает этот тип устройств, например все выключатели, и тогда я вижу, просто у меня в одном меню приходит, все выключатели с текущим состоянием.

Также могу я просто например кухня, выключатель такой-то, и там три кнопки, спальня, включатель такой-то, три кнопки, то есть я могу фактически оперативно быстро сообразить какую нажимать, причем раньше у меня просто было так, что открывалось меню, я мог просто нажимать включать или выключать, но не было там обратной связи, сейчас я сделал так что у меня при открытии этого меню сразу показывается текущее состояние этих устройств, в принципе Telegram постоянно развивается и у него есть возможность еще и все эти присланные этим ботом меню редактировать, то есть можно будет например если значение устройства поменялось, просто нужно там отправить команду специальную на редактирование этого меню, и тогда в этом меню можно сразу статус устройства поменять на соответствующие.

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

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

В разных системах умного дома тоже есть такая возможность использовать телеграм, в Home Assistant это в основном используется для того чтобы отправлять сообщения, то есть там довольно просто подключить телеграм-бот к нему и такой сценарий написать, но обработка входящих сообщений, это конечно там гораздо сложнее, но если использовать меню, то это фактически уже программирование полноценное, и мне проще гораздо на тех языках на которых я делаю, например я пишу всё на bash, потому что там просто довольно несложно можно через API подключаться к серверу и взаимодействовать, нужные команды отправлять, ну там формат обмена в виде json, но большому счету его разобрать не так уж и сложно, но особенно если это какие-то команды, они обычно короткие, еще в специальном формате каком-нибудь своем, который удобен для обработки и туда отправлять, например там просто этот json можно собрать вручную, никаких особо сложных правил нет, но если использовать допустим Python, то в нем есть разные варианты библиотек для работы с телеграм, но там тоже в принципе можно все это сделать, и в меню разные форматы, но не очень удобно, потому что у телеграм есть достаточно много документации на сайте, но она не вся понятна и там постоянно тоже меняется и если использовать какой-то модуль, например в питоне, то там тоже есть вся документация она по сути там зеркалирована, но эти библиотеки они могут отставать, и иногда допустим в телеграм уже по-другому сделано, а в этой библиотеке, либо в документации, либо в самой библиотеке, еще по старому и это может и не работать, поэтому мне такой проблемы не надо.

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

Конечно есть идея все-таки сделать более универсальный, чтобы не приходилось там все время переписывать этот бот тоже отдельно, потому что все-таки у меня получается так, что все датчики, у меня, и устройства в первую очередь добавляю в свою локальную систему умного дома, потом я добавляю их также все в OpenHAB эти устройства, в основном это мне надо для того чтобы делать интеграцию с Яндексом, потому что там у меня сделаны специальные правила, которые устройства из openhab прокидывают в систему умного дома Яндекс, и я конечно во первых через OpenHAB могу удаленно подключаться, и там через приложение управлять, или включатеть, разные устройства или смотреть датчики, ну и также могу просто в приложение Яндекс зайти, тоже самое все могу сделать.

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

Ну и это же описание можно фактически использовать для того чтобы сделать представление в Telegram, который будет просто автоматически собирать по комнатам все устройства, будет считывать список комнат, это тоже делать в представлении, потом будет считывать список устройств, и перечень самих устройств, и также отображать в телеграм, то есть это конечно будет такое универсальное решение, которое мне не надо будет постоянно синхронизировать, оно будет само при обновлении в openhab, будет автоматом везде, во всех системах подтягивается, то есть это будет гораздо удобнее.

В других системах конечно вряд ли такое появится и в самом OpenHAB такой биндинг скорее всего не появится, никто его делать и поддерживать не будет, ну и в Home Assistant тоже такой интеграции нет, то есть полноценно чтобы там полностью все синхронно отображалась в Telegram.

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

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

You may also watch

You may also like

Article By Alex

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

Discuss about post