max-notify-ha

Тип проекта: личный проект

MaxNotify - интеграция для отправки сообщений в мессенджер MAX из Home Assistant

Звезды: 64
🍴Форки: 4
🔄Обновлен: 21 авг. 2026 г.
📰 Релизы
Релиз: v2.2.1 (17.08.2026)

[v2.2.1] — 2026-08-13

Важно

  • Синхронизация slash-команд бота с платформой Max переведена на актуальный метод API: PATCH /me/commands (раньше использовался PATCH /me). Без этого обновления список команд из настроек интеграции мог не применяться в клиенте Max.
  • Как в документации Max: пустой список команд очищает команды бота; за один раз можно отправить не больше 32 команд — лишние при синхронизации отбрасываются.

Изменено

  • Официальный провайдер: регистрация команд бота идёт через /me/commands.
  • Провайдер notify.a161 по-прежнему не регистрирует команды в Max (только локальный allowlist в настройках) — поведение не менялось, обновлены только пояснения.
  • Минимальная версия HA задаётся в hacs.json (homeassistant) и в коде; из manifest.json убрано нестандартное поле minimum_ha_version.
  • Тексты ошибок и подписей селекторов приведены к схеме Home Assistant (exceptions / selector / common), чтобы проходила проверка hassfest.

Документация

  • В docs/PROVIDER_SPEC.md для supports_bot_command_registration указан путь PATCH /me/commands.
  • В репозиторий добавлен этот CHANGELOG.md: из него берутся тексты GitHub Releases.

Репозиторий

  • При пуше тега vX.Y.Z автоматически создаётся GitHub Release (текст из секции changelog + архив max_notify.zip).
  • На каждый push/PR: проверки hassfest и HACS.
  • Локальный прогон тех же Actions: make act-push / make act-release.

Ссылки

Релиз: v2.2.0 (06.08.2026)

[v2.2.0] — 2026-08-06

Важно

  • Исправлена несовместимость с Home Assistant 2026.8.0. В этом релизе HA изменили правило для устройств: один device больше нельзя привязывать сразу к нескольким вложенным записям (чатам). Старая схема MaxNotify — один общий device «на всю интеграцию» для всех чатов — из‑за этого ломалась: сущности notify пропадали или не находились, автоматизации получали ошибку вроде «Invalid MaxNotify entity», диагностика показывала «Неизвестно».
  • Исправление сделано по тому же принципу, что у встроенного Telegram Bot: общий device самой интеграции + отдельный device на каждый чат/пользователя.
  • Обновление бесшовное для уже настроенных записей: идентификаторы сущностей сохраняются, автоматизации и скрипты менять не нужно. После обновления интеграции запись конфигурации мигрирует на версию 1.3.
  • Один и тот же код работает и на HA 2026.8+, и на более старых Core (от minimum_ha_version 2026.2): на новых версиях используется актуальная привязка устройств, на старых — совместимый режим без дублей в интерфейсе.
  • После любого обновления Home Assistant Core (не только до 2026.8) сторонняя интеграция Additional CA снова копирует сертификаты НУЦ Минцифры в контейнер. Пока SSL Context без них, MaxNotify к официальному API не подключается (CERTIFICATE_VERIFY_FAILED). Additional CA пишет / уведомляет: CA … is missing in SSL Context. Home Assistant needs to be restarted (для russian_trusted_root_ca_pem.crt и russian_trusted_sub_ca_pem.crt). Нужна повторная перезагрузка HA — это поведение Additional CA, не баг MaxNotify; предупреждение добавлено в README и в инструкцию по сертификатам.

Исправлено

  • После обновления HA до 2026.8.0 снова нормально создаются и находятся сущности notify по чатам.
  • Убраны дубли устройств в карточке интеграции на HA 2026.7 и похожих версиях (когда один и тот же «MaxNotify» светился под каждым чатом).
  • Устаревшие диагностические сенсоры (на уровне всей интеграции) остаются на общем device; сенсоры и уведомитель конкретного чата — на device этого чата.

Изменено

  • В интерфейсе Home Assistant каждый получатель (чат / пользователь) отображается как отдельное устройство, связанное с общим device интеграции.
  • При загрузке интеграции раскладка устройств при необходимости восстанавливается сама (если после бэкапа или обновления HA что‑то «склеилось» обратно).

Документация

  • В README добавлено предупреждение: после обновления HA Core интеграция Additional CA заново ставит сертификаты, нужна повторная перезагрузка, иначе отправка в Max может не работать.
  • В docs/RUSSIAN_TRUSTED_CA.md то же уточнение для способа через Additional CA.

Ссылки

Релиз: v2.1.2 (03.08.2026)

[v2.1.2] — 2026-08-03

Добавлено

  • Добавлены иконки к сервисам (отправка сообщения, фото, видео и т.д.)

Ссылки

Релиз: v2.1.1 (28.07.2026)

[v2.1.1] — 2026-07-28

