После отключения электричества в доме, перестает работать wb rules

Добрый день, установили заказчику wb 7, с несколькими реле wbmr6c для управления светом. настроили мастер выключатель на входе через простейшее правило (пока что стройка продолжается). Теперь как только у него пропадает электричество - правило перестает работать, и соответственно свет в доме не включить. Периодичность раз в 2-3 недели, остальное время все работает без замечаний. Подскажите в чем проблема?

defineVirtualDevice(“power_off”, {
title: “Мастер-выключатель”,
cells: {
power_off: {
type: “pushbutton”
},
}
});

var ps = new PersistentStorage(“power-storage”, { global: true });
var lights = [“wb-mr6c_205/K1”, “wb-mr6c_205/K3”, “wb-mr6c_205/K4”, “wb-mr6c_205/K5”, “wb-mr6c_205/K6”,
“wb-mr6c_207/K1”, “wb-mr6c_207/K2”, “wb-mr6c_207/K3”, “wb-mr6c_207/K4”, “wb-mr6c_207/K5”,
“wb-mr6c_244/K2”, “wb-mr6c_244/K4”,
“wb-mr6c_41/K3”
];
var isPowerOff = true;

defineRule({
whenChanged: [“wb-mr6c_207/Input 3 Single Press Counter”, “power_off/power_off”],
then: function (newValue, devName, cellName) {
if (isPowerOff) {
lights.forEach(function (light) {
ps[light] = dev[light];
dev[light] = false;
});
} else {
lights.forEach(function (light) {
dev[light] = ps[light];
});
}
isPowerOff = !isPowerOff;
}
});

Здравствуйте.

После перезагрузки контроллера проблема может быть связана с использованием объекта PersistentStorage, который сохраняет данные, но не гарантирует их доступность в том виде, как ожидается, особенно если они не инициализированы правильно. Также важно убедиться, что правило корректно перезапускается вместе с контроллером.

  1. Инициализация PersistentStorage

После перезагрузки данные, сохранённые в PersistentStorage, могут быть недоступны. В таком случае перед первым использованием ps необходимо проверить наличие данных.
Добавьте проверку и инициализацию:

lights.forEach(function (light) {
  if (ps[light] === undefined) {
    ps[light] = false; // Установить начальное значение
  }
});
  1. Обработка события

Проверьте, чтобы событие whenChanged ссылалось на существующие устройства и переменные. Например, убедитесь, что топик "wb-mr6c_207/Input 3 Single Press Counter" существует и публикует значения.

  1. Очистка PersistentStorage

Если требуется сброс PersistentStorage при загрузке, добавьте код для очистки данных:

if (typeof ps.isInitialized === "undefined") {
  ps.clear(); // Очистить данные
  ps.isInitialized = true; // Установить флаг инициализации
}
  1. Логирование

Добавьте логи для проверки выполнения правил:

log("Power off rule triggered. Current state: " + (isPowerOff ? "Off" : "On"));

Прошу поделиться результатами

Здравствуйте.

Данная тема давно не была активной.
Удалось ли решить вопрос?