Mqtt и виртуальное устройство

Создал виртуальное устройство в движке правил.

defineVirtualDevice('MyDevice', {
    title: 'Виртуальное устройство',
    cells: {
        MyParameter: {
            type: 'text',
            title: 'изменяемый снаружи параметр',
            value: '1',
            order: 1,
            readonly: false
        }
    }
});

var MyParam = 'MyDevice/MyParameter';

defineRule('MyRule', {
    whenChanged: MyParam,
    then: function () {
        log(dev[MyParam]);
    }
});

при отправке внешним ПО по mqtt значения в этот параметр
mosquitto_pub - t “/devices/MyDevice/controls/MyParameter/on” - m “2”
параметр меняется в интерфейсе и в правилах пишется в лог

если же я, в настройках виртуального устройства, меняю readonly на true,
то после отправки извне в интерфейсе параметр меняется, а в правила - нет

Подскажите, пожалуйста, это баг или фича?

Если топик readonly то в писать нужно не в /on

пробовал, всё-равно до rules не долетает

Флаг readonly как раз предназначен для определения возможности редактировать значение контрола снаружи (веб-интерфейс, другие приложения, работающие на контроллере или на другом устройстве). Соответственно, это нормальное поведение. Если readonly == true, внешние изменения контрола wb-rules не отслеживает.

1 лайк

Ну и если нужно читать произвольный топик - то trackMqtt это позволяет.

Понял, спасибо.

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