max-notify-ha
Тип проекта: личный проект
MaxNotify - интеграция для отправки сообщений в мессенджер MAX из Home Assistant
Звезды: 66
Форки: 4
Обновлен: 8 сент. 2026 г.
📰 Релизы
Релиз: v2.3.0-beta3 (08.09.2026)
[v2.3.0-beta3] — 2026-09-08
Важно
- Если вы перестали пользоваться notify.a161.ru — всё равно обновите интеграцию. Сервису нужно понять, кто ещё на старых версиях.
Добавлено
- В списке интеграций Home Assistant у MaxNotify теперь своя иконка (значок мессенджера Max), а не общая заглушка.
- В запросах к notify.a161.ru в заголовке X-Client-Version передаётся версия интеграции без патча (для 2.3.0-beta3 это
2.3). Официальный API Max не менялся.
Изменено
- Автопереключение на «Только отправка» после простоя действует только для Long Polling. Если приём идёт по WebSocket — режим сам не меняется.
- Интервал Long Polling больше не выбирается: всегда берётся значение с сервера. В мастере остаётся только лимит событий за раз.
Ссылки
- Текущий релиз: v2.3.0-beta3
- Сравнение с прошлым релизом: v2.3.0-beta2…v2.3.0-beta3
Релиз: v2.3.0-beta2 (07.09.2026)
[v2.3.0-beta2] — 2026-09-07
Исправлено
- Открытие настроек notify.a161 больше не зависает надолго. Раньше окно ждало «слот» на запрос возможностей к серверу — иногда минутами, хотя сам запрос с компьютера и из Home Assistant проходит сразу.
- Перезагрузка этой интеграции тоже больше не тормозит по той же причине. Официальный API Max не затрагивался и как раньше открывается быстро.
- Срок автоотключения опроса больше не зажимается в 1–3 суток. Если сервер дал 7 суток — показывается и используется 7.
- Запрос возможностей notify.a161 больше не уходит дважды сразу (из‑за этого сервер ставил второй в очередь и иногда отвечал 429). На один токен — один запрос, остальные ждут тот же ответ.
Изменено
- При перезагрузке и при открытии настроек возможности снова запрашиваются с сервера, даже если они уже есть у клиента. Чаще лимита в минуту запросы не уходят (если сервер лимит не задал — не чаще одного раза в минуту). Если лимит ещё не подошёл — сразу берутся уже загруженные данные, без ожидания.
- Если сервер ответил не 200 — остаются уже полученные возможности, а если их ещё не было — значения по умолчанию. Паузу до следующего запроса задаёт ответ сервера (
rate_limit_capabilities_per_minute); заголовок «повторить через N секунд» — минимальная пауза (если он больше лимита из JSON, ждём его). - Заголовки (
X-RateLimit-Status,X-Retry-After-Seconds) учитываются на опросе/updates, загрузке файлов и отправке:REJECTED/ 429 — пауза из заголовка,DELAYED— не стучим чаще, чем сказал сервер. - Для notify.a161 появился WebSocket (
wss://notify.a161.ru/ws/updates): его выбираем по умолчанию, если сервер разрешил. При подключении сразу приходят накопившиеся события, новые — сами. Если сервер пишет, что выключается — клиент переподключается. В журнал пишется так же, как у опроса: старт и соединение — INFO, кадры, ping и переподключение — DEBUG. В настройках WebSocket снова есть шаг с кнопками. Смена режима сохраняется до перезагрузки, чтобы не оставался старый опрос. - Входящие собщения больше не перезагружают интеграцию. Раньше каждое сообщение записывалось в настройки записи, Home Assistant считал это сменой конфигурации и через полсекунды перезагружал интеграцию.
- Короткий опрос раз в несколько секунд больше не используется. Если WebSocket нет, берём Long Polling (
wait5–60 с иlimitзадаются в настройках и уходят вGET /updates). Старые записи с обычным polling переключаются на Long Polling сами. В лог при старте пишутсяlimitиwait. - Если токен неактивен — ни WebSocket, ни Long Polling не подключаем.
- Период автоотключения polling больше не выбирается. Срок задаёт сервер и показывается на отдельном информационном шаге — в тексте прямо написано, что значение с сервера. Подняли лимит на сервере — после обновления возможностей он применяется сам.
- В мастере и в настройках убраны лишние тексты: на каждом экране только то, что к нему относится. Автоотключение — на своём шаге, формат и режим — без чужих лимитов.
Ссылки
- Текущий релиз: v2.3.0-beta2
- Сравнение с прошлым релизом: v2.3.0-beta1…v2.3.0-beta2
Релиз: v2.3.0-beta1 (03.09.2026)
[v2.3.0-beta1] — 2026-09-03
Важно
- Для провайдера notify.a161.ru интеграция начинает опираться на ответ сервера «возможности токена» (
/me/capabilities): что разрешено этому ключу прямо сейчас, какие лимиты и интервалы. - Официальный API Max этим релизом не меняется: те же сценарии отправки и приёма, что и в 2.2.x.
- Это beta: поведение зависит от того, что реально отдаёт notify.a161.ru. Если сервер ещё не включил часть флагов (например WebSocket), соответствующие пункты в настройках просто не появятся.
Добавлено
- Периодическое обновление возможностей с сервера (по умолчанию раз в сутки; интервал можно задать с сервера). При перезагрузке интеграции список возможностей запрашивается заново.
- Ограничение частоты запросов возможностей к серверу, чтобы не долбить API.
- Учёт лимитов размера фото / видео / документа с сервера: до загрузки файл проверяется по своему типу, в ошибке показывается актуальный потолок в МБ.
- Учёт лимитов скорости исходящих сообщений и загрузок файлов (паузы между отправками по правилам тарифа).
- Блокировка работы при техработках или неактивном токене, с понятным сообщением (если сервер его прислал).
- В мастере и в настройках показываются живые лимиты сервера: интервал опроса, размеры вложений, доступные форматы текста, источник данных (ответ API или запасные значения).
- Заготовка приёма входящих по WebSocket: режим появляется в списке только если сервер явно разрешил его для токена. Пока флаг выключен — как раньше, polling / только отправка.
Изменено
- Формат сообщения (текст / Markdown / HTML), кнопки, группы, правка и удаление сообщений, типы вложений для notify.a161 включаются или скрываются по флагам с сервера, а не «всё сразу из коробки».
- Интервал polling в настройках ограничен диапазоном, который прислал сервер (а не только жёсткими числами в клиенте).
- В мастере настройки: сначала токен и запрос возможностей, затем выбор формата и режима приёма уже по тому, что сервер разрешил.
- Рекомендуемый период автоотключения polling при долгом простое берётся с сервера; в интерфейсе по-прежнему выбор 1–3 суток.
Исправлено
- Раньше Markdown/HTML могли быть отмечены как недоступные, но отправка с разметкой всё равно проходила. Теперь формат проверяется по возможностям токена.
- При слишком большом файле текст ошибки больше не опирается на общий «запасной» лимит, а показывает лимит для этого типа с сервера.
- В настройках больше не предлагаются форматы и режимы, которые сервер для токена отключил.
Для пользователей beta
- После обновления откройте настройки интеграции notify.a161 и сохраните их ещё раз (или перезагрузите интеграцию), чтобы подтянуть свежие возможности.
- Проверьте отправку текста, при необходимости — фото/видео и отказ по размеру.
- Если что-то «вдруг запретилось» — смотрите описание шага настроек: там видно, что вернул сервер.
Ссылки
- Текущий релиз: v2.3.0-beta1
- Сравнение с прошлым релизом: v2.2.2…v2.3.0-beta1
Релиз: v2.2.2 (26.08.2026)
[v2.2.2] — 2026-08-26
Исправлено
- При отправке фото, документа или видео по ссылке (в один чат или сразу в несколько) файл больше не качается заново на каждого получателя. Ссылка скачивается один раз во временный файл, и дальше всем уходит уже локальная копия. После отправки временный файл удаляется.
Изменено
- Для медиа-действий стало правилом: если указан
http/https, интеграция сначала скачивает файл на диск Home Assistant, и только потом загружает его в Max. Локальные пути на диске по-прежнему используются как есть.
Документация
- В README уточнено поведение отправки медиа по ссылке (одно скачивание, рассылка с диска).
Ссылки
- Текущий релиз: v2.2.2
- Сравнение с прошлым релизом: v2.2.1…v2.2.2
Релиз: 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.1
- Сравнение с прошлым релизом: v2.2.0…v2.2.1
Релиз: 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_version2026.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.2.0
- Сравнение с прошлым релизом: v2.1.2…v2.2.0
Релиз: v2.1.2 (03.08.2026)
[v2.1.2] — 2026-08-03
Добавлено
- Добавлены иконки к сервисам (отправка сообщения, фото, видео и т.д.)
Ссылки
- Текущий релиз: v2.1.2
- Сравнение с прошлым релизом: v2.0.4…v2.1.0
Релиз: 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.1
- Сравнение с прошлым релизом: v2.1.0…v2.1.1
Релиз: 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.1.0
- Сравнение с прошлым релизом: v2.0.4…v2.1.0
Релиз: 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.4
- Сравнение с прошлым релизом: v2.0.3…v2.0.4
Релиз: 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.3
- Сравнение с прошлым релизом: v2.0.2…v2.0.3
Релиз: 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.2
- Сравнение с прошлым релизом: v2.0.1…v2.0.2
Релиз: v2.0.1 (26.04.2026)
[v2.0.1] — 2026-04-26
Важно
- Патч после 2.0.0: исправлены миграция и обратная совместимость после смены имён уведомлений и подзаписей; в том числе восстановлена отправка в группы и устранена типичная ошибка «получатель не определён» на старых конфигурациях.
Добавлено
- Локальное сохранение числового идентификатора получателя, привязанного к подзаписи, чтобы рассылка не зависела от того, как сущность отображается в интерфейсе.
- При запуске интеграции автоматическое восстановление и заполнение этих привязок без ручных действий в настройках.
- У сущностей уведомлений — расширенные атрибуты для диагностики (откуда взят получатель, данные подзаписи, ссылка на настройки) и краткая текстовая подпись получателя для быстрого распознавания в списке.
- В формах служб MaxNotify в выборе цели — только уведомления этой интеграции, без посторонних сервисов уведомлений Home Assistant.
- Дополнительные устаревшие сенсоры последних идентификаторов входящих и исходящих сообщений (на каждого получателя), явно помеченные как устаревшие — для сохранения работы старых автоматизаций и карточек.
Изменено
- Более устойчивое определение получателя: сначала сохранённое значение, затем настройки подзаписи, поддержка очень старых форматов имён и заголовков; корректная обработка групп, которые в прошлом могли отображаться как личный чат.
- Службы отправки и сопутствующие действия принимают устаревшие имена сущностей уведомлений и сопоставляют их с актуальными.
Надёжность
- Более корректная работа отложенной записи служебного состояния интеграции в нестандартных условиях.
Ссылки
- Текущий релиз: v2.0.1
- Сравнение с прошлым релизом: v2.0.0…v2.0.1
Релиз: 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.mddocs/PROVIDER_PULL_REQUEST.mddocs/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.mdAUTOMATIONS.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 сообщений и связанных маркеров в каталоге
.storageHome 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…v2.0.0_alpha2
Релиз: 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...v2.0.0_alpha1
Релиз: 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_messagemax_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 и digest —
url_auth_loginиurl_auth_password(или учётные данные в самом URL видаhttp://логин:пароль@host/...); - для bearer —
url_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
🧾 Последние коммиты
Коммит: 74e82ad (08.09.2026)
версия интеграции в запросах к a161
Автор:
Maksim Kovalyov
Коммит: 6e1ba09 (08.09.2026)
отключено переключение на "Только отправка" для WS; добавлены константы с сервера для LongPolling
Автор:
Maksim Kovalyov
Коммит: c873e27 (07.09.2026)
Иконка
Автор:
Maksim Kovalyov
Коммит: 1bdfe51 (07.09.2026)
Добавлены WebSocket к провайдеру a161
Автор:
Maksim Kovalyov
Коммит: dab4be3 (07.09.2026)
правки по очереди запросов (429 ошибка сервера)
Автор:
Maksim Kovalyov
Коммит: eafd1d5 (05.09.2026)
починил зависание при открытии настроек/перезагрузке интеграции
Автор:
Maksim Kovalyov
Коммит: 59bc5b2 (05.09.2026)
период неактивности с сервера (a161)
Автор:
Maksim Kovalyov
Коммит: 46b7fb0 (03.09.2026)
README
Автор:
Maksim Kovalyov
Коммит: 4b5eba2 (03.09.2026)
Merge branch 'master' of github.com:kai-zer-ru/max-notify-ha
Автор:
Maksim Kovalyov
Коммит: 1e5eacc (03.09.2026)
capabilities для notify.a161.ru
Автор:
Maksim Kovalyov