Новая версия движка правил

Есть предположительная дата релиза? :slight_smile:

Есть апдейт по срокам? Уже три месяца прошло…

Так все таки может кто либо внятно ответить - когда можно ждать исправления на баг

Для проверки разделил скрипт, который набросал сегодня:

//22_test_1.js
defineRule("disable_all_button", {
  whenChanged: "disable_all/disable",
  then: function(newValue, devName, cellName) {
    	log.info(devName, newValue)
      	dev["wb-mrm2-mini_44"]["Relay 2"] = false;
    	//Дальше - по аналогии
   }
});

ну и

//22_test.js
defineVirtualDevice("disable_all", {
  title: "DisableAll",
  cells: {
	disable: {
	    type: "pushbutton",
	},
  }
});

Проверил.
Работает.
Скрипт из начала темы тоже проверил, исправив кавычки.

Screenshot from 2020-10-22 16-49-43

dpkg -s wb-rules |grep Version
Version: 2.6.0

Для switch/pushbutton оно и работало. Проблема для типа “text” (возможно и для value)

Вот для “text” и проверил. Недавно использовал изменения value - тоже без проблем.

Вы бы могли попробовать готовый скрипт из моего сообщения?

В приатаченных скриптах не вижу ниодного текстового поля.

Тот, что проверил:

//test_device.js
defineVirtualDevice("testControl", {
title: "Test",
  cells: {
    pers_text: {
    type: "text",
    value: "testText"
},
switch_control: {
  type: "switch",
  value: false
}
}
});

Второй:

//test_rule.js
defineRule("test_test", {
whenChanged: "testControl/switch_control",
then: function (newValue, devName, cellName) {
 if (newValue) {
  dev["testControl"]["pers_text"] = "Test text";
  log("text: {}", dev["testControl"]["pers_text"]);
 } else {
  dev["testControl"]["pers_text"] = "";
  log("text: {}", dev["testControl"]["pers_text"]);
 }
}
});

При выключенном свитче:
Screenshot from 2020-10-23 10-35-12
При включенном:
Screenshot from 2020-10-23 10-35-23
Но бага есть. При создании если value: “” значение получает тип object

Ок. Тоесть должно работать если я задам каке-то начальное текстовое значение?

Да, именно так.

Спасибо, попробую.

Проверил версию правил у себя. Что это за версия? скрипты с объявлением объектов export или функции require(…) при сохранение указывают на ошибку
root@wirenboard:~# dpkg -s wb-rules
Package: wb-rules
Status: install ok installed
Priority: optional
Section: misc
Installed-Size: 15350
Maintainer: Nikita webconn Maslov n.maslov@contactless.ru
Architecture: armhf
Version: 2.5.0
Depends: libc6 (>= 2.13)
Breaks: wb-mqtt-confed (<< 1.0.2), wb-rules-system (<< 1.6.3)
Conffiles:
/etc/init.d/wb-rules 1579ece52285107cde1482052f47615d
/etc/wb-configs.d/13wb-rules 1236e2e4343d949e0a21de865706c00b
/etc/wb-rules/alarms.conf 2051dd214a6232c5e778c50e52d5fb6a
/etc/wb-rules/rules.js 926c30d0fd63e272f6f9ad370dffb1b0

Посмотрите
https://wirenboard.com/wiki/Движок_правил_wb-rules_2.0

Посмотреть что? Все что там написано понятно и так. Вопрос то мой, что за версия у меня? 2.5?

Да, 2.5. Актуальная - 2.6.

При обновлении и откате содержание правил сохраняется?

Да, вообще “правила” на контроллере хранятся в /mnt/data/etc/wb-rules/, при желании - можно сделать копию каталога. Но вообще скрипты не затираются.

Мне необходимо считать время, прошедшее с момента изменения значения в топике.
Например: Окно было открыто в 11:22 (3 ч. 43 мин. назад).
Существуют ли способы как-то более экономно расходовать ресурсы flash-памяти? Например:

  1. рассчитывать прошедшее время только в момент обращения к интерфейсу
    или
  2. не сохранять такие значения в памяти?

Значения в MQTT хранятся в памяти, они не записываются (кроме retained) на диск.

У вас же в документации написано, что
В предыдущих версиях wb-rules значения контролов виртуальных устройств хранились только в MQTT retained, что не очень надёжно (в случае потери питания данные могли быть легко утеряны). Начиная с версии 2.0, эти значения сохраняются также в специальное хранилище в постоянной памяти и восстанавливаются при загрузке сценария.

Или вы предлагаете прошедшее время сохранять не как значения какого-то контрола виртуального устройства, а каким-то иным образом?