#!/bin/bash
###############################################################################################################
# Titel: read
# Autor: Michael Kaden
# Datum: 14.09.2014
#
# Funktion:
# Dieses Skript ist ein Teilprogramm von fdtsds. Es liest alle Zeichen einer seriellen (RS232) Schnittstelle 
# zeilenweise in einer Endlosschleife und schreibt alle empfangenen Zeilen mit Zeitstempel als Dateiname in je 
# eine Spool-Datei. Die Spool-Dateien werden dann vom Skript fdtsds weiterverarbeitet. Für jede konfigurierte
# Schnittstelle, auf der fdtsds lauschen soll, wird ein eigener Read-Spooler gestartet.
#
# Zweck:
# Das Script dient als Read-Spooler der Entkopplung des Einlesens der empfangenen Daten von der anschließenden 
# Weiterverarbeitung.
#
# Copyright (C) 2014 Michael Kaden
#
# Dieses Programm ist freie Software. Sie können es unter Beachtung der Nutzungsbedingungen benutzen, 
# weitergeben und modifizieren.
# Die Veröffentlichung dieses Programms erfolgt in der Hoffnung, dass es Ihnen von Nutzen sein wird, 
# aber OHNE IRGENDEINE GARANTIE, sogar ohne die Garantie der MARKTREIFE oder der VERWENDBARKEIT FÜR EINEN 
# BESTIMMTEN ZWECK. 
###############################################################################################################

# Config-File einlesen
source /usr/local/smi/trx/etc/sms.conf

myname=$(echo "$0" | $awk -F/ '{ print $NF }')

device=$(echo "$myname" |$awk -F. '{ print $NF }')

# message system, aus dem eigenen Dateinamen bestimmen
#msgsys=$(echo "$myname" |$awk -F. '{ print $1 }')

# Pseudoterminal _1 des Portmultiplexers zu diesem Device bestimmen
i=1
while [ -n "$(eval echo '$'SmsTtyToBind_${i}_name)" ]; do
	runVAR="$(eval echo '$'SmsTtyToBind_${i}_name)"
	if [ "$runVAR" = "$device" ]; then
		readdev="${SmsScriptName}${i}_1"
	fi
	((i++))
done

if [ -c "/dev/$device" ]; then

	# Daten der seriellen Schnittstelle zeilenweise in einer Endlosschleife einlesen und als MQTT-Nachricht publizieren
	while read -r line; do
		$mosquitto_pub -t "$(eval echo $TrxMqttReadLine)" -m "$line"
	done < /dev/$readdev

fi
exit 255
