Вопрос по правилам, созданным функцией

Добрый день! Есть функция, создающая правило. Функция вызывается для нескольких устройств. Предполагаю, что функция создаст однотипные правила для каждого устройства. В функцию передаются имена устройств, которые добавляются к имени правила (чтобы конечные имена правил были уникальны).

вопросы:

  1. верно ли предположение - будет создано столько правил, сколько вызовов функции?

  2. каким образом можно посмотреть эти правила после их создания (после вызовов функции для всех устройств). Например, чтобы убедиться, что они созданы корректно и в нужном количестве? доступны ли они для просмотра? (вряд ли же “разворачивание” правил из функции делается динамически - в рантайме?!)

  3. возможна ли такая ситуация, что если имзенить имя правила в объевлении функции (я это сделал), то в системе останется и старое правило и новое. И они будут оба вызываться при срабатывании триггера?

Вопрос связан с тем, что наблюдаю странное поведение правил - такое ощущение, что или одно правило вызывается 2-3 раза подряд, или после изменения имени правила, остался артефакт со старым именем, который тоже вызывается и дублирует все действия штатного (с новым именем) правила. В логах ожидаемый вывод задублирован по 2-3 раза с интервалом до нескольких секунд. Само правило выполняется по таймеру 30 мин.

Как можно убедиться, что в рантайме именно то количество правил, которое должно быть, с нужными (ожидаемыми) именами, и проблема дублирования в другом?

Добрый день.

Да, верно.

Метода перебрать правила - нет. Обычно создаются правила с уникальными именами, формируя их из префикса-имени устройства-суффикса.
Ну и правила создаются в том числе и динамически, тут больше от архитектуры зависит.
То есть функция создающая анонимное правило может быть выполнена в любое время.

Нет, не должно, все объекты создаваемые скриптом (одним скриптом) очищаеются при его перезагрузке после редактировагия. А подобное поведение можно воспроизвести? Если да, в актуальной версии wb-rules - покажите методику, если удастся - то это баг.

Понятно! Спасибо!
Параллельно смотрю в сторону задвоения периодических таймеров. Запуск и останов реализовал событийно-зависимым (например, при изменении уставки, режима термостата и пр. перезапускается таймер). Думаю, логика запуска таймеров требует анализа и корректировки. В связи с этим уточните, правильно понимаю, что при внесении изменений в скрипт (вся логика в одном скрипте) и сохранении, не надо следить, есть ли запущенные таймеры, останавливать их и т.д? Просто сохраняем изменения, и это не может стать причиной задвоения таймеров?

Нашел в совей логике место, где запараллеливались интервальные таймеры. Но по-прежнему осталось в логах задвоение записей. Время записи совпадает до миллисекунд. При этом если открыть скрипт и включить лог, то записи выводятся корректно, без задвоения. В чем проблема с логами? Почему здваиваются некоторые записи?

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

Все-таки мне кажется, что дело не в скрипет. Логи скрипта (через ключ) вполне ожидаемые. А те же самие логи того же скрипта через Settings-logs отображают некоторые записи задвоенные. Ну хорошо, сделаю простейший скрипт периодичекой записи в лог чего-нибудь.