У меня как раз ПУЛЬС СТА-15-М-**Rs-485, т.е. если у меня на на порту весят какие то устройства другие, я должен их перевесить на другой порт, а этот выделить только под протокол modbus?
Подскажите, что может быть.
запускаю команду mbus-serial-scan -d -b 2400 /dev/ttyRS485-2
находятся какие-то девайсы
запускаю команду, по найденному адресу:
mbus-serial-request-data -d -b 2400 /dev/ttyRS485-2 130
но падает с ошибкой, что может быть? можете подсказать?
попробуй по вторичному адресу (серийному номеру счетчика).
mbus-serial-scan-secondary -d -b 2400 /dev/ttyRS485-2 24015622FFFFFFFF
24015622 заменить на свой серийник. серийник+FFFFFFFF
var MBUS_SERIAL = '/usr/bin/mbus-serial-request-data'
var XMLLINTER = '/usr/bin/xmlstarlet'
var DEVICE = '-b 2400 /dev/ttyMOD1 240156222D63010C'
var METRICS = {
0: {
name: 'Energy',
multiplier: 0.000008598452, //0.000239 (0,000008598452 - 10вт в гкал)
},
1: {
name: 'CurrentPower',
multiplier: 10
},
2: {
name: 'Volume',
multiplier: 0.01
},
3: {
name: 'Power',
multiplier: 10
},
4: {
name: 'VolumeFlow',
multiplier: 0.001
},
5: {
name: 'FlowTemperature',
multiplier: 0.01
},
6: {
name: 'ReturnTemperature',
multiplier: 0.01
}
//,
// 7: {
// name: 'Time',
// multiplier: 1
//}
}
defineVirtualDevice("Pulse", {
title: "Пульс СТА (СТМ)",
cells: {
Energy: {
type: "heat_energy",
value: 0
},
CurrentPower: {
type: "power",
value: 0
},
Volume: {
type: "water_consumption",
value: 0
},
Power: {
type: "power",
value: 0
},
VolumeFlow: {
type: "water_flow",
value: 0
},
FlowTemperature: {
type: "temperature",
value: 0
},
ReturnTemperature: {
type: "temperature",
value: 0
}
//,
//Time: {
// type: "text",
//value: "0"
//}
}
});
defineRule('ultraheat_cron', {
when: cron('@every 300s'), // interval
then: function () {
var mbusCmd = MBUS_SERIAL + " " + DEVICE + " | " + XMLLINTER + " sel -T -t -v '/MBusData/DataRecord/Value' -n";
runShellCommand(mbusCmd, {
captureOutput: true,
exitCallback: function (exitCode, capturedOutput) {
capturedArray = capturedOutput.split("\n");
for (var id in METRICS) {
var metricName = METRICS[id]['name'];
var metricValue = capturedArray[id];
dev.Pulse[metricName] = Number((Number(metricValue) * METRICS[id]['multiplier']).toFixed(3));
}
}
});
}
});
Добавил округление до 3х знаков в выводе.
1 лайк