Tenho um microcontrolador executando uma distribuição Linux baseada em Debian.
Tenho uma tela Nextion conectada a ela via UART na porta /dev/ttyMOD1. Tenho um script que usa stty e obtém dados da tela usando cat e os envia para tópicos mqtt. Quando executo o script a partir do próprio shell ou se reinicio o serviço após a inicialização do sistema e consigo conectar via SSH, ele funciona perfeitamente. No entanto, quando o sistema inicializa, a tarefa cat dentro do serviço não funciona por algum motivo, somente após a reinicialização do serviço.
Os arquivos de script e serviço têm permissões +x para o usuário. Preciso de ajuda para corrigir o erro cat que não funciona na inicialização.
Texto para roteiro e serviço:
serial.service
[Unit]
Description=Serial script on startup
Requires=wb-mqtt-serial.service
After=wb-mqtt-serial.service
[Service]
User=root
WorkingDirectory=/mnt/data/root
ExecStart=/mnt/data/root/serial.sh
Restart=on-failure
Type=simple
[Install]
WantedBy=multi-user.target
serial.sh
#!/bin/bash
mqtt-delete-retained "/devices/screen/#"
stty -F /dev/ttyMOD1 ospeed 9600 ispeed 9600 raw clocal -parenb -echo cs8
CR="$(echo -e '\r')"
exec 4<> /dev/ttyMOD1
/bin/cat <&4 | while :
do
IFS="$CR" read -r line
case "$line" in quit*)
break
;;
*)
if [[ -n "$line" ]]; then
mosquitto_pub -t /devices/screen/controls/raw/meta/type -r -m text
mosquitto_pub -t /devices/screen/controls/raw -r -m "$line"
fi
;;
esac
done