Загрузка CPU при работе с zigbee

Добрый день, столкнулся с таким не очень приятным моментом.
Wirenboard 6.7.2F
Система wb-2304 (чистая, без лишнего)
Zigbee модуль 1.2 перепрошитый
wb-rules последней версии, решулярное обновление
После добавления zigbee устройств, а точнее кнопок, я заметил что в момент нажатия на кнопку нагрузка процессора уходит в 100% при этом я удалил все правила которые касаются обработки нажатий с этого выключателя. если нажатий несколько 2-3 нажатия, то процессор уходит в 100% и вместе с этим перестают обрабатыватся нажатия на проводных кнопках через I/O модули. Так продолжается секунд 30-40 нагрузка спадает и нажатия на проводные выключатели начинают работать.
Посмотрел что грузит. Это оказался wb-rules.
Подскажите, возможно есть уже решение данной проблемы или кто то сталкивался с этим?

Завтра попробую провернуть несколько тестов, так как заметил JSON.parse в wb-zigbee2mqtt.js, а он как раз может нагружать, попробую поигратся с simdjson с его нодовской оберткой https://www.npmjs.com/package/simdjson

Так же хотел бы узнать про возможность выноса zigbee на raspbery и уже с нее слать на прямую в wb-mqtt? Возхможно уже кто то так делал и есть опыт поделиться?

Решил временно проблему.
Временно закоментировал в wb-zigbee2mqtt.js строки для старой версии zigbee2mqtt.

Буду копать еще глубже, возможно найду более красивое решение.
По остальным вопросам еще актуально.

Добрый день.
А есть пример payload, вызывающего повышенную нагрузку? То есть - что именно публикует zigbee2mqtt для того чтобы воспроизвести.

Да, можно, конечно. Несколькими способами, первый и очевидный - настроить в конфиге zigbee2mqtt в качестве брокера адрес брокер контроллера.

Добрый день.

Опрос происходит раз в пол часа.

Zigbee2MQTT:info  2023-04-17 12:58:14: MQTT publish: topic 'zigbee2mqtt/zigbee_doublekey_switch_1e68', payload '{"action":"single_left","battery":100,"device_temperature":25,"last_seen":1681736294011,"linkquality":62,"power_outage_count":20,"voltage":3055}'

Так ж еще заметил одну особенность.
Я делаю правило для зигби устройств опираясь на изменение last_seen, так как action не изменяется при одинаковых действиях.
При опросе устройств wb-zigbee2mqtt игнорирует пустые поля и в виртуальном устройстве остается старое значение action, что вызывает обработку правила, хотя action по факту не происходит. Возможно стоит рассмотреть очищение поля action когда происходит опрос и action пустой.

defineRule({
  whenChanged: "zigbee_doublekey_switch_1e68/last_seen",
  then: function (newValue, devName, cellName) {
    if(dev["zigbee_doublekey_switch_1e68/action"] == 'single_left') {
      dev["wb-mr6c_141/K1"] = !dev["wb-mr6c_141/K1"];
    }
  }
})

Дополнение. Любой payload грузит процессор. Но этот конкретно я сам делаю и вижу как растет нагрузка. Но как я выше описал, комментирование поддержки для старой версии решило немного проблему, хотя ещё нагрузка есть.
На днях ещё попробую несколько вариантов оптимизации сделать.