Ошибка message malformed: integration not found появляется в логах Home Assistant и при работе с API-интеграциями, когда система получает запрос на обращение к интеграции, которой нет в установленном окружении, либо когда структура самого сообщения нарушена и сервер не может его разобрать. Чаще всего проблема возникает после обновления системы, удаления или переименования интеграции, а также при ручном редактировании файлов конфигурации.
Разберёмся, что конкретно означает это сообщение, где искать источник сбоя и как безопасно устранить его без потери настроек. Инструкция построена так, чтобы сначала выполнялись обратимые проверки, и только потом — более серьёзные действия с конфигурацией.
Что означает ошибка malformed integration not found
Сообщение состоит из двух частей, и каждая указывает на свой слой проблемы. Фрагмент message malformed говорит о том, что входящее сообщение (например, WebSocket-запрос или вызов сервиса) не соответствует ожидаемому формату. Фрагмент integration not found означает, что внутри этого сообщения указана интеграция, которую система не смогла найти в реестре загруженных компонентов.
На практике это выглядит так: интерфейс, автоматизация, скрипт или внешнее приложение отправляют команду вида «выполни действие для интеграции X», а ядро отвечает отказом, потому что интеграция X не установлена, не загружена или была переименована. Важно понимать: сама по себе ошибка не портит данные — это отказ в обработке одного запроса, а не повреждение системы.
Типичные симптомы, сопровождающие ошибку:
- 🔴 Карточки на панели управления показывают «entity not available» или пустые значения;
- 🔴 Автоматизации и скрипты не срабатывают, в журнале появляются записи об отказе;
- 🔴 В разделе настроек интеграция отображается с предупреждением или вовсе исчезает из списка;
- 🔴 В логах повторяются строки с
integration not foundпри каждой перезагрузке.
Основные причины возникновения
Прежде чем что-то исправлять, нужно определить, какой из сценариев ваш. От этого зависит весь дальнейший порядок действий.
Удалённая или переименованная интеграция. Если вы удалили интеграцию через интерфейс, но в автоматизациях, скриптах или карточках панели остались ссылки на её объекты, система будет пытаться обратиться к несуществующему компоненту. То же происходит при переименовании: старое имя остаётся в YAML-файлах, а нового в них нет.
Кастомная интеграция, не совместимая с текущей версией. Компоненты из HACS или установленные вручную в папку custom_components могут перестать загружаться после обновления ядра. Система видит запись о них в конфигурации, но загрузить код не может — и отвечает, что интеграция не найдена.
Ошибки синтаксиса в YAML. Лишний пробел, неправильный отступ, потерянное двоеточие в configuration.yaml ломают структуру сообщения. Тогда срабатывает первая часть ошибки — message malformed, потому что конфигурацию невозможно корректно разобрать.
Некорректный запрос из внешнего приложения. Если ошибку генерирует стороннее приложение (например, мобильный клиент, Node-RED или самописный скрипт через WebSocket API), возможная причина — устаревший формат запроса или опечатка в имени домена сервиса.
Диагностика: как найти источник проблемы
Начните с журнала — он почти всегда содержит точный ответ. Откройте раздел настроек системы и перейдите к логам (путь может незначительно отличаться в зависимости от версии интерфейса). Найдите полную строку ошибки: рядом с integration not found обычно указано имя интеграции, которую система не смогла найти, и источник вызова — автоматизация, скрипт или панель.
Дальше действуйте по цепочке. Если указана конкретная автоматизация — откройте её в редакторе и проверьте, какие сервисы и объекты она вызывает. Если ошибка появляется сразу после старта системы, причина почти наверняка в конфигурации, а не в отдельном сценарии.
Полезная проверка — штатный валидатор конфигурации. В разделе инструментов разработчика есть кнопка проверки конфигурации: она выявит синтаксические ошибки YAML и ссылки на отсутствующие компоненты до перезагрузки. Всегда запускайте проверку конфигурации перед любой перезагрузкой после правок YAML — это исключает ситуацию, когда система не поднимается из-за опечатки.
Пошаговое исправление ошибки
Порядок действий зависит от найденной причины. Ниже — универсальная последовательность от простого к сложному.
☑️ Чек-лист устранения ошибки integration not found
Шаг 1. Удалите «мёртвые» ссылки. Откройте автоматизации, скрипты и карточки, которые ссылаются на отсутствующую интеграцию, и удалите либо замените эти обращения. В YAML-режиме ищите по имени интеграции через поиск по файлам конфигурации.
Шаг 2. Исправьте синтаксис YAML. Если валидатор указал на строку с ошибкой, проверьте отступы (в YAML используются только пробелы, не табуляция), двоеточия и кавычки. Даже один лишний пробел перед ключом меняет структуру документа.
Шаг 3. Восстановите кастомную интеграцию. Если проблема в компоненте из HACS, проверьте наличие обновлений для него. Если обновления нет и компонент несовместим с вашей версией ядра — варианта два: откатить обновление системы из резервной копии либо временно удалить компонент из custom_components и закомментировать его упоминания в конфигурации.
Шаг 4. Перезагрузите и проверьте. После правок выполните перезагрузку и снова откройте журнал. Если строка с ошибкой исчезла и объекты интеграции стали доступны — проблема решена.
⚠️ Внимание: перед любыми правками configuration.yaml и удалением компонентов создайте полную резервную копию через штатный механизм бэкапов. Это займёт несколько минут, но позволит откатить систему целиком, если что-то пойдёт не так.
Типовые сценарии и их решения
Для наглядности сведём частые ситуации в таблицу — по ней удобно быстро сопоставить свой случай с действием.
| Сценарий | Вероятная причина | Что делать |
|---|---|---|
| Ошибка после обновления ядра | Кастомная интеграция несовместима с новой версией | Обновить компонент через HACS или временно удалить |
| Ошибка после удаления интеграции | Остались ссылки в автоматизациях и панелях | Удалить обращения к объектам удалённой интеграции |
| Ошибка после правки YAML | Синтаксическая ошибка, неверные отступы | Исправить строку по подсказке валидатора |
| Ошибка при вызове из внешнего скрипта | Опечатка в домене сервиса или устаревший формат запроса | Сверить имя домена и формат с актуальной документацией API |
| Интеграция есть, но объекты недоступны | Интеграция загружена с ошибкой инициализации | Перезагрузить интеграцию, проверить её журнал |
Обратите внимание на последнюю строку таблицы: иногда интеграция формально установлена, но не смогла инициализироваться — например, из-за недоступности облачного сервиса или неверных учётных данных. В этом случае текст ошибки может отличаться, но внешние симптомы похожи. Проверьте страницу конкретной интеграции в настройках: там обычно виден статус и кнопка повторной настройки.
Если ошибку вызывает внешнее приложение
Когда запрос отправляет не сама система, а сторонний клиент — Node-RED, мобильное приложение, скрипт на Python — диагностика немного другая. Сначала проверьте, что в запросе правильно указан домен сервиса: например, light.turn_on, а не lights.turn_on. Опечатка в домене даёт именно отказ «не найдено».
Далее сверьте структуру сообщения с актуальной документацией API вашей версии. Форматы WebSocket-команд со временем меняются, и скрипт, написанный под старую версию, может формировать сообщение, которое новое ядро считает malformed. Пример корректного вызова сервиса через WebSocket выглядит примерно так:
{
"id": 1,
"type": "call_service",
"domain": "light",
"service": "turn_on",
"target": {"entity_id": "light.kitchen"}
}
Проверить вызов можно и без внешнего кода: в инструментах разработчика есть раздел «Сервисы», где тот же вызов выполняется через интерфейс. Если там он работает, а из скрипта — нет, проблема точно в формате запроса, а не в системе.
Как посмотреть список реально загруженных интеграций
Откройте Настройки → Устройства и службы: там перечислены все активные интеграции. Для проверки доступных доменов сервисов используйте Инструменты разработчика → Сервисы — выпадающий список показывает только те домены, которые система реально загрузила. Если нужного домена там нет, интеграция не загружена, и обращения к ней будут отклонены.
Профилактика: как избежать повторения ошибки
Большинство случаев integration not found — следствие «осиротевших» ссылок после изменений в системе. Несколько простых привычек сводят риск к минимуму.
- 🛡️ Перед удалением интеграции найдите все автоматизации и карточки, которые используют её объекты, и отвяжите их заранее;
- 🛡️ Обновляйте кастомные компоненты одновременно с ядром, а не «когда-нибудь потом»;
- 🛡️ Проверяйте конфигурацию валидатором после каждой правки YAML;
- 🛡️ Делайте резервную копию перед крупными обновлениями — это стандартная практика, а не перестраховка.
⚠️ Внимание: не пытайтесь «заглушить» ошибку, отключая логирование или игнорируя предупреждения валидатора. Сообщение об отсутствующей интеграции — симптом, а не болезнь: скрыв его, вы оставите нерабочие автоматизации, которые откажут в самый неподходящий момент.
Если же ошибка появляется систематически без видимой причины и ни один из сценариев не подходит, имеет смысл изучить официальную документацию вашей версии Home Assistant и разделы сообщества, где разбираются похожие случаи для конкретных интеграций. Точные пути меню и поведение компонентов различаются между версиями, поэтому сверяйте инструкции с вашей установкой.
Часто задаваемые вопросы
Опасна ли ошибка message malformed integration not found для системы?
Нет, сама по себе она не повреждает данные и конфигурацию. Это отказ в обработке конкретного запроса. Однако она сигнализирует, что какая-то автоматизация, скрипт или карточка не работают, поэтому игнорировать её не стоит.
Ошибка появляется при каждой перезагрузке. Это нормально?
Нет. Повторение при старте означает, что ссылка на отсутствующую интеграцию находится в файлах конфигурации, которые загружаются при запуске. Найдите имя интеграции в логе и удалите или исправьте соответствующий блок в YAML.
Удалил интеграцию, а ошибка осталась. Почему?
Удаление интеграции не удаляет автоматически ссылки на её объекты из автоматизаций, скриптов и панелей. Система продолжает пытаться обратиться к уже несуществующим сущностям. Нужно вручную убрать эти обращения — через редактор автоматизаций или поиск по YAML-файлам.
Может ли ошибка быть вызвана обновлением Home Assistant?
Да, это один из типичных сценариев. После обновления ядра кастомные интеграции могут оказаться несовместимыми и не загрузиться. Решение — обновить компоненты через HACS, а если обновления нет, временно отключить проблемный компонент до выхода совместимой версии.
Как понять, что проблема именно в YAML, а не в интеграции?
Запустите проверку конфигурации в инструментах разработчика. Если валидатор сообщает об ошибке синтаксиса с указанием файла и строки — причина в YAML. Если конфигурация валидна, но ошибка остаётся, ищите проблему в самой интеграции или во внешних запросах к API.