Важно

  • GET /chats в официальном API Max больше не используется: с июня 2026 этот метод перестал отдавать диалоги. Отправка в личные чаты теперь работает напрямую через user_id (без предварительного получения chat_id диалога), как описано в документации Max (POST /messages?user_id=...).
  • delete_last_outgoing_message для личных чатов отключён — этот метод работал только через GET /chats, который недоступен. Для групповых чатов (отрицательный chat_id) удаление последнего исходящего по-прежнему работает.
  • Удалены неиспользуемые константы API_PATH_CHATS и CHATS_PAGE_SIZE.

Изменено

  • Функция resolve_message_url больше не вызывает GET /chats для личных диалогов — URL собирается сразу с user_id. Для групп и каналов по-прежнему используется chat_id.
  • В подсказке об ошибке 403 при отправке по user_id уточнён порядок действий: для группы/канала нужно указать отрицательный chat_id из событий Max (WebHook / Long Polling) и настроить получателя как групповой чат.
  • Из README убран раздел «Краткий журнал возможностей (по истории коммитов)» — информация дублировалась с основным changelog'ом.
  • В README обновлён раздел «Где взять токен и ID»: указано, что GET /chats с июня 2026 недоступен, и описано, где брать chat_id группы (из событий bot_added, message_created при WebHook / Long Polling, либо из поля chat_id / recipient_id в событии max_notify_received).

Документация

  • docs/RUSSIAN_TRUSTED_CA.md: уточнён путь для сертификатов — теперь они копируются в /config/additional_ca/ (а не в /config/), добавлен шаг про уведомление от Additional CA и перезагрузку HA. Добавлен раздел про различия официального Terminal & SSH (core-ssh) и community-дополнения SSH & Web Terminal, с пояснением про режим защиты и доступ к docker.

Ссылки


Релиз: v2.1.0 (27.06.2026)

[v2.1.0] — 2026-06-27

Важно

  • Официальный API Max переведён на новый адрес platform-api2.max.ru (вместо platform-api.max.ru) — по требованию платформы Max, дедлайн 19 июля 2026.
  • Новый сервер использует TLS-сертификаты НУЦ Минцифры. Если Home Assistant им не доверяет, интеграция с официальным API перестанет подключаться (ошибка SSL, «Не удалось подключиться»).
  • Порядок обновления: сначала добавьте сертификаты в Home Assistant (на HAOS удобнее через Additional CA), перезапустите систему и убедитесь, что HTTPS к новому API работает — затем обновляйте MaxNotify до 2.1.0.
  • Режим notify.a161.ru не менялся — для него эти шаги не нужны.

Добавлено

  • Подробная инструкция docs/RUSSIAN_TRUSTED_CA.md: как установить сертификаты Минцифры на HAOS, Supervised, Docker, Core и других вариантах установки Home Assistant; как проверить SSL через docker exec homeassistant (не путать с обычным терминалом дополнения).
  • В README — отдельный раздел про сертификаты и ссылка на инструкцию в содержании и в «Полезных ссылках».

Изменено

  • Все запросы к официальному API Max (отправка, приём, webhook, long polling, проверка токена и т.д.) идут на platform-api2.max.ru.
  • В интерфейсе и документации обновлены упоминания хоста API (README, AUTOMATIONS.md, подпись провайдера в настройках).

Ссылки

Релиз: v2.0.4 (08.06.2026)

[v2.0.4] — 2026-06-07

Важно

  • Исправлена ошибка «Произошла неизвестная ошибка» при добавлении интеграции notify.a161.ru в режиме Polling: на шаге «Кнопки клавиатуры» после нажатия «Продолжить» мастер больше не пытается открыть несуществующий шаг slash-команд и корректно переходит к вводу получателя.

Добавлено

  • Подробные записи в журнал при сбоях мастера настройки и экрана опций: при ошибке видно, на каком шаге она произошла, с полным traceback.
  • Единый логгер интеграции — для отладки достаточно одной строки в configuration.yaml: custom_components.max_notify: debug.

Изменено

  • В подсказке об ошибке опроса входящих сообщений уточнена инструкция по включению debug-логов.
  • Для notify.a161.ru отключён экран настройки slash-команд при первичной настройке — этот провайдер их не регистрирует в Max.

Ссылки

Релиз: v2.0.3 (10.05.2026)

[v2.0.3] — 2026-05-10

Важно

  • Исправлен ответ в тот же чат из автоматизаций: если передать config_entry_id и recipient_id из события max_notify_received, действие отправит сообщение именно в этот диалог, а не во все чаты выбранной записи.
  • Поля текста, заголовка, подписи к медиа и текста при редактировании теперь корректно работают как шаблоны Home Assistant в редакторе автоматизаций.

