Движок правил 2.0

а в хранилище нельзя сохранять объекты, или я что-то не правильно делаю?

var stor = PersistentStorage(“my-storage”);

stor.obj = {“key”:“value”}

считывать значения получается, а вот записать новое нет.

stor.obj[“key”] = “newvalue”; - не работает.

По идее, можно. Вот только на данный момент это работает только с переписыванием целых объектов, вроде:

var stor = new PersistentStorage("my-storage");
stor.obj = {key: "value"};

...

// перезапись значения
obj = stor.obj;
obj.key = "newvalue";
stor.obj = obj;

Но спасибо за наводку, попробуем добавить возможность менять отдельные элементы объектов.

Сообщение перенесено в новую тему: Сохранить состояние выходов

Помогите ещё разобраться с хранилищами. Заявлялось что хранилища
это объекты, значения в которых будут сохраняться даже при потере питания контроллера.
Но у меня после перезагрузки ничего не сохраняется. Что я делаю не так?

создаю глобальное хранилище и добавляю туда объект. Потом в этот объект добавляю данные и перезагружаю устройство. Поле перезагрузки объект пустой. Хранилище создается в модуле.

Можете привести код, в котором это не работает?

В модуле создаю хранилище и объект в нем:

var stor = new PersistentStorage("my-storage", {global: true});
stor.obj = {};

В сценарии добавляю туда значение:

var m = require("module");
var stor = PersistentStorage("my-storage", {global: true});

stor.obj.key = value;

Перезагружаем устройство и пытаемся из сценария посмотреть, что в объекте:

log(JSON.stringify(stor.obj));

А там пусто.

Проблема в том, что вы изменяете параметры объекта в хранилище. Это известная проблема и мы постараемся её решить. Об этом было написано прямо в сообщении выше:

Ну, выше была проблема с изменением параметров. Не думал, что это и на сохранение распространяется. Если я перепишу весь объект, то должно сохранять?

Так суть процесса одна и та же, вопрос именно за сохранение.

Должно заработать, проверьте.

А вообще, сейчас проверил свой код, всё же ключи добавлялись пересохранением всего объекта. Так что, похоже, придётся возвращаться к кривому способу сохранения в файл через runShellCommand :frowning:

Не может быть проблемой, что хранилище в модуле объявлено? У Вас, вообще, при перезагрузке сохранялись значения?

Странно, но вполне возможно. На то она и бета сейчас. Проверим в ближайшее время, выкатим исправленную версию.

Проверим в ближайшее время, выкатим исправленную версию.

Есть какие нибудь результаты?

Подскажите, релиз движка планируется или забили на него?

Добрый день!
Меня тоже очень интересует этот вопрос.

Всё ещё планируется. Под это дело пришлось много переписывать системные библиотеки, работа ещё идёт.

А какой сейчас статус нового движка?

Я осенью его поставил. Вроде даже без особых нареканий.

А недавно стал зависать. Причем тестовый крон стабильно пишет раз в час тестовую запись в лог. А вот whenChanged перестает работать

Из интерфейса страница со скриптами также не открывается с ошибкой " Error listing the scripts: MQTT RPC request timed out"

Стоит “Version: 2.0~beta3”

Перезапуск wb-rules проблему решает…

Посоветуйте куда копать? Может я что-то сломал или обновил какой-то пакет?
Есть вариант понять что с wb-rules?

Странно, но убрал все скрипты (закомментировал весь код в них) - все равно виснет.

Откатился на 1.6.8

А чем версия 1.7 отличается от 2.0? судя по вики то ничем. Может она в скором времени выйдет?

Добрый день!
Есть продвижения с 2.0?