Wb-rules не отрабатывает правило

Добрый день!
Не отрабатывает правило на изменение значения в топике вирт устройства, если значение публиковать, например, из node-red (через UI WB правило работает)

Как пример:
defineVirtualDevice(“test”, {
title: “тест”,
cells: {
t1: {
type: “text”,
value: “”
},
}
});

defineRule(“set_t1”, {
whenChanged: “test/t1”,

then: function (newValue, devName, cellName) {
log(newValue)
}
});

Это баг или фича?

Изменяете значение через /devices/test/controls/t1/on?
Или пишите retain в /devices/test/controls/t1?

Publish делаю в /devices/test/controls/t1 (и стандартной NR нодой MQTT-out и нодой WB)

Так работать не будет.
Смена значения происходит через on

Я дописал к пути /on, но это не помголо.
Я так понимаю этот что-то захардкоженое, но не пойму, как предполагается работать с этим…

Через mosquitto_pub проверяли, меняется?
Что wb-rules в логах пишет?
Возможно тип данных не подходит.

через вот этот эндпойнт в UI смотрю - /MQTTChannels

Значение меняется, а лога нет.

К слову пока я какие-то странноватые действия не посовершаю, значение вообще не меняется нигде…


image
image

вот такие нехитрые настройки

На контроллер по ssh заходили?
Пробовали выполнить mosquitto_pub?

На скриншоте вижу, что вы пишите в /devices/test/controls/t1, а нужно в /devices/test/controls/t1/on

в /on не пишет совсем, поэтому я вернулся к варианту без него

попробовал через консоль

первая строка ничего не сделала, вторая отразилась

Здравствуйте!
Контрол типа text по умолчанию создается только для чтения. Попробуйте описать виртуальное устройство так:

defineVirtualDevice("test", {
    title: "тест",
    cells: {
        t1: {
            type: "text",
            value: "",
            readonly: false,
        },
    },
});

После добавления опции readonly: false все должно работать.

Информация описана здесь: Как писать правила — Wiren Board

3 Likes

спасибо! это оно!