Skip to content

Repository files navigation

Time Messenger для Home Assistant

HACS Custom Лицензия MIT

Пришло личное сообщение в Time Messenger. Через пару секунд на кухне моргнула лампа, а на телефон прилетел пуш. Эта интеграция как раз для такого сценария: она превращает ваши личные сообщения Time Messenger в обычные события Home Assistant, из которых можно собрать любую автоматизацию.

Работает с Home Assistant 2026.8.1 и новее.

💬 Что делает интеграция

Вы подключаете свою личную учётную запись Time Messenger, и как только кому-то приходит в голову написать вам напрямую, Home Assistant узнаёт об этом сразу: сообщение приходит по WebSocket, без периодического опроса. Дальше вы решаете, что с этим делать: включить свет, сказать вслух через колонку, отправить уведомление на телефон или что угодно ещё, на что способны ваши автоматизации.

✨ Возможности

  • Получает новые личные сообщения от других пользователей в реальном времени.
  • Готовая сущность события «Личное сообщение», которую можно выбрать прямо в визуальном редакторе автоматизаций, без ручного YAML.
  • Текст сообщения по умолчанию скрыт: это личная переписка, а не то, что Home Assistant должен видеть без вашего согласия.
  • Одно и то же сообщение не прилетит дважды, даже после переподключения или перезапуска Home Assistant.

Групповые чаты и сообщения, полученные во время отключения Home Assistant, пока не поддерживаются. Подробности в разделе «Чего пока нет» ниже.

⚙️ Установка

  1. Откройте Time Messenger в HACS.
  2. Установите интеграцию и перезапустите Home Assistant.
  3. Перейдите в Settings > Devices & services > Add integration.
  4. Найдите Time Messenger и следуйте подсказкам на экране.

Если ссылка не открывается, добавьте dancingpizza/time-messenger-home-assistant в HACS как пользовательский репозиторий категории Integration.

Без HACS тоже можно: скопируйте каталог custom_components/time_messenger в custom_components вашей конфигурации Home Assistant и перезапустите его.

🔌 Подключение аккаунта

Укажите адрес сервера Time, например https://time.example.org. Затем выберите способ входа. Какие именно доступны, зависит от того, что включила ваша организация:

  • OAuth: если организация его настроила, это самый удобный вариант.
  • Персональный токен доступа: создаётся в личных настройках Time и вставляется целиком.
  • Логин и пароль: обычный вход, при необходимости с кодом MFA.

Если не уверены, какой способ выбрать, спросите администратора Time. Не все способы включены на каждом сервере.

После подключения появятся устройство учётной записи Time Messenger и сущность события «Личное сообщение». Не перепутайте её с сущностью Update, которая принадлежит HACS и сообщает только о новых версиях самой интеграции.

Приватность. Текст сообщений по умолчанию скрыт. Включить его можно в Settings > Devices & services > Time Messenger > Configure. Но тогда текст станет виден автоматизациям и всем, кто слушает события Home Assistant, так что включайте осознанно.

🤖 Автоматизации

Через интерфейс это выглядит так:

  1. Откройте Settings > Automations & scenes и создайте автоматизацию.
  2. В разделе «Когда» нажмите «Добавить триггер».
  3. Найдите триггер «Событие: Получено событие».
  4. Выберите сущность Time Messenger «Личное сообщение».
  5. Выберите тип «Получено личное сообщение».
  6. Добавьте нужное действие: уведомление, свет, озвучивание или любое другое действие Home Assistant.

Если больше по душе YAML, вот тот же рецепт целиком. Здесь event.time_messenger_direct_message — стандартный ID первой учётной записи; если вы переименовали сущность или подключили несколько аккаунтов, возьмите свой ID из интерфейса.

alias: Time Messenger, новое личное сообщение
triggers:
  - trigger: event.received
    target:
      entity_id: event.time_messenger_direct_message
    options:
      event_type:
        - direct_message
actions:
  - action: persistent_notification.create
    data:
      title: Time Messenger
      message: >-
        {{ trigger.to_state.attributes.message_text
           or ('Новое сообщение от '
               ~ (trigger.to_state.attributes.sender_username
                  | default(trigger.to_state.attributes.sender_user_id, true))) }}
mode: queued

Данные сообщения лежат в trigger.to_state.attributes. Там есть идентификаторы отправителя, канала и сообщения, время создания, сведения о вложениях, а после включения настройки приватности и сам message_text.

🗣️ Пример: Алиса озвучивает сообщение

Если дома стоит колонка с Алисой, можно научить её сразу произносить входящие сообщения. Для этого нужна отдельная интеграция, которая умеет управлять станциями Яндекса из Home Assistant. Самая популярная называется YandexStation и тоже ставится через HACS.

После её установки у каждой колонки появится своя сущность вида media_player.yandex_station_kitchen (точное имя смотрите в Settings > Devices & services или в Developer tools > States). Подставьте своё в рецепт ниже.

alias: Алиса озвучивает новое сообщение
triggers:
  - trigger: event.received
    target:
      entity_id: event.time_messenger_direct_message
    options:
      event_type:
        - direct_message
actions:
  - variables:
      sender: >-
        {{ (trigger.to_state.attributes.sender_username
            | default(trigger.to_state.attributes.sender_user_id, true))
           | replace('@', '') }}
      text: >-
        {{ trigger.to_state.attributes.message_text | default('', true) }}
  - action: media_player.play_media
    target:
      entity_id: media_player.yandex_station_kitchen
    data:
      media_content_type: text
      media_content_id: >-
        {{ ('Сообщение от ' ~ sender ~ ': ' ~ text) if text
           else ('Пришло новое сообщение от ' ~ sender) }}
mode: queued

Что здесь происходит:

  • Триггер тот же, что и в первом примере: срабатывает на каждое новое личное сообщение.
  • Шаг variables заранее считает имя отправителя и текст сообщения, чтобы не повторять одно и то же дважды в действии ниже.
  • Действие media_player.play_media с media_content_type: text принадлежит YandexStation, а не Time Messenger. Оно просит колонку сказать вслух то, что записано в media_content_id.
  • Текст сообщения по умолчанию скрыт (см. раздел про приватность выше), поэтому пока вы его не включили, Алиса назовёт только отправителя, без содержимого.
  • Имя отправителя в Time Messenger приходит с собачкой впереди, например @marina. В обычном тексте это не мешает, а вот при озвучке Алиса честно произносит символ @ вслух: получится «собака марина». Фильтр replace('@', '') вырезает его перед тем, как имя попадёт в media_content_id.

Дальше рецепт можно развивать как угодно: добавить условие по времени суток, одновременно отправлять уведомление на телефон, копить сообщения в сводку. Home Assistant в этом не ограничивает.

🔁 Уже есть автоматизации на старом событии?

Ничего переделывать не нужно. Событие шины time_messenger_event продолжает работать без изменений:

triggers:
  - trigger: event
    event_type: time_messenger_event

🚧 Чего пока нет

  • Групповые чаты. Интеграция видит только личные сообщения один на один.
  • Сообщения из времени офлайна. Если Home Assistant был выключен, пропущенные сообщения не восстанавливаются задним числом.

🆘 Поддержка

Если что-то не работает, откройте issue и опишите проблему. Только не публикуйте туда пароли, токены и текст личных сообщений.

About

Кастомная интеграция Home Assistant (HACS) для Time Messenger: личные сообщения приходят по WebSocket в реальном времени и становятся событиями/сущностями Home Assistant для автоматизаций и уведомлений.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages