Почему может не сработать "forceDefault"?

Добрый день!
Создал виртуальное устройство. При сохранении правила, или при изменении конфигурационных файлов значение параметра “UP” становится “true”. Не пойму откуда это берется, ведь и значение по умолчанию установлено как “false”, и предыдущее значение тоже “false”.
Пробовал даже поставить у свойства lazyInit = true и сразу после создания устройства присвоить ему false, и все равно оно встает в “true”

defineVirtualDevice("Roll_LivingRoom", {
    title: "Рольставни (Зал)",
    cells: {
            UP: {
                     type: "switch",
                     value: false,
              		 forceDefault: true,
              		 readonly: false
                 },
      		DOWN: {
                     type: "switch",
                     value: false,
              		 forceDefault: true,
              		 readonly: false
                 },
      		PERCENT: {
                     type: "range",
                     value: 0,
              		 max: 100,
              		 readonly: false
                 },
      		PERCENT_FACT: {
                     type: "range",
                     value: 0,
              		 max: 100,
              		 readonly: true
                 },
      		TimeUP: {
                     type: "value",
                     value: 21,
              		 readonly: false
                 },
      		TimeDOWN: {
                     type: "value",
                     value: 20,
              		 readonly: false
                 }
    	   }
});

Здравствуйте!
Проверил сейчас - все работает правильно (wb-rules 2.11.3), как вы и хотите: при сохранении правила значение канала UP становится false.
Может из другого правила это значение изменяется? А значение Down устанавливается в false при сохранении правила?

Да, down стабильно false. И UP так было, но в какой-то момент стал замечать, что оно переводится в true.
Для чистоты удалил все остальные правила, не помогло. Оно упорно переходит в true при сохранении.
Может где-то что-то закешировалось? При первом создании такого небыло же, да и down нормально работает, а правила у них идентичные.
Есть мысль переименовать устройство, а это удалить. Но опасаюсь, что если не разобраться - потом опять воспроизведется.

Оставьте на контроллере только правило с созданием виртуального устройства, остальные пока удалите с контроллера. Если это не поможет, то пришлите архив с диагностической информацией контроллера.

А вот под этим что вы имели в виду? Какие конфигурационные файлы изменяете?

Оставьте на контроллере только правило с созданием виртуального устройства, остальные пока удалите с контроллера.

Готово. Не помогло.
Оставил только одно из устройств, все остальные правила удалил.


Установил переключатели в положение false

Открыл правило, и удалил строку. Сохранил

Смотрю контрол, UP и DOWN в положении true

Так же на всякий случай отключал nodered. Тоже не помогло.
Вот диагностический архив:
diag_output_AIZQCUK4_2022-06-21-19.zip (136.4 КБ)

А вот под этим что вы имели в виду? Какие конфигурационные файлы изменяете?

Вот эти. Меняю любой параметр, сохраняю, и UP переключается в true


Предполагаю, что пользовательские настройки сделаны так, как описано в документации:
https://wirenboard.com/wiki/Rule_Examples#Пользовательские_поля_в_веб-интерфейсе

Нужен сам файл /etc/roll-config.conf, схему для него из /usr/share/wb-mqtt-confed/schemas, а также правило, которое должно эти настройки читать. Пришлите все файлы в архиве, так как файлы с расширением js портал блокирует. Попробую воспроизвести.

Не может ли быть проблема в правиле, которое читает настройки из файла? Что именно это правило и включает данные переключатели?

Предполагаю, что пользовательские настройки сделаны так, как описано в документации:
https://wirenboard.com/wiki/Rule_Examples#Пользовательские_поля_в_веб-интерфейсе

Да, это так. За исключением 3-го файла. Как я понимаю, он мне не нужен, т.к. я в лог ничего не записываю.

Нужен сам файл /etc/roll-config.conf , схему для него из /usr/share/wb-mqtt-confed/schemas , а также правило, которое должно эти настройки читать. Пришлите все файлы в архиве, так как файлы с расширением js портал блокирует. Попробую воспроизвести.

Запрошенные файлы прилагаю.
Для отправки.zip (4.4 КБ)
Так же прилагаю 2 файла правил: в одном создаются виртуальные устройства, во втором описаны правила управления конечными реле при изменении состояния виртуальных устройств. Но при тестировании второй файл правил я удалял, на контроллере оставался только первый файл.

Что касается настроек, то их читает не правило, а Node-Red, эти настройки для него.


Его я, кстати, на время тестирования тоже отключал, так что он вмешиваться не мог.

Кстати, при программном изменении файла настроек (через Node-Red), параметры UP и DOWN не меняются, только через при изменении через веб-интерфейс. Полагаю, что при изменении через веб имеет место перечитавание правил, поэтому значения и меняются.

Так что мне кажется конкретно файлы настроек тут не причем. В процессе чтения правил, а конкретно правил где описывается виртуальное устройство происходит изменение параметра UP и DOWN, противоречащее значению по умолчанию.
Могло ли как-то повлиять, что изначально у этих Вирт. устройств значение forceDefault не задавалось и возможно где-то сохранилось что последнее значение в какой-то момент было true, и теперь оно где-то сохранилось и встает не смотря на наличие forceDefault?
Тут обратил внимание, что если удаляем Вирт. устройство, а затем его опять добавляем, то его значения, заполняются значениями старого устройства (значениями до удаления). Значит они где-то сохраняются и при добавлении устройств с тем же именем они к нему опять подтягиваются. Где можно посмотреть эти сохраненные значения?

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

Все, что можно удалить - это куки браузера (но можно просто открыть новое окно в приватном режиме) или удалением retained-топиков из базы MQTT-брокера, как описано в документации:
https://wirenboard.com/wiki/MQTT#Очистка_очереди_сообщений

Получилось ли решить проблему?

Добрый день!
Прошу прощения за долгий ответ, только сегодня удалось попробовать.
Да, очистка retained топиков помогла. Можно сохранить такой способ как рецепт:

  1. Удалил виртуальные устройства.
  2. Очистил retained топики.

mqtt-delete-retained ‘/devices/Roll_LivingRoom/#’

  1. Снова добавил виртуальные устройства
    После этого при сохранении файла пользовательских настроек значения виртуальных устройств перестали изменяться, что и требовалось.

Спасибо за помощь!

Эта тема была автоматически закрыта через 7 дней после последнего ответа. В ней больше нельзя отвечать.