После обновления Zigbee2MQTT до версии 2.0 кнопки и пульты нередко выпадают из автоматизаций: сенсоры вида sensor.*_action исчезают, и у устройства в Home Assistant остаются только уровень батареи и качество связи. Причина обычно в том, что Zigbee2MQTT 2.0 заменил старые action-сенсоры на сущности-события (event entities), и прежние триггеры перестают срабатывать. Обычно помогает переписать автоматизацию на новую event-сущность или триггер устройства, а возврат старых сенсоров через опцию legacy_action_sensor - только временный обходной путь.
Как выглядит проблема
Автоматизации на кнопки перестают срабатывать после обновления Zigbee2MQTT (чаще всего до 2.0, реже до 2.6.0) или Home Assistant 2025.1. Варианты симптома:
- у пульта IKEA TRADFRI 5-button remote нет сенсора _action, автоматизация падает;
- кнопка IKEA Rodret показывает 0 сущностей, нажатие нельзя выбрать триггером;
- нажатия видны во фронтенде Zigbee2MQTT, но не доходят до автоматизаций Home Assistant;
- кнопки Aqara и Xiaomi публикуют ACTION в Zigbee2MQTT, а в Home Assistant после обновления до Z2M 2.0.0 виден только уровень батареи;
- автоматизации, собранные на blueprint-шаблонах, перестают работать, кнопки в них не находятся;
- после Zigbee2MQTT 2.6.0 старые потоки Node-RED на Hue dimmer перестают срабатывать;
- у переключателей нет switch-сущности, длинное нажатие недоступно в редакторе автоматизаций;
- у переключателей EnOcean PTM 215z нет action-сущности.
Проблема встречается на пультах и кнопках IKEA TRADFRI, Styrbar, Rodret и SYMFONISK, Hue dimmer v1 и v2, Aqara и Xiaomi, SONOFF SNZB-01 и SNZB-01P, SmartThings IM6001-BTP01, EnOcean PTM 215z, Linkoze LKWSZ211.
В ветках форума при этом встречаются такие сообщения об ошибках:
Error in describing trigger: e is undefined
extension with name HommeAssistant already present
Extension with name HomeAssistant already present.
Причины
Главная причина - Zigbee2MQTT 2.0 заменил сенсоры sensor.*_action на сущности-события и новые события действий. Остальные варианты - частные случаи и предположения участников форума.
| Причина | Как проверить | Что сделать |
|---|---|---|
| Zigbee2MQTT 2.0 заменил сенсоры sensor.*_action на сущности-события и новые события действий (5 веток, прямо названа в 2) | У устройства нет сенсора sensor.*_action, видны только батарея и качество связи | Переписать автоматизацию на event-сущность или временно включить legacy-опцию |
| Опция legacy action sensor выключена или отсутствует в настройках Home Assistant в Zigbee2MQTT (2 ветки, прямо названа в одной) | Проверить секцию homeassistant в configuration.yaml | Включить legacy_action_sensor: true (опция устарела, это временная мера) |
| Действия устройства появляются в Home Assistant только после первого срабатывания каждого из них (1 ветка) | Нажать каждую кнопку и обновить список сущностей | Найти устройство на вкладке By type и нажать каждое действие один раз |
| Предположение: обновление Home Assistant 2025.1 изменило способ создания action-сенсоров (без подтверждения) | Действия пропали именно после обновления Home Assistant до 2025.1 | Перейти на blueprint с legacy-действиями (он опирается на устаревшую опцию) или фильтровать пустые action |
| Предположение: Zigbee2MQTT 2.6.0 заменил события действий на press или hold с именем кнопки (без подтверждения) | Посмотреть атрибуты события: event_type и button | Перестроить логику на два уровня: сначала event_type, затем кнопка |
Решения
Основной способ, который описывает документация Zigbee2MQTT, - перейти на сущности-события. Устаревшая опция legacy_action_sensor возвращает старые сенсоры, но она помечена как deprecated, поэтому используйте ее как временную меру. Как устроен configuration.yaml и остальные настройки Zigbee2MQTT, подробно разобрано в руководстве по установке и настройке Zigbee2MQTT.
Переписать автоматизацию на сущность-событие
Переписывание пробовали в 4 ветках форума: в двух сработало полностью, еще в двух частично. Согласно документации, атрибут event_type содержит само действие. Триггер ставят на смену состояния event-сущности:
triggers:
- trigger: state
entity_id: event.0_living_light_button_plastic_action
to: null
Конкретное действие отбирают условием value_template: "{{ trigger.to_state.attributes.event_type == 'toggle' }}".
Собрать автоматизацию на триггере устройства
Помогло в 1 ветке из 2, где его пробовали. По документации Zigbee2MQTT действия обнаруживаются Home Assistant как MQTT-триггеры устройства только после того, как устройство сгенерировало их хотя бы один раз. Пример триггера из форума:
domain: mqtt
device_id: (the id is selected automatically when the switch is chosen through visual mode, before chosing to "modify in yaml", using the three dots)
type: action
subtype: single
trigger: device
Вернуть старые сенсоры через legacy-опцию
В configuration.yaml Zigbee2MQTT опцию включают вручную - сработало в 3 ветках из 3, где его пробовали:
homeassistant:
legacy_action_sensor: true
Тот же переключатель в веб-интерфейсе называется ‘Home Assistant legacy action sensors’. Он помог в 4 ветках из 7, где его пробовали, в 2 не помог. Включение через настройки иногда завершается ошибкой, а документация помечает функцию как устаревшую: “Note that this feature is deprecated and will be removed in the future.”
Включить экспериментальные сущности-события
Отдельная опция включает экспериментальную поддержку event-сущностей - помогла в 1 ветке из 2, где ее пробовали. Документация предупреждает: “Optional: Experimental support for Home Assistant event entities, may break in the future”.
experimental_event_entities: true
legacy_action_sensor: false
Единичные решения
- Blueprint CrazyCoder zigbee2mqtt_hue_dimmer_v2.yaml с включенными legacy-действиями помог одному пользователю с Hue dimmer (способ опирается на устаревшую опцию).
- Оставить пустые action-сообщения и отфильтровать их переключателем в автоматизации - сработало в 1 ветке; документация подтверждает, что Zigbee2MQTT отправляет пустой action после отправки действия.
- Вариант с event-версией действия и вспомогательной сущностью (helper), которая хранит последнее действие, помог в 1 ветке.
- Найти устройство на вкладке By type и нажать каждое действие один раз - помогло в 1 ветке.
- В Node-RED после Zigbee2MQTT 2.6.0 один пользователь перестроил поток: первый switch проверяет event_type (press, hold), второй - кнопку (on, up, down, off).
Если не помогло
В одной ветке не сработал метод из связанной темы форума про action events - участник не расписал детали. В другой пользователю предложили прочитать обсуждение в GitHub Zigbee2MQTT, результат неизвестен. В третьей советовали перейти на сущности event._action или включить опцию, которая сохраняет старые sensor._action, но подтверждений этому нет. Частично сработал вариант из еще одной ветки (опять с устаревшей опцией): включить legacy_action_sensor: true вместе с homeassistant_legacy_triggers: true в секции advanced.
Если устройство вообще не появляется в Home Assistant, это отдельная проблема - посмотрите разбор про устройства Zigbee2MQTT, которые не появляются в Home Assistant.
Частые вопросы
Почему нажатия видны в Zigbee2MQTT, но не доходят до Home Assistant?
Чаще всего причина в том, что Zigbee2MQTT 2.0 заменил сенсоры sensor.*_action на сущности-события, и старые триггеры перестали срабатывать. Второй вариант - действия еще ни разу не срабатывали: по документации Zigbee2MQTT они обнаруживаются Home Assistant как MQTT-триггеры устройства только после первого срабатывания. Нажмите каждую кнопку и перепроверьте список сущностей и триггеров. Если само устройство в Home Assistant так и не появилось, сначала разберите проблему с обнаружением устройств.
В какой версии Zigbee2MQTT удалят legacy_action_sensor?
Точная версия в документации не названа. Опция homeassistant.legacy_action_sensor помечена как устаревшая: сказано, что функция будет удалена в будущем, но срок не указан. Поэтому относитесь к ней как к временной мере и не собирайте на ней новые автоматизации - основной путь строится на сущностях-событиях.
Настройка в веб-интерфейсе выдает ошибку - что делать?
Пропишите опцию прямо в configuration.yaml. В ветках форума включение ‘Home Assistant legacy action sensors’ через настройки Zigbee2MQTT иногда завершалось ошибкой вида Extension with name HomeAssistant already present. Вариант с секцией homeassistant и опцией legacy_action_sensor: true в configuration.yaml сработал в 3 ветках из 3 и подтвержден документацией, но опция устаревшая, это временная мера.
Как перевести потоки Node-RED на новые события?
Один пользователь разветвил поток на два уровня. Первый switch проверяет атрибут event_type со значениями press и hold, второй - кнопку: on, up, down или off. Так он перестроил поток после Zigbee2MQTT 2.6.0, и события сущности event.livingroom_dimmer_action снова стали управлять светом. Опыт описан в одной ветке форума и документацией не подтвержден.
У кнопки 0 сущностей - это та же проблема?
Возможно. Кнопка IKEA Rodret после обновления показывала 0 сущностей, и нажатия нельзя было выбрать триггером, причина в ветке не названа. По документации, триггеры устройства обнаруживаются только после первого срабатывания, поэтому нажмите каждую кнопку и обновите список. Если сущности так и не появились, посмотрите разбор случая, когда сущность устройства удалилась и не возвращается.



