Не знаю на сколько мой опыт верный, но мне понадобилось подключить к WB инвентор SILA. У него есть порт RS232 и простой текстовый протокол для обмена. Т.к. у меня WB и инвентор установлены в разных помещениях, то доступ к com порту организовал с помощью шлюза
Для получения данных отправляю команду, а потом разбираю ответ. Вроде ситуация как с вашими весами.
Добавил виртуальное устройство
и такой скрипт
defineRule("cronRS232", {
when: cron("*/10 * * * * *"),
then: function () {
spawn('bash', ['-c', "/root/nc_exec.sh"],{
captureOutput: true,
captureErrorOutput: true,
exitCallback: function (exitCode, capturedOutput, capturedErrorOutput)
{
if (exitCode != 0) {
log("sila_integration: cronRS232 Erroroutput: " + capturedErrorOutput);
}
else {
silaArray = capturedOutput.substring(1, 107).split(' ');
dev["mVD_SILA_Sensors/inputVoltage"] = Number(silaArray[0]);
dev["mVD_SILA_Sensors/power"] = Number(silaArray[4]);
dev["mVD_SILA_Sensors/temperature"] = Number(silaArray[11]);
}
}
})
}
});
в файле nc_exec.sh две строки
#!/bin/bash
/usr/bin/printf '\x51\x50\x49\x47\x53\xb7\xa9\x0d' | nc -w1 192.168.1.19 20108
По идее можно все сделать из модуля правил WB, но есть моменты с кодировкой