Добавлено

  • В действиях для фото, документов, видео, удаления и редактирования можно указывать recipient_id так же, как в send_message.
  • В интерфейсе действий появился явный переключатель notify для текста, рассылки всем, фото, документов и видео.
  • Понятная ошибка, если в выбранной записи интеграции нет чата с указанным recipient_id.

Изменено

  • notify: false теперь последовательно передаётся в тело запроса при отправке через основные действия и через сущность notify.
  • В документации уточнены каналы: для них используется отрицательный recipient_id, как для групп.
  • В примерах автоматизаций отдельно показан сценарий ответа в тот же чат через данные входящего события.
  • В AUTOMATIONS.md добавлены рабочие паттерны: прямые уведомления из automation, ветвление по trigger.id, кнопка «Удалить», временное сообщение «формируется», фото/видео с камер и динамическое фото по URL.
  • Для удаления сообщений добавлено предупреждение: у бота должны быть права читать и удалять сообщения; в группах и каналах обычно нужна роль администратора с нужными разрешениями.

Ссылки

Релиз: v2.0.2 (03.05.2026)

[v2.0.2] — 2026-05-03

Важно

  • Slash-команды для официального API и для режима notify.a161.ru описаны отдельно: где можно регистрировать команды бота в Max, а где только задаётся список разрешённых команд для входящих — без смешения в настройках и в коде провайдеров.

Добавлено

  • В README: как обрабатываются входящие /команды в режиме a161; оговорены ограничения long polling на стороне Max (частота запросов, таймаут, размер выборки) и почему для продакшена по-прежнему предпочтителен WebHook при доступном публичном HTTPS.
  • Понятные сообщения об ошибках при вызове служб MaxNotify в интерфейсе Home Assistant (русский и английский).
  • Журналы интеграции в основном на русском — проще искать причину по логам.

Изменено

  • Таймаут long polling выровнен с документацией платформы (30 секунд).
  • При добавлении записи интеграции не создаются лишние устаревшие сенсоры идентификаторов сообщений на каждый чат; остаются актуальные сенсоры по чату и два глобальных устаревших на запись (для совместимости со старыми версиями). Ранее появившиеся лишние сущности при желании можно удалить из реестра объектов вручную.
  • Внутренняя унификация сборки исходящих сообщений между провайдерами — меньше дублирования, проще сопровождение.

Надёжность

  • Уточнения в работе webhook и циклов опроса/обновлений для устойчивого приёма сообщений.

Ссылки

Релиз: v2.0.1 (26.04.2026)

[v2.0.1] — 2026-04-26

Важно

  • Патч после 2.0.0: исправлены миграция и обратная совместимость после смены имён уведомлений и подзаписей; в том числе восстановлена отправка в группы и устранена типичная ошибка «получатель не определён» на старых конфигурациях.

Добавлено

  • Локальное сохранение числового идентификатора получателя, привязанного к подзаписи, чтобы рассылка не зависела от того, как сущность отображается в интерфейсе.
  • При запуске интеграции автоматическое восстановление и заполнение этих привязок без ручных действий в настройках.
  • У сущностей уведомлений — расширенные атрибуты для диагностики (откуда взят получатель, данные подзаписи, ссылка на настройки) и краткая текстовая подпись получателя для быстрого распознавания в списке.
  • В формах служб MaxNotify в выборе цели — только уведомления этой интеграции, без посторонних сервисов уведомлений Home Assistant.
  • Дополнительные устаревшие сенсоры последних идентификаторов входящих и исходящих сообщений (на каждого получателя), явно помеченные как устаревшие — для сохранения работы старых автоматизаций и карточек.

Изменено

  • Более устойчивое определение получателя: сначала сохранённое значение, затем настройки подзаписи, поддержка очень старых форматов имён и заголовков; корректная обработка групп, которые в прошлом могли отображаться как личный чат.
  • Службы отправки и сопутствующие действия принимают устаревшие имена сущностей уведомлений и сопоставляют их с актуальными.

Надёжность

  • Более корректная работа отложенной записи служебного состояния интеграции в нестандартных условиях.

Ссылки

Релиз: v2.0.0 (25.04.2026)

[2.0.0] — 2026-04-25

Важно

  • Релиз 2.0.0 — это крупное обновление архитектуры интеграции, а не точечный патч.
  • Изменения относительно v1.4.11: 90 файлов, +14612 / -8149 строк.

