ChCh Öffnungsstatus

Aus ChaosChemnitz
Version vom 24. März 2012, 03: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)
Zur Navigation springen Zur Suche springen
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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