Здравствуйте!
Как я понял, требуется отправка команды в порт, получения ответа и публикация ответа в топик. Способы отправки запроса и получения данных обсуждались в похожих темах. Посмотрите, пожалуйста, здесь:
Привожу здесь ответ моего коллеги из другой темы (нерабочая ссылка).
Задачи, собственно две.
“Опрос” топиков 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"].toStrin…
Я, честно гоговоря не осилил логику работы вашего кода после "else"Но набросал такое:
log.info ("START!!!")
// Запуск shell-команды с выводом топиков
runShellCommand("echo -e \"bin1 1\;\" > /dev/ttyRS485-1",{
captureOutput: true, //Захватывать stdout
captureErrorOutput: true, //Захватывать stderr (если нужно)
exitCallback: function (exitCode, capturedOutput, capturedErrorOutput) //Функция, в которую попадает вывод
{
log("cmd output: " + capturedOutput); //строка полностью
log("cmd Er…
Добрый день.
Подключить конечно можно, это не проблема. Полноценный RS-232 реализуется проще всего модулем WBE2-I-RS232 .
Подобный функционал - не реализован, потому что - неудобен, дотуп по сети через Modbus-tcp или MQTT лучше и функциональней. Но - возможен.
Если напишете скрипты.
Пример bash-обертки для трансляции строк из rs-232 в MQTT^
#!/bin/bash
#Инициализируем порт /dev/ttyMOD3
stty -F /dev/ttyMOD3 ospeed 9600 ispeed 9600 raw clocal -parenb -echo cs8
CR="$(echo -e '\r')"
exec 4<> …
Для публикации полученных данных из wb-rules можно использовать команду publish
, из bash можно использовать команду mosquitto_pub