Привожу здесь ответ моего коллеги из другой темы (нерабочая ссылка).
Задачи, собственно две.
“Опрос” топиков MQTT и формирование “строки” для отправки.
Реализуется так, например:
//07_12_test_04.js
var collectPeroid = 3000;//время в миллисекундах
var portUART = "/dev/ttyUSB0";//порт
defineRule("collectString",{
when: function () { return timers.collectData.firing; },
then: function () {
var dataString = "";//создадим переменную переменную
dataString += dev["wb-adc/Vin"].toString()+";"//Формируем строку
dataString += dev["wb-adc/5Vout"].toString()+";" //Формируем строку
//log.info("dataString",dataString)
runShellCommand("echo -en "+"\""+dataString+"\""+" > "+portUART,
{
captureOutput: true, //Захватывать stdout
captureErrorOutput: true, //Захватывать stderr (если нужно)
exitCallback: function (exitCode, capturedOutput, capturedErrorOutput) //Функция, в которую попадает вывод
{
//log("cmd output: " + capturedOutput); //строка полностью
//log("cmd Erroroutput: " + capturedErrorOutput);
if (exitCode){log.error("При выполнении записи в порт ошибка")}
}
})
}
});
startTicker("collectData", collectPeroid);
Вывод в лог можно раскомментировать.