Есть предположительная дата релиза?
Есть апдейт по срокам? Уже три месяца прошло…
Так все таки может кто либо внятно ответить - когда можно ждать исправления на баг
Для проверки разделил скрипт, который набросал сегодня:
//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",
},
}
});
Проверил.
Работает.
Скрипт из начала темы тоже проверил, исправив кавычки.
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"]);
}
}
});
При выключенном свитче:
При включенном:
Но бага есть. При создании если 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
Посмотреть что? Все что там написано понятно и так. Вопрос то мой, что за версия у меня? 2.5?
Да, 2.5. Актуальная - 2.6.
При обновлении и откате содержание правил сохраняется?
Да, вообще “правила” на контроллере хранятся в /mnt/data/etc/wb-rules/, при желании - можно сделать копию каталога. Но вообще скрипты не затираются.
Мне необходимо считать время, прошедшее с момента изменения значения в топике.
Например: Окно было открыто в 11:22 (3 ч. 43 мин. назад).
Существуют ли способы как-то более экономно расходовать ресурсы flash-памяти? Например:
- рассчитывать прошедшее время только в момент обращения к интерфейсу
или - не сохранять такие значения в памяти?
Значения в MQTT хранятся в памяти, они не записываются (кроме retained) на диск.
У вас же в документации написано, что
В предыдущих версиях wb-rules значения контролов виртуальных устройств хранились только в MQTT retained, что не очень надёжно (в случае потери питания данные могли быть легко утеряны). Начиная с версии 2.0, эти значения сохраняются также в специальное хранилище в постоянной памяти и восстанавливаются при загрузке сценария.
Или вы предлагаете прошедшее время сохранять не как значения какого-то контрола виртуального устройства, а каким-то иным образом?