ChCh Öffnungsstatus

Aus ChaosChemnitz
Version vom 24. März 2012, 04:35 Uhr von Florz (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „Dieses Script wird einmal in der Minute gestartet und prüft das Ring-Signal der seriellen Schnittstelle. Wenn unsere Außenbeleuchtung eingeschaltet wird, gibt e…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

Dieses Script wird einmal in der Minute gestartet und prüft das Ring-Signal der seriellen Schnittstelle. Wenn unsere Außenbeleuchtung eingeschaltet wird, gibt es dieß im IRC bekannt. Ebenso gibt es das Ausschalten bekannt.

#! /bin/bash

# USER CONFIG #
IRC_USER="chch"
IRC_CHANNEL="#chaoschemnitz"
IRC_SERVER="irc.freenode.net"
ON_MSG="licht an"
OFF_MSG="licht aus"
###############

# SYSTEM CONFIG #
II_START_TIMEOUT=10
IRC_PREFIX=/var/irc
PORT="port:000003F8"

CAT=/bin/cat
CUT=/usr/bin/cut
TAIL=/usr/bin/tail
GREP=/bin/grep
ECHO=/bin/echo
PS=/bin/ps
SLEEP=/bin/sleep
II=/usr/bin/ii
#################

IRC_CHAN_IN=$IRC_PREFIX/$IRC_SERVER/$IRC_CHANNEL/in
IRC_CHAN_OUT=$IRC_PREFIX/$IRC_SERVER/$IRC_CHANNEL/out
IRC_SRV_IN=$IRC_PREFIX/$IRC_SERVER/in
II_RUNNING=$($PS awx | $GREP "ii" | $GREP "\-n $IRC_USER")
RING=$($CAT /proc/tty/driver/serial | $GREP "$PORT" | $GREP -o "RI")
# FIND OUR LAST STATUS MESSAGE
PREV_MSG=$($CAT $IRC_CHAN_OUT | $CUT -d":" -f2 | $GREP -e "^[0-9]\{2\} <$IRC_USER> $ON_MSG\$\|^[0-9]\{2\} <$IRC_USER> $OFF_MSG\$" | $TAIL -n1 | $GREP -oe "$ON_MSG\|$OFF_MSG")

# RESTART II
if [ -z "$II_RUNNING" ]; then
        $II -n $IRC_USER -i $IRC_PREFIX &
        while [ $II_START_TIMEOUT -gt 0 -a ! -a $IRC_SRV_IN ]; do
                $SLEEP 1
        done
        if [ $II_START_TIMEOUT -le 0 -a ! -a $IRC_SRV_IN ]; then
                exit 1
        fi
        echo "/j $IRC_CHANNEL" > $IRC_SRV_IN
        if [ $? -ne 0 ]; then
                exit 1
        fi
fi

# CHOOSE CORRECT MESSAGE
if [ -z "$RING" ]; then
        MSG="$OFF_MSG"
else
        MSG="$ON_MSG"
fi

# SEND MESSAGE IF IT DIIFERS FROM PREVIOUS STATUS
if [ "$MSG" != "$PREV_MSG" ]; then
        $ECHO -e "$MSG\n" > $IRC_CHAN_IN
fi
if [ $? -ne 0 ]; then
        exit 1
fi