Отработка правил завязанных на счетчики при перезагрузке

Добрый день, я в принципе и в предыдущим решением пока что не заметил ложных срабатываний, но сам в другом городе сейчас. В выходные приеду - накачу, дам ОС

1 Like

Эту проблему можно легко обойти, если сделать копию функции, например, “whenChangedCounter”, лишённую данного недостатка. Более того это даст вам возможность оперировать именно со своими счётчиками, или в целом данными от своих конкретных устройств, поведение которых можно исправить, и не завязываться на вообще всё.

Итак, протестировал.

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

Накатил последнее Ваше решение:

  1. При перезагрузке драйвера serial - все ок
  2. При перезагрузке контроллера через кнопку reboot в интерфейсе - все ок
  3. При выключении автомата - все ок
  4. При снятии питания с контроллера (модули продолжают работать) - правило срабатывает, свет включается
  5. При снятии питания с модулей (Контролер продолжает работать) - все ок

Правильно понимаю что на последнем релизе с последним предложенным костылем, у вас всё работает как ожидается?

Все работает, кроме 4 пункта

В бытовых случаях как часто такая ситуация воспроизводится и доставляет дискомфорт в использовании умным домом?

Честно именно этот момент ни разу ) но вы попросили протестировать варианты - я их и указал

Значит в большинстве случае костыль охватывает все бытовые случаи использования оборудования.
С последующими обновлениями постараемся исправить эту проблему.
Дополнительно оповещу.

/* 1. Одиночное нажатие на включение*/
function button(name, input, output) {
    defineRule({
        whenChanged: input + " Single Press Counter",
        then: function(newValue, devName, cellName) {
            log("Срабатывание правила newValue: {}, output: {}, this.prevValue: {}".format(newValue, output, this.prevValue));
            if (newValue === null) return;
            if (newValue == this.prevValue) return;
            if (newValue == 0) {
                if (this.prevValue < (65536 - 5)) {
                    return;
                }
            }
            if (newValue > 0) {
                log("Выход переключился")
                dev[output] = !dev[output];
            }
            this.prevValue = newValue;
        }
    })
};

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

Благодарю за обратную связь.
Пока еще не готово решение этого вопроса.
Как будет информация, я сразу оповещу.

а уточните, пожалуйста, “при снятии питания” - это значит, правило срабатывает, когда контроллер обесточен?

(я веду к тому, не может ли это быть поведение, настроенное внутри реле на потерю связи с контроллером)

На модулях не настроено ничего вообще.
При снятии питания - имеется в виду скидывайте клеммы питания с контроллера а потом ее накидывание - и после этого уже срабатывает

Тогда ещё хочу попросить вас прислать логи тех моментов, когда происходило неожиданное переключение, и если ещё допишете в сообщении точное время переключений и в какую сторону оно произошло (вкл->выкл или наоборот) - будет вообще прекрасно.

Вы ведь используете последнюю версию правил от Максима? (которая пишет в лог в самом начале вне зависимости от реального срабатывания?)

Я пришел к выводу, что предпоследнее предложение от Максима меня устраивает. Один лишь в нем минус - это игнорирование первого нажатия кнопки в случае перезагрузки контроллера , но это терпимо, зато ложных срабатываний нет.

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

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

Что ж, если однажды найдётся возможность всё-таки собрать логи, будем очень признательны. Мы у себя так и не смогли воспроизвести, к сожалению