Виртуальная панель . Не выводит значения

Здравствуйте!

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

правило :

defineVirtualDevice("virtual_datetime_display", {
    title: "Virtual DateTime Display",
    cells: {
        date: {
            type: "text",
            value: ""
        },
        time: {
            type: "text",
            value: ""
        }
    }
});

function getFormattedDate() {
    var now = new Date();
    var day = now.getDate().toString().padStart(2, '0');
    var month = (now.getMonth() + 1).toString().padStart(2, '0');
    var year = now.getFullYear();
    return day + "-" + month + "-" + year;
}

function getFormattedTime() {
    var now = new Date();
    var hours = now.getHours().toString().padStart(2, '0');
    var minutes = now.getMinutes().toString().padStart(2, '0');
    return hours + ":" + minutes;
}

defineRule("update_datetime_display", {
    when: cron("@every 1m"),  // Обновление каждую минуту
    then: function() {
        dev["virtual_datetime_display"]["date"] = getFormattedDate();
        dev["virtual_datetime_display"]["time"] = getFormattedTime();
    }
});

Каналы MQTT также пустые.

Добрый день!
У вас не работает padStart – в Duktape, который использует движок правил, он, скорее всего, не имплементирован, поэтому ничего не показывается. Это относительно новая фича языка. Стрелочные функции =>, let тоже пока не поддерживаются.

Вы можете реализовать padStart самостоятельно, чтобы не переписывать код.
Добавьте в начало правила такой, например, вариант реализации padStart:

if (!String.prototype.padStart) {
  String.prototype.padStart = function (targetLength, padString) {
    var str = String(this);
    targetLength = targetLength >> 0;
    padString = (padString === undefined) ? " " : String(padString);
    if (padString === "") padString = " ";

    if (str.length >= targetLength) return str;

    var padLen = targetLength - str.length;
    while (padString.length < padLen) {
      padString += padString;
    }
    return padString.slice(0, padLen) + str;
  };
}

После этого правило должно заработать:

Рекомендую также обратить внимание на нашу реализацию вывода системного времени в виртуальное устройство: wb-rules-system/rules/system_time.js at master · wirenboard/wb-rules-system · GitHub.

Но в других устройствах все отображается

что то не получается . может не туда вставляяю. можно поподробней в какое место именно надо вставлять?

Познаний в написании пока маловато!

У меня на стенде вот в таком виде ваше правило заработало:

if (!String.prototype.padStart) {
  String.prototype.padStart = function (targetLength, padString) {
    var str = String(this);
    targetLength = targetLength >> 0; // to int
    padString = (padString === undefined) ? " " : String(padString);
    if (padString === "") padString = " ";

    if (str.length >= targetLength) return str;

    var padLen = targetLength - str.length;
    while (padString.length < padLen) {
      padString += padString;
    }
    return padString.slice(0, padLen) + str;
  };
}



defineVirtualDevice("virtual_datetime_display", {
    title: "Virtual DateTime Display",
    cells: {
        date: {
            type: "text",
            value: ""
        },
        time: {
            type: "text",
            value: ""
        }
    }
});

function getFormattedDate() {
    var now = new Date();
    var day = now.getDate().toString().padStart(2, '0');
    var month = (now.getMonth() + 1).toString().padStart(2, '0');
    var year = now.getFullYear();
    return day + "-" + month + "-" + year;
}

function getFormattedTime() {
    var now = new Date();
    var hours = now.getHours().toString().padStart(2, '0');
    var minutes = now.getMinutes().toString().padStart(2, '0');
    return hours + ":" + minutes;
}

defineRule("update_datetime_display", {
    when: cron("@every 1m"),  // Обновление каждую минуту
    then: function() {
        dev["virtual_datetime_display"]["date"] = getFormattedDate();
        dev["virtual_datetime_display"]["time"] = getFormattedTime();
    }
});

Ваш код менять не пришлось, только дополнить:

Да я так тоже пробовал но у меня не заработал.

Сегодня скопирол ваш - все заработало .

Спасибо.