GPIO-Pin auf dem Raspberry PI mit einem Timer überwachen und loggen
Eine neue Anforderung an das Logging-Script: Es soll nur noch das Einschalten geloggt werden, und Schaltvorgänge die weniger als zwei Minuten auseinander liegen, sollen unterdrückt werden.
Das Logfile liegt im Directory /var/www, so dass man es direkt mit dem Browser ansehen kann.
Das kommentierte Script
#!/bin/bash
# Das GPIO-Pin kann hier definiert werden
PIN=4
# Verhindert eine Fehlermeldung wenn das Script
# mehrfach gestartet wird
if [ ! -e /sys/class/gpio/gpio$PIN ]
then
echo "$PIN" > /sys/class/gpio/export
fi
# Definiert den Pin als Eingang
echo "in" > /sys/class/gpio/gpio$PIN/direction
# Zustand beim Start des Scripts bestimmen
previous=$(cat /sys/class/gpio/gpio$PIN/value)
timer=0
while true
do
# Pin einlesen
pin=$(cat /sys/class/gpio/gpio$PIN/value)
# Pruefen ob der Eingang auf High gewechselt hat
if [ $pin -gt $previous ]
then
# Aktuelle Zeit in Sekunden bestimmen
now=$(date +%s)
# Wenn die Wartezeit abgelaufen ist
if [ $now -gt $timer ]
then
# Wechsel protokollieren
echo "$(date '+%d.%m.%Y %H:%M')" >> /var/www/log.txt
echo "$(date '+%d.%m.%Y %H:%M')"
fi
# Wartezeit setzen
(( timer = now + 120 ))
fi
previous=$pin
# Eine halbe Sekunde warten sleep 0.5 doneDas Script herunterladen
Das Script muss natürlich ausführbar sein. Das machen Sie mit dem Befehl chmod 755 timedlogger auf der Kommandozeile oder mit Ihrem Lieblings-Filemanager.
Das Script muss mit root-Rechten laufen. Auf der Kommandozeile kann es so gestartet werden:
sudo ./timedlogger
Das Logfile mit dem Browser ansehen
Ganz einfach: im Browser die IP-Adresse vom PI gefolgt von /log.txt eingeben und schon erscheint das Logfile im Browser.
Beispiel:
http://192.168.1.21/log.txt
Ein Webserver muss dazu natürlich installiert sein ...