Драйвер для весоизмерительного преобразователя ТВ-005

Не знаю на сколько мой опыт верный, но мне понадобилось подключить к 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, но есть моменты с кодировкой

1 лайк