Дню добрейшего.
Гайдлайн по wb-rulez учит нас писать не публикацией mqtt-топика, а записью в dev[channel], не так ли?
Дык вот скрипт wb-rules не пишет в переменные виртуального дивайса, объявленного в другом скрипте. Ставлю readonly: false, с вебальника можно спокойно менять значение. Из скрипта - хрен, причем молча.
Внимание, как корректно писать в виртуальный dev? Должен ли он быть объявлен в том же файле, что и скрипт, который в него пишет? Выглядит слегка нелогично, если да:
дивайс штука по определению глобальная, не так ли?
крутится несколько независимых циклов, которые в одном файле декларировать сложнее.
Нет, не может, у меня вообще нет кириллицы в терминале: что за странная идея… Копирую тот же топик в вызов publish() - спокойно пишет. В файле скрипта, в котором заводится устройство, - не менее спокойно пишет через dev. В соседнем - нет.
Версия wb-rules 2.6.0, может, втащить более свежую?
Код как в соседнем треде, ничего необычного.
файл А:
// Device indicates the whole status of a node
defineVirtualDevice("NODE_STATUS",
{
title: "Central Water Station",
cells: {
TSTAMP: { // тик от сотворения мира
readonly: true,
type: "string",
value: "0"
},
// алармы: 0 неактивен, 1 порядок, 2 непорядок
ALM_FIRE: { // пожарный, температура помещения > 50 градусов
type: "int",
value: "1",
forceDefault: true,
},
........
dev["NODE_STATUS/TSTAMP"] = millis.toString(); // работает
........
файл Б:
publish("/devices/NODE_STATUS/controls/ALM_FIRE", 1, 0, true); // работает
dev["NODE_STATUS/ALM_FIRE"] = 1; // не работает