А какой тип у 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
Спасибо за баг-репорт. Проблему локализовали, в ближайшее время подготовим исправление, отпишемся о релизе.
Уже спросил, объяснили.
И? Хотелось бы знать ответ.
Сроки - примерно эта неделя, версия 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
Есть ли прогресс в этом направлении?
Да, работаем, вылезло несколько багов - как оттестируем - выложим.