Виртуальное устройство_переменные

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

var isStartActive = false;
var greenKzkInterval; // Переменная для хранения идентификатора интервала
var isRunning = false; // Флаг работы привода
var isReversed = false; // Флаг, указывающий на обратное направление

А может проще в момент изменения переменных устанавливать соответствующее состояние и на виртуальном устройстве?

Да, это верный и реально работающий способ.
В JS нет методов позвволяющих следить за изменениями самих переменных.

вот я и не совсем понимаю как это сделать, какой аналог whenChanged для переменных есть.

Добрый день!
Пожалуйста, подробнее опишите ваш проект.

Эта информация поможет мне лучше понять ситуацию и предложить более точное решение.

Я хочу отслеживать запуск электродвигателя и в какую сторону он вращается. В коде правил ( в условиях if) я использую переменные: var greenKzkInterval; // Переменная для хранения идентификатора интервала
var isRunning = false; // Флаг работы привода
var isReversed = false; // Флаг, указывающий на обратное направление var isStartActive = false;
Они меняют своё состояние в зависимости от ситуации и влияют через условие (например if (isStartActive){…} )на работу правил. Всё работает, только я бы хотел визуализировать их значения, например через виртуальное устройство:

defineVirtualDevice("simplTest", {
    title: "Simple switch",
    cells: {
        isStartActive: {
            type: "switch",
            value: false,
            
        },
        greenKzkInterval: {
            type: "switch",
            value: false,

            
        },
        isRunning: {
            type: "switch",
            value: false,

            },
        isReversed: {
            type: "switch",
            value: false,

            
        },
        checkIntervalId: {
            type: "value",
            value: 0
        },
    }
});

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

....
   isStartActive = .....;
   dev["simplTest/isStartActive"] = isStartActive;
....

И так поступаете со всеми переменными, которые хотите “отобразить” в виртуальных устройствах

Спасибо, я делал похожее отдельным правилом, но что-то не получалось, но так всё работает.