Приветствую, коллеги,
я новичок в работе с Wirenboard.
Есть небольшая учебная задача, необходимо научиться получать обратку от устройства и разбирать её, управляю дисплеем LG через интерфейс 232.
В базе установлена плата WBE2-I-RS232 в MOD1.
Включить и выключить дисплей могу через раздел с устройствами. Но как получить обратку и разобрать её пока не могу понять, точнее небольшое понимание есть, но не работает).
Во вложении файлы с правилом, bash и диаг. лог. screen.sh (601 байт) screen.js (738 байтов)
Что уже сделал:
Нашёл и адаптировал под свою задачу bash скрипт, положил в корень.
#!/bin/bash
#Инициализируем порт /dev/ttyWBE0
stty -F /dev/ttyWBE0 ospeed 9600 ispeed 9600 raw clocal -parenb -echo cs8
CR="$(echo -e '\r')"
exec 4<> /dev/ttyWBE0
cat <&4 | while :
do
IFS="$CR" read -r line
case "$line" in
quit*)
break
;;
*)
if [[ -n "$line" ]]; then
echo $line
#Полученные строки шлём в MQTT
mosquitto_pub -t /devices/screen/controls/raw/meta/type -r -m text
mosquitto_pub -t /devices/screen/controls/raw/on -r -m "$line"
fi
;;
esac
done
Спасибо, изучу информацию.
Но насколько я понял, данная реализация не позволяет читать информацию от устройства без запроса, т.е. устройство само не сможет что-то отправить в порт?
А мне такая возможность нужна.
Пытаюсь разобраться во всех вариантах.
Со скриптами у меня как раз затык, не получается вывести обратку в MQTT топик. Скрипты приложил, если можно ткните меня где ошибка).
А что за способ с драйверами, можете навести, куда копать?
“dev.screen.enabled” - это конструкция, взятая из wiki.wirenboard с примером для переключателя, соответственно в зависимости от стейта переключателя в веб-интерфейсе устройству улетает та или иная команда. Этот кусок скрипта работает, устройство попеременно вкл. и выкл.
Отправка полученных строк в MQTT не работает, значения топиков не изменяются, но не факт, что я корректно принимаю обратку.
Такой ответ ожидаю от устройства: a 01 OK00x, общепринятого символа конца строки \r там нет, а есть x в ascii. Пробовал заменять в bash-скрипте ‘\r’ на ‘x’, всё равно не работает.
Если в целом скрипты верные, то наверное надо копать в сторону того, что я неправильно обозначаю ожидаемый конец строки.
По варианту с драйвером спасибо, параллельно буду прорабатывать разработку на питоне, т.к. на нём пишу и скорее всего такая возможность пригодится.