Не могу получить актуальные данные через wb-rules

Создал устройство:

defineVirtualDevice("alarm_system", {
    title: "Сигнализация",
    cells: {
      	"State": {
	    	type: "text",
          	order: 1,
          	value: "Not set", // Без этого устройство не создается, ругается
          	readonly: false
		},
		"Alarm": {
	    	type: "switch",
	    	value: false,
          	order: 5,
          	readonly: false
		}
    }
});

defineRule("alarm_fired", {
  whenChanged: "alarm_system/Alarm",
  then: function (newValue, devName, cellName) {
    if (newValue === true) {
      	dev["wb-mr6cu"]["K3"] = 1;
    }
  }
});

Через MQTT State изменяется на другую строку. Я вижу это через MQTT explorer и через веб-интерфейс WB в разделе “Каналы MQTT”.

Картинки

Снимок экрана 2021-12-21 в 00.32.49

Я пытаюсь получить это значение скриптом и… оно всегда равно тому что было в “value” при создании виртуального устройства.

defineRule("auto_fans_30m", {
  when: cron("*/15 * * * *"),
  then: function () {
    var AlarmStatus = dev["alarm_system"]["State"];
    log("Статус сигналки: " + AlarmStatus);
  }
});

Снимок экрана 2021-12-21 в 00.35.27

Что я делаю не так?

P.S. Вторым скриптом я легко получаю данные термометров и прочего, проблема именно с моим устройством.

Обратите внимание на то что менять значение надо записью в /on/
Подробно описано тут:
https://wirenboard.com/wiki/MQTT#Структура_сообщения_—_команды_на_изменение_состояния

Спасибо, забыл

Однако ж это неправильно что значение меняется в MQTT и на сбрасывается на актуальное, we-MQTT никак этот момент не контролирует?

Чем же неправильно? Оно может измениться драйвером. Ну или несколькими. И актуальным становится при чтении, опять же драйвером. С одним значением (топиком) может работать несколько драйверов.

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