Новая версия движка правил

А какой тип у dev[“vehicle”][“DEVICE_ID”]? Покажите пожалуйста или определение вирутального девайса, или вывод из mosquitto_sub

DEVICE_ID: {
type: “Text”,
value: “00:00:00:00:00:00”,
forceDefault: true
},

Выведете в лог значение, котороое меняем:
вставьте

log.info("For replace ", dev["network"]["Wi-Fi MAC"]);

чтоб посмотреть что там есть.

2020-07-09 17:22:32For replace 18:bb:26:c5:ac:b0

А у вас версия wb-rules какая?

dpkg -s wb-rules |grep Vers   

Поставлю себе - воспроизведу.

Проблема при переходе на 2.4
На 1.7.1 вот это работает:
dev[“vehicle”][“DEVICE_ID”] = dev[“network”][“Wi-Fi MAC”].replace(/:/g, ‘’);
Нужен вариант, который работает везде.

ну для полноты картины кусочек из network.js

function _system_update_wifi_mac() {
//   runShellCommand('ifconfig wlan0 | grep ether | awk \'{print $2}\'',{
   runShellCommand('ip addr show wlan0 | grep \"link/ether\\b\" | awk \'{print $2}\' | cut -d/ -f1',{
      captureOutput: true,
      exitCallback: function (exitCode, capturedOutput) {
        dev.network["Wi-Fi MAC"] = capturedOutput;
      }
  });
};

Отредактировал, заключив код в “4 кавычки, что на букве ё”

Сейчас разберусь - почему.

Итак, тестовый скрипт:

function _system_update_wifi_mac() {
//   runShellCommand('ifconfig wlan0 | grep ether | awk \'{print $2}\'',{
   runShellCommand('ip addr show wlan0 | grep \"link/ether\\b\" | awk \'{print $2}\' | cut -d/ -f1',{
      captureOutput: true,
      exitCallback: function (exitCode, capturedOutput) {
        log.info("Wi-Fi MAC as is-",capturedOutput,"-end");
        log.info("Wi-Fi MAC replaced-",capturedOutput.replace(/:/g,""),"-end");
        //dev.network["Wi-Fi MAC"] = capturedOutput;
      }
  });
};

_system_update_wifi_mac()

На версии 2.4

2020-07-10 12:37:42Wi-Fi MAC as is- ac:5d:5c:e1:10:e7
-end
2020-07-10 12:37:42Wi-Fi MAC replaced- ac5d5ce110e7
-end

(пробелы добавляет сам log)
ставим версию

apt install wb-rules=1.7.1 -y
systemctl restart wb-rules

Сейчас продолжу.

Ну и в старом wb-rules тоже работает. Так же.
Хотя мне больше нравится вариант

function _system_update_wifi_mac() {
      runShellCommand('ip addr show wlan0 | grep \"link/ether\"',{
      captureOutput: true,
      exitCallback: function (exitCode, capturedOutput) {
        var var_separated = capturedOutput.split(/\s+/);
        log.info("Wi-Fi MAC as is-"+var_separated[2]+"-end");
        log.info("Wi-Fi MAC replaced-"+var_separated[2].replace(/:/g,"")+"-end");
      }
  });
};
_system_update_wifi_mac()

Добавьте в ваш скрипт отладочные логи, ну или выложите его целиком, можно в личку - проверю.

Так все таки можно внятно ответить на вопрос о предполагаемых сроках? В версии 2.4 интересующие меня баги все еще присутсвуют.

Внимательно прочитал тему - но как это воспроизвети - не понял. Как я понимаю: Самопроизвольно меняется значение топика mqtt?

Как тогда понимать:
WierdBytesWiren Board Team

changer

11 июня

Спасибо за баг-репорт. Проблему локализовали, в ближайшее время подготовим исправление, отпишемся о релизе.

Уже спросил, объяснили.

И? Хотелось бы знать ответ. :slight_smile:

Сроки - примерно эта неделя, версия 2.5.х

Пойму как его воспроизвести, спрошу у команды.

Ок, спасибо. Если я могу как-то помочь с воспроизведением, напишите что нужно.

А по какому принципу 2.4 ставит у виртуального устройства

            type: "value",
            value: 0,
            forceDefault: true
        },

/devices/vehicle/controls/unloader_freq/meta/readonly в 1?
Приходится насильно readonly: false, теперь прописывать. Вот более подробно:

    title: "vehicle",
    cells: {
        _vehicle_type: {
            type: "text",
            value: "NAN",
            forceDefault: true,
            readonly: true
        },
        _vehicle_brand: {
            type: "text",
            value: "NAN",
            forceDefault: true,
            readonly: false
        },
        _vehicle_reg_num: {
            type: "text",
            value: "NAN",
            forceDefault: true,
            readonly: false
        },
        ignition: {
            type: "switch",
            value: false,
            forceDefault: true
        },
        bunker_level: {
            type: "value",
            value: 0,
            forceDefault: true
        },
        bunker_level_sens: {
            type: "JSON",
            value: "NULL",
            forceDefault: true
        },
        unloader_rotate: {
            type: "switch",
            value: false,
            forceDefault: true,
        },
        unloader_arm: {
            type: "switch",
            value: false,
            forceDefault: true
        },
        unloader_bypass: {
            type: "switch",
            value: false,
            forceDefault: true
        },
        unloader_arm_confirm: {
            type: "switch",
            value: false,
            forceDefault: true
        },
        unloader_stuff_count: {
            type: "value",
            value: 0
        },
        unloader_freq: {
            type: "value",
            value: 0,
            forceDefault: true
        },
        loader_rotate: {
            type: "switch",
            value: false,
            forceDefault: true
        },
        loader_freq: {
            type: "value",
            value: 0,
            forceDefault: true
        },
        LAMP_1: {
            type: "switch",
            value: false,
            forceDefault: true
        },
        LAMP_2: {
            type: "switch",
            value: false,
            forceDefault: true
        },
        SIRENA: {
            type: "switch",
            value: false,
            forceDefault: true
        },
        alarm_code: {
            type: "value",
            value: 0,
            forceDefault: true
        },
        RFID_1: {
            type: "text",
            value: "No Connection",
            readonly: false,
            forceDefault: true
        },
        RFID_2: {
            type: "text",
            value: "No Connection",
            readonly: false,
            forceDefault: true
        },
        GPSD_TPV: {
            type: "JSON",
            value: "",
            forceDefault: true
        },
        BUNKER_SAP_ID: {
            type: "text",
            value: "000000",
            forceDefault: false
        },
        ModBUS_OK: {
            type: "switch",
            value: false,
            forceDefault: true
        },
        DEVICE_ID: {
            type: "text",
            value: "00:00:00:00:00:00",
            forceDefault: true
        },
        DG400: {
            type: "JSON",
            value: "",
            forceDefault: true
        },
        uptime_minutes: {
            type: "value",
            value: 0,
            forceDefault: true
        },
        status_request: {
            type: "switch",
            value: false,
            forceDefault: true
        },
        Vin: {
            type: "value",
            value: 0
        }
    }
});

А вот что получаем в MQTT:

Если не задано свойство readonly у контрола виртуального устройства - оно устанавливается дефолтным значением в зависимости от типа контрола.

Для pushbutton, switch, range и rgb - false
Для всех остальных типов - true

Есть ли прогресс в этом направлении?

Да, работаем, вылезло несколько багов - как оттестируем - выложим.