Архитектура

  • Интеграция переведена на provider-архитектуру:
    • общий слой: providers/base.py, providers/registry.py, providers/capabilities.py, providers/updates_service.py;
    • реализации провайдеров: providers/official/* и providers/notify_a161/*.
  • Крупные модули (notify, config_flow, services, updates, webhook) разнесены по provider-слою: вынесены маршрутизация API, polling/webhook-циклы, проверка capabilities и сервисная валидация.
  • Добавлена документация для контракта провайдера и PR-процесса:
    • docs/PROVIDER_SPEC.md
    • docs/PROVIDER_PULL_REQUEST.md
    • docs/README.md

Добавлено

  • Расширенное удаление сообщений в max_notify.delete_message:
    • по message_id;
    • по message_ids;
    • по date (календарный день);
    • по периоду from + to.
  • Приоритет режимов удаления:
    • message_id -> message_ids -> date -> from/to.
  • Новое действие delete_last_outgoing_message:
    • доступно для official API;
    • работает для групповых чатов.
  • Поддержка нескольких вложений в одном сообщении (общий лимит платформы до 12 слотов с учётом клавиатуры).
  • Slash-команды улучшены: во входящих событиях выделяется отдельный update_type для /команд, добавлены command и args, а для official API поддержана синхронизация списка команд бота с платформой.

Изменено

  • Для удаления по дате/периоду используется схема:
    • GET /messages (получение id);
    • затем удаление по одному message_id на запрос.
  • Добавлен ответ сервиса удаления: {"deleted": N}.
  • В services.yaml и UI выровнены порядок и структура полей, format в edit_message оформлен как dropdown.
  • Legacy-сенсоры message_id для старых unique_id переведены в совместимый режим: старые сущности не ломают миграцию и помечаются как устаревшие, а актуальные сенсоры привязаны к чатам.

Ограничения по провайдерам

  • Official API:
    • поддерживает удаление по date/period;
    • поддерживает delete_last_outgoing_message.
  • notify.a161.ru:
    • поддерживает удаление по ID;
    • не поддерживает удаление по date/period;
    • не поддерживает delete_last_outgoing_message.

Надёжность и обработка ошибок

  • Для API-ошибок удаления введены переводимые ServiceValidationError с понятными сообщениями в UI:
    • 403 (нет прав) — рекомендация выдать боту права администратора и удаление сообщений;
    • 401 (проблема токена);
    • 404 (сообщение не найдено/недоступно для удаления);
    • сетевые ошибки.
  • При ошибке удаления сервис прекращает выполнение (без «тихого» продолжения).
  • Логи GET /messages for delete range сокращены: выводятся только найденные message_id.

Производительность и лимиты

  • Добавлен глобальный пейсинг исходящих API-запросов:
    • OUTBOUND_API_MAX_REQUESTS_PER_SECOND = 30;
    • отдельный модуль outbound_rate.py;
    • ограничение действует для исходящих API-запросов (send/edit/delete/polling/subscriptions), а скачивание медиа по внешним URL в этот лимит не включено.

Документация

  • Полностью обновлены:
    • README.md
    • AUTOMATIONS.md
    • переводы и строки UI (translations/*.json, strings.json)
  • Добавлены подробные разделы по удалению (message_id/message_ids/date/from-to), различиям official vs notify.a161 и контракту IntegrationCapabilities для разработчиков.

Тесты

  • Тестовый контур расширен под provider-модель:
    • tests/providers/official/*
    • tests/providers/notify_a161/*
    • новые сценарии по удалениям (включая date/period), лимитам вложений и API-rate-limit, роутингу flow, capabilities и parsing.
  • Регрессионные сценарии удаления/дат/периода покрыты отдельными тестами.

Ссылки

  • Изменения относительно прошлой версии: v1.4.11…v2.0.0
  • Скачать релиз: v2.0.0
Релиз: v1.4.11 (20.04.2026)

[1.4.11] — 2026-04-20

Добавлено

  • Slash-команды бота (официальный API Max): в мастере настройки и в параметрах записи после шагов с кнопками клавиатуры — меню команд (добавление и удаление). Список синхронизируется с платформой при сохранении и при загрузке записи интеграции (аналог setMyCommands в API бота).
  • Входящие события: если в тексте сообщения есть slash-команда (в том числе вариант с упоминанием бота вроде @бот /команда), для записи официального API в данных события max_notify_received поле update_type становится slash_command, чтобы в автоматизациях проще отличать такие сообщения от обычного текста.
  • Сенсоры идентификаторов сообщений по чатам: для каждого настроенного получателя (отдельный чат или пользователь) создаются диагностические сенсоры последнего входящего и последнего исходящего message_id; состояние восстанавливается после перезапуска (RestoreSensor). Старые сенсоры «на всю запись интеграции» сохранены как устаревшие: они повторяют значение только если в записи настроен ровно один получатель (чтобы не смешивать id разных чатов).
  • Персистентное хранение последних id сообщений и связанных маркеров в каталоге .storage Home Assistant — значения не теряются при перезапуске.

Исправлено

  • notify.a161.ru и групповые чаты: при первой настройке записи можно указать отрицательный recipient_id (групповой Chat ID), если у прокси связка выдана для группы, или положительный user_id для личного диалога; исходящие запросы для группы уходят с chat_id. У notify.a161.ru на одну выдачу ключа приходится ровно один получатель; другой чат или пользователь — это другой API-ключ и отдельная запись интеграции. В сервисах параметры chat_id / user_id / recipient_id для этого режима должны совпадать с тем единственным получателем, который зафиксирован при настройке (произвольное «перенаправление» в другой чат той же записью не поддерживается).
  • Сенсоры и запись исходящих id: исправлена ситуация, когда идентификатор сообщения после успешной отправки не сохранялся и сенсоры не обновлялись: учёт subentry.data как отображаемого слоя (Mapping, не только dict, как в Home Assistant), более надёжный разбор message_id из ответа API (mid и др., запасной разбор текста ответа, снятие BOM).
  • Вызовы сервисов: если не указан config_entry_id, запись MaxNotify может определяться по entity_id выбранных сущностей notify (удобно при нескольких интеграциях).

Изменено

  • Отправка через платформу notify: при явном recipient_id / chat_id / user_id в параметрах выполняется проверка по записи интеграции. Для официального API цель должна быть среди настроенных чатов и пользователей. Для notify.a161.ru допустим только один согласованный с токеном получатель (см. выше); иначе отправка отклоняется с понятной ошибкой.

Документация и интерфейс

  • README: раздел про сенсоры message_id, уточнения по entity_id, config_entry_id и recipient_id для send_message, send_document, delete_message, edit_message.
  • Обновлены services.yaml, строки интерфейса и переводы (RU/EN) под slash-команды, новые сенсоры и сообщения об ошибках.

Ссылки

  • Изменения относительно прошлой версии: v1.4.10…v1.4.11
Релиз: v2.0.0_alpha2 (17.04.2026)

[2.0.0_alpha2] — 2026-04-17

Важно

  • Вторая альфа линии 2.0 после предыдущей альфы: добавлены возможности поверх той же архитектуры провайдеров. Перед опорой на версию в «боевой» среде имеет смысл проверить сценарии с несколькими вложениями (фото и видео), slash-командами на официальном API и удалением сообщений.

Добавлено

  • Несколько вложений в одном сообщении (до 12 слотов с учётом клавиатуры под сообщением): в max_notify.send_photo и max_notify.send_video можно передать список файлов (локальные пути или URL) вместо одного. В max_notify.send_document по-прежнему один файл за вызов; список файлов для документа не поддерживается.
  • Slash-команды для записей официального Max API: в мастере и в настройках записи после шагов с кнопками — меню команд (добавление и удаление), синхронизация с платформой при сохранении и при загрузке записи. Во входящих событиях вызовы вида /команда или с упоминанием бота помечаются отдельным типом обновления, чтобы их проще отличать от обычного текста в автоматизациях.
  • Массовое удаление: в max_notify.delete_message можно указать один идентификатор сообщения или несколько (списком или через запятую); удаление выполняется по очереди с паузой между запросами.
  • Новое действие max_notify.delete_last_outgoing_message: в групповом чате найти и удалить последнее исходящее сообщение бота (с настройкой, сколько последних сообщений просмотреть в истории). В личном чате вызов отклоняется с понятной ошибкой. Поддерживается у официального API; у notify.a161.ru — нет.
  • Ограничения на раскладку кнопок под сообщением (число рядов, кнопок в ряду, общие лимиты).

Исправлено

  • Сенсор идентификатора последнего входящего сообщения по чату: раньше в него могли попадать и исходящие сообщения, из‑за чего значение смешивало вход и исход; теперь запись выполняется только для реальных новых сообщений в чате по данным приёма (без обновлений, которые относятся к slash-командам и аналогичным случаям).

Изменено

  • Переработаны исходящая отправка и общий слой провайдеров: лимиты вложений и размеров загрузки, сбор сообщений, доработки для официального API и notify.a161.
  • Приём входящих: исправлен разбор команд в тексте с упоминанием бота.
  • Документация для разработчиков сторонних API: старый общий гайд заменён на две отдельные статьи (что нужно от оператора API и как оформить изменения в репозитории); обновлено оглавление раздела документации.
  • Тексты для пользователей и примеры автоматизаций в репозитории приведены в соответствие с новыми возможностями.

Тесты

  • Расширен набор автоматических проверок: удаление последнего исходящего, лимиты вложений, мастер настройки, приём сообщений, действия интеграции и проверка параметров вызовов.

Ссылки

Релиз: v2.0.0_alpha1 (16.04.2026)

[2.0.0_alpha1] — 2026-04-15

Важно

  • Это альфа-релиз крупного рефакторинга 2.0: внутренняя архитектура интеграции переведена на модель провайдеров. Основные провайдеры сейчас: official (platform-api.max.ru) и notify.a161.ru`.
  • Обновление затрагивает большой объём кода (масштабная декомпозиция и перенос логики по модулям), поэтому версия отмечена как alpha для ранней проверки.

Архитектура

  • Выполнена полная разбивка монолитной логики на provider-слои:
    • реестр провайдеров, базовые абстракции, capabilities, lifecycle;
    • отдельные реализации для official и notify_a161 (API, config/options flow, send, updates, webhook).
  • Введены новые инфраструктурные модули для flow/UI/subentry и общих provider-сервисов.
  • Ключевые старые «тяжёлые» модули (config_flow, notify, updates, webhook, services) существенно упрощены и теперь в основном оркестрируют provider-логику.

Для разработчиков

  • Добавлена документация docs/PROVIDERS.md — практический гайд по подключению нового backend-провайдера:
    • какие API-данные нужны;
    • какие файлы/классы реализовать;
    • как зарегистрировать провайдер и переводы;
    • какие тесты добавить.
  • В README добавлена ссылка на эту документацию.

Сервисы, схемы и переводы

  • Обновлены services, schemas, strings и переводы (RU/EN) под новую provider-архитектуру.
  • Файл services.yaml удалён в рамках миграции на новый путь описания сервисов и UI-текстов.

Тесты

  • Тестовый контур перестроен под provider-подход:
    • добавлены отдельные тесты для official и notify_a161 (capabilities, webhook/token-pool, normalize updates и др.);
    • обновлены существующие базовые тесты (helpers, notify, updates, services, schemas, const).

Ссылки

Релиз: v1.4.10 (15.04.2026)

[1.4.10] — 2026-04-15

Добавлено

  • Новый сервис max_notify.send_text_to_all (экспериментально): отправка текстового сообщения всем настроенным получателям во всех записях MaxNotify (со стандартной клавиатурой и/или своими buttons, как в send_message).
  • В сервисы отправки добавлен параметр format (text / markdown / html), который переопределяет формат сообщений интеграции на один вызов:
    • max_notify.send_message
    • max_notify.send_photo (формат подписи)
    • max_notify.send_document (формат подписи)
    • max_notify.send_video (формат подписи)

Изменено

  • Для notify.a161.ru + Polling изменена защитная логика отключения приёма:
    • вместо фиксированных 24 часов теперь настраиваемый период неактивности 1–3 суток (по умолчанию 3);
    • если за выбранный период не было ни входящих сообщений, ни успешных отправок с кнопками, приём автоматически переключается на «Только отправка» (уведомление в Home Assistant).

Улучшено

  • Диагностика Polling GET /updates:
    • при ошибках создаётся запись в «Ремонты» (Repairs) с кратким описанием причины (токен/доступ/временные проблемы сервера и т.п.);
    • в режиме DEBUG в лог пишется воспроизводимая команда curl для ручной проверки запроса (включая токен).
  • Улучшена совместимость отправки сообщений при передаче только recipient_id (без chat_id / user_id) — идентификатор корректно трактуется и маршрутизируется.

Документация и интерфейс

  • Обновлены README и AUTOMATIONS.md: для notify.a161.ru описаны Polling, поддержка кнопок через прокси и правило автопереключения на «Только отправка».
  • Обновлены описания сервисов, тексты мастера/настроек и переводы (RU/EN) под новые параметры format, сервис send_text_to_all и настройку периода неактивности.

Ссылки

  • Изменения относительно прошлой версии: v1.4.9…v1.4.10
Релиз: v1.4.9 (12.04.2026)

[1.4.9] — 2026-04-12

Исправлено

  • Скачивание медиа по https:// (отправка фото, документа, видео по URL): исправлена проверка TLS для типичных случаев wildcard и внутренних имён хоста, когда цепочка сертификата доверенна, но имя в URL не совпадает с SAN. Для загрузки файла с URL (не для запросов к API Max / notify.a161.ru) по умолчанию проверяется цепочка до УЦ, а сверка hostname отключена. Полное отключение проверки по-прежнему только через disable_ssl. Та же логика для ветки Digest, использующей requests.

Документация

  • README: оглавление с якорями по разделам, кнопка My Home Assistant для быстрого добавления репозитория в HACS, отдельные подразделы установки через HACS и вручную, ссылки «наверх» в конце блоков.
  • AUTOMATIONS.md: оглавление и якоря; примечания обновлены под официальный API и notify.a161.ru (событие max_notify_received при Polling, кнопки в обоих режимах в рамках сервиса, уточнение про отрицательный recipient_id только для официального API).

Ссылки

  • Изменения относительно прошлой версии: v1.4.8…v1.4.9
Релиз: v1.4.8 (11.04.2026)

[1.4.8] — 2026-04-11

Добавлено

  • Авторизация при скачивании медиа по URL для max_notify.send_photo, max_notify.send_document и max_notify.send_video:
    • url_auth_type: basic, digest или bearer;
    • для basic и digesturl_auth_login и url_auth_password (или учётные данные в самом URL вида http://логин:пароль@host/...);
    • для bearerurl_auth_token.
  • Если в URL или в параметрах указаны учётные данные, url_auth_type обязателен — иначе сервис вернёт понятную ошибку валидации в Home Assistant.

Изменено

  • Повторные попытки при нестабильной сети и части ответов сервера:
    • для запросов POST upload-url добавлены повторы с задержками при сетевых сбоях и HTTP-статусах вроде 429, 5xx, 408, 425;
    • при отправке сообщений в Max минимальное число попыток согласовано с тем же профилем задержек, чтобы transient-ошибки чаще проходили без ручного повтора.
  • Поле url_basic_auth (логин:пароль) помечено как устаревшее: для basic рекомендуется url_auth_type: basic и пара логин/пароль; url_basic_auth будет удалён в версии 1.5.0 (для digest это поле не используется).
  • Поля chat_id и user_id в сервисах отправки помечены как устаревшие в пользу recipient_id; удаление запланировано в версии 1.5.0 (см. также README).

Документация и интерфейс

  • Обновлены README, services.yaml, строки интерфейса и переводы (RU/EN) под новые поля URL-авторизации и тексты про устаревание параметров.

Ссылки

  • Изменения относительно прошлой версии: v1.4.7…v1.4.8
Релиз: v1.4.7 (10.04.2026)

[1.4.7] — 2026-04-10

Добавлено

  • Для режима notify.a161.ru добавлен полноценный приём входящих через Polling updates queue:
    • выбор режима приёма «Только отправка / Polling» в мастере и в настройках;
    • новый шаг настройки интервала опроса /updates (updates_interval, диапазон 2-30 секунд, по умолчанию 5 секунд).
  • В сервисы отправки медиа добавлена опция url_basic_auth (формат логин:пароль) для скачивания файлов по URL с BasicAuth:
    • max_notify.send_photo
    • max_notify.send_document
    • max_notify.send_video
  • Для URL вида http://логин:пароль@host/... учётные данные также поддерживаются автоматически.

Изменено

  • Для notify.a161.ru добавлена отправка inline-кнопок для текста и при отправке фото/документов/видео (где поддерживается API сервиса).
  • Сенсор последнего входящего сообщения теперь создаётся по режиму приёма, а не только по типу интеграции: при включённом приёме (в т.ч. notify.a161.ru + polling) сенсор входящих доступен.
  • Интерфейс, переводы, manifest, HACS и документация унифицированы по новому названию: MaxNotify (вместо Max Notify).
  • В README и services.yaml обновлены описания сервисов и добавлены пояснения по url_basic_auth.

Улучшено

  • Для notify.a161.ru расширена совместимость с форматами ответов /updates (reply/result/data, list/dict/string) с нормализацией во внутренний формат события.
  • Улучшена дедупликация callback-событий: приоритет ключа по callback_id, что снижает риск дублей.
  • Повышена устойчивость жизненного цикла интеграции:
    • более безопасный перезапуск polling при reload/reconfigure;
    • защита от накопления duplicate update listeners;
    • thread-safe планирование reload через hass.add_job(...).

Автоматическое поведение для notify.a161.ru

  • Добавлена защитная логика для режима polling без кнопок:
    • если включён polling, но кнопки не настроены, запускается grace-период;
    • при отсутствии отправок с кнопками в течение 24 часов режим автоматически переводится в «Только отправка»;
    • запись интеграции переименовывается под новый режим, в Home Assistant создаётся уведомление.

Ссылки

  • Изменения относительно прошлой версии: v1.4.6…v1.4.7
Релиз: v1.4.6 (07.04.2026)

[1.4.6] — 2026-04-07

Исправлено

  • Исправлена ошибка, из-за которой отправка могла падать при сетевых таймаутах/кратковременных проблемах соединения с API Max.
    Теперь для сетевых ошибок и таймаутов добавлены повторные попытки с задержками.

Добавлено

  • В сервисы отправки медиа добавлена опция disable_ssl (отключение проверки SSL для конкретного вызова):
    • max_notify.send_photo
    • max_notify.send_video
    • max_notify.send_document
  • Опция полезна для источников с self-signed или некорректными сертификатами.

Улучшено

  • Унифицирован таймаут чтения файлов по URL для отправки медиа (единый timeout вместо разных значений в отдельных ветках).
  • Исправлены и унифицированы тексты раздела «Кнопки» в переводах и сервисных описаниях (RU/EN), чтобы форматы кнопок были описаны одинаково и без неоднозначностей.

Совместимость с Home Assistant

  • Улучшена проверка минимальной версии Home Assistant:
    • в мастере настройки при несовместимой версии показывается понятная ошибка с требуемой версией из manifest.json;
    • при загрузке уже существующей записи интеграции добавлена жесткая runtime-проверка: несовместимая запись не загружается;
    • при несовместимости создается запись в Repairs с пояснением;
    • если для записи был включен WebHook (official API), интеграция пытается снять подписку WebHook в API Max перед блокировкой загрузки.

Ссылки

  • Изменения относительно прошлой версии: v1.4.5…v1.4.6
Релиз: v1.4.5 (06.04.2026)

[1.4.5] — 2026-04-06

Интерфейс вызова сервисов

  • В формах сервисов Max Notify (отправка текста, фото, документа, видео, удаление и правка сообщения) поле «Сущность уведомления» снова показывает доступные цели: у фильтра списка оставлен только домен notify (без привязки к integration в селекторе Home Assistant). В списке могут отображаться и другие службы notify.* (другие интеграции или YAML вроде notify через rest на notify.a161.ru) — нужно выбирать сущность именно этой интеграции Max Notify.
  • Режим notify.a161.ru и записи без сохранённого типа в данных, но с заголовком, содержащим notify.a161.ru, снова однозначно определяются как этот режим во всех проверках, где это важно.

Официальный API Max: WebHook, HTTPS и режимы приёма

  • WebHook предполагает, что у Home Assistant настроен внешний HTTPS-URL (доступ из интернета для серверов Max). Подробно — в README (раздел «Сеть», сценарии с Nabu Casa / reverse proxy).
  • При каждой загрузке интеграции выполняется проверка: если выбран приём WebHook, но собрать корректный внешний HTTPS-вебхук нельзя, интеграция снимает подписки WebHook в Max, переводит запись в режим «Только отправка», очищает секрет вебхука, обновляет заголовок записи и создаёт запись о проблеме (repair) с подсказкой проверить Настройки → Система → Сеть.
  • В журнал (INFO) при старте официальной записи добавлена строка диагностики: доступен ли HTTPS для вебхука, итоговый URL и заданные внешний/внутренний адреса.
  • Один и тот же токен бота нельзя использовать одновременно для Long Polling на одной записи интеграции и WebHook на другой: конфликтующий режим скрыт в мастере, при сохранении настроек показывается ошибка. В одной записи по-прежнему можно переключать режим (снятие подписок при необходимости).
  • Поля ввода токена и секретов в мастере настроены так, чтобы браузер по возможности не предлагал сохранить пароль (autocomplete off).

Режим notify.a161.ru

  • Для видео улучшены повторные попытки отправки при необходимости (согласно логике сервиса).

Документация и переводы

  • README и тексты интерфейса (RU/EN) обновлены под новое поведение WebHook и сети.

Ссылки

  • Изменения относительно прошлой версии: v1.4.4…v1.4.5
Релиз: v1.4.4 (05.04.2026)

[1.4.4] — 2026-04-04

Официальный API Max: кнопки-ссылки

  • В клавиатуре сообщения можно задать кнопки типа «ссылка» (link): подпись и URL, по нажатию открывается сайт в браузере.
  • В URL допускаются только протоколы http и https (требование API). Иначе в Home Assistant показывается понятная ошибка валидации, а не сырой ответ сервера.
  • Настройка через UI: при добавлении/редактировании кнопки выбирается тип «Ссылка» и поле URL; в сервисах — поле url у кнопки с type: link (см. README и подсказки в формах).

Режим notify.a161.ru

  • Лимит размера файла перед загрузкой унифицирован: до 10 МБ для фото, документов и видео (одна проверка для всех типов вложений).
  • Между успешными исходящими сообщениями для одной записи интеграции выдерживается пауза не менее 1 секунды — снижает нагрузку на API, если из автоматизаций подряд уходит много отдельных сообщений. На официальный API Max это не распространяется.

Документация

  • README, services.yaml и переводы интерфейса обновлены: кнопки link, лимит 10 МБ и пауза 1 с для notify.a161.ru.

Ссылки

  • Изменения относительно прошлой версии: v1.4.3…v1.4.4
🧾 Последние коммиты
Коммит: c80cb65 (13.08.2026)
v2.2.1: изменения в АПИ команд бота
Автор: Maksim Kovalyov
Коммит: d028bdd (06.08.2026)
Исправление совместимости с 2026.8.0
Автор: Maksim Kovalyov
Коммит: 2912699 (03.08.2026)
Добавлены иконки к сервисам
Автор: Maksim Kovalyov
Коммит: b4de099 (28.07.2026)
v2.1.1
Автор: Maksim Kovalyov
Коммит: b8f6b4a (30.06.2026)
Документация по проверке сертификатов
Автор: Maksim Kovalyov
Коммит: 0b59108 (28.06.2026)
Обновил документацию по сертификатам МинЦифры
Автор: Maksim Kovalyov
Коммит: 33ecec9 (27.06.2026)
v2.1.0
- Изменён API-URL для официального API на platform-api2.max.ru
- Обновлена документация
- Добавлена инструкция как установить сертификаты Минцифры
Автор: Maksim Kovalyov
Коммит: e4194a7 (08.06.2026)
v2.0.4
Автор: Maksim Kovalyov
Коммит: fe22c8c (08.06.2026)
Исправлены кнопки клавиатуры notify.a161 и единый debug-логгер
Автор: Maksim Kovalyov
Коммит: d4fde08 (10.05.2026)
дополнил файл AUTOMATIONS.md своими рабочими автоматизациями
Автор: Maksim Kovalyov
Поддержка